Bonjour,

Pouvez-vous m'aider à convertir ce programme Python en Java. C'est un programme qui permet de modéliser la propagation d'une épidémie. J'ai créé quatre classes d'agents(S,E,I,R). Le programme se déroule comme suit :
au départ on suppose que tous les agents sont dans la classe S et on infecte quelques uns (E), les agents sont supposés connectés (c'est-à-dire que chaque agent a ses voisins). Le passage de la classe S vers E se fait par la valeur b, puis l'agent reste dans la classe E pour une période (latencytime), puis ils passe à la classe I ou il reste une période (recoverytime) ensuite il passe a la classe R.

Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
self.sList = []
self.eList = []
self.iList = []
self.rList = []
self.newIList = []
self.latencyTimesHeap = []
self.recoveryTimesHeap = []
allAgents = range(self.N)
random.shuffle(allAgents)
self.sAgentList = copy.copy(allAgents)#‎ici‬ on infecte quelques individus a l'instant t = 0
self.indexCases = []
for i in xrange(E):
indexCase = self.sAgentList[0] initialisation
self.indexCases.append(indexCase)
self.latentAgent(indexCase)
self.eAgentList.append(indexCase)
print('eAgentList:', self.eAgentList)
def latentAgent(self,agent):
self.sAgentList.remove(agent)
latencyTime = self.t + scipy.random.exponential(1/self.e)
heapq.heappush(self.latencyTimesHeap, (latencyTime, agent))
# print('e',self.eAgentList)
def infectAgent(self,agent):
recoveryTime = self.t + scipy.random.exponential(1/self.g) 
heapq.heappush(self.recoveryTimesHeap, (recoveryTime, agent))
def recoverAgents(self):
recoverList = []
if len(self.recoveryTimesHeap) > 0:
while self.recoveryTimesHeap[0][0] <= self.t:
recoveryTuple = heapq.heappop(self.recoveryTimesHeap)
recoverList.append(recoveryTuple[1])
if len(self.recoveryTimesHeap) == 0:
break
return recoverList
def run(self):
while len(self.eAgentList) > 0:
tempEAgentList = []
infectList = []
recoverList = []
newE = 0
for eAgent in self.eAgentList: 
for agent in self.adjacencyList[eAgent]: 
if agent in self.sAgentList:
if (random.random() < self.b): 
newE += self.latentAgent(agent)
tempEAgentList.append(agent)
self.infectAgent(eAgent)
infectList.append(eAgent)
print('infectList:', infectList)
for infectAgent in infectList:
self.eAgentList.remove(infectAgent)
self.iAgentList.append(infectAgent)
print('iAgentList:',self.iAgentList)
recoverList = self.recoverAgents()#‎et‬ faire la comptabilité avec des indices d'agent#‎Pour‬ les retirés
for recoverAgent in recoverList:
self.iAgentList.remove(recoverAgent)
self.rAgentList.append(recoverAgent)
print('r',self.rAgentList)#‎nouveaux‬ infections
self.eAgentList.extend(tempEAgentList)#‎Puis‬ suivre le nombre de personnes dans chaque État
self.sList.append(len(self.sAgentList))
self.eList.append(len(self.eAgentList))
self.iList.append(len(self.iAgentList))
self.rList.append(len(self.sAgentList))
self.newEList.append(newE)#‎incrementer‬ le temps
self.t += 1
print('t', self.t, 'numS', len(self.sAgentList),'numE', len(self.eAgentList), 'numI', len(self.iAgentList) )
random.shuffle(self.eAgentList)
#et quand nous aurons terminé, retourner toutes les informations pertinentes
return [self.sList, self.eList, self.iList, self.rList, self.newIList]
Merci par avance