2016-04-05 3 views
1

Ich möchte ein verbundenes Diagramm erstellen, in dem jeder Knoten einen Mitarbeiter bei meiner Arbeit darstellt. Ich möchte in der Lage sein, eine Simulation einer Kälte durch das Büro zu verbreiten. Die Leute, die mit der infizierten Person verbunden sind, haben eine gewisse Wahrscheinlichkeit, die Erkältung zu bekommen und es geht weiter. Wie kann ich das machen?So erstellen Sie manuell ein bestimmtes verbundenes Diagramm und führen Tests aus

Kann ich auch ein Zeitlimit festlegen, wie lange die infizierte Person infiziert bleiben wird?

+0

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. –

+0

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

Antwort

0

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

Verwandte Themen