如何手动创建特定的连接图并运行测试

时间:2016-04-05 04:16:14

标签: python networkx

我想创建一个连接图,其中每个节点代表我工作的员工。我希望能够通过办公室进行冷传播模拟。与受感染者有关的人有一定的可能性感冒,并继续。我怎样才能做到这一点?

我是否也可以设定受感染者保持感染的时间限制?

1 个答案:

答案 0 :(得分: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)

应该让你去。可以进行大量定制。如果你想知道在疾病死亡之前谁生病了,你可以通过迭代检查谁已经'besick'= true。请注意,您应该初始化所有节点以使疾病相关属性= False。 您可以根据节点或边缘将其更改为具有某些扩展或固化值。 此图表假定某人只能接触他们所连接的病人。如果你希望每个人都有机会让每个人都生病,你应该有一个初始图表,以某种方式连接每个人(但不是每个人),并在图表上为每个人分配每个边缘的传播机会。第一张图中彼此的距离或类似的东西