Eine (zugegebenermaßen optimierbare) Version von dem, was Sie suchen, ich glaube, könnte so etwas aussehen.
percentSpread = #integer representing percent chance of cold to spread
percentBetter = #chance someone who has the cold gets better
cold = #some node in your graph we'll call office, the first guy sick
sickness = [] #the array that keeps track of the people with colds in the office
def sickevent(percent): #lets us know if a sick person gets better or a nearby person gets sick
if randint(1,100) < percent:
return True
else:
return False
sickness.append(cold)
while len(sickness) >0:
for sick in sickness:
if sickevent(percentbetter):
sick['issick'] = False
sickness.remove(sick)
else:
for potential in office.neighbors(sick):
if potential['beensick'] = False and potential['issick']=False:
if sickevent(percentspread):
potential['issick'] =True
potential['beensick'] = True
sickness.append(sick)
Sollte Sie gehen. Viele Anpassungen möglich. Wenn du wissen willst, wer vor dem Tod der Krankheit krank geworden ist, kannst du durch iterieren und überprüfen, wer "Besessenheit" = wahr hat. Beachten Sie, dass Sie alle Knoten initialisieren sollten, damit die krankheitsbezogenen Attribute = Falsch sind. Sie können ändern, um bestimmte Spread- oder Cure-Werte basierend auf dem Knoten oder der Kante zu erhalten. Diese Grafik geht davon aus, dass jemand nur die Kranken bekommen kann, mit denen er verbunden ist. Wenn Sie möchten, dass jeder die Chance hat, alle krank zu machen, sollten Sie eine anfängliche Grafik haben, die alle (aber nicht alle) miteinander verbindet und jeder Kante eine Spread-Chance in einer Grafik zuordnet, die alle miteinander verbindet der Abstand voneinander in der ersten Grafik oder etwas Ähnliches
Suchen Sie nach Agenten-basierten Modellen, um etwas über die Domäne zu erfahren. Suche nach Mesa auf Github, es ist ein Projekt, um das Äquivalent von Netlogo in Python zu machen. –
könnte ich Epidemien auf Netzwerken (EoN) auf GitHub vorschlagen. Noch in sehr frühen Stadien, aber auf solche Dinge ausgerichtet. Ich entwickle es. – Joel