2016-04-05 4 views
1

各ノードが自分の仕事の従業員を表す接続グラフを作成したいと思います。私は、オフィスを通じた冷たい広がりのシミュレーションを実行できるようにしたいと考えています。感染した人とつながっている人々は、寒さに襲われる可能性があります。これどうやってするの?特定の接続グラフを手動で作成してテストを実行する方法

また、感染した人の感染期間の上限を設定することはできますか?

+0

エージェントベースのモデルをルックアップして、ドメインについて学びます。 githubでmesaを検索します。これは、pythonでnetlogoに相当するプロジェクトです。 –

+0

githubでネットワーク上の流行(EoN)を提案するかもしれません。まだ非常に初期段階ですが、このようなものを目指しています。私はそれを開発しています。 – Joel

答えて

0

あなたが探しているものの(確かに最適化可能な)バージョンですが、私はこのように見えます。

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) 

カスタマイズが可能です。病気がなくなる前に誰が病気になっているのかを知りたい場合は、反復して誰が「beensick」=真であるかを確認することができます。病気関連の属性がFalseになるようにすべてのノードを初期化する必要があることに注意してください。 ノードまたはエッジに基づいて特定のスプレッドまたはキュア値を持つように変更することができます。 このグラフは、誰かが病気になっている人だけが接続できると仮定しています。誰もが病気になる可能性がある場合は、何らかの方法で全員(誰もが誰でも)を接続する初期グラフを作成し、グラフの各エッジに、最初のグラフなどの中のお互いの距離

関連する問題