使用netlogo模拟病毒在受感染的个体中传播到小型世界网络中的易感个体?

时间:2016-04-14 15:44:27

标签: simulation netlogo virus

我在netlogo中模拟病毒在小型世界网络中的传播。使用现有模型netlogo提供的小型世界网络,其中节点可以使用“Rewire One”与其他节点连接。界面上的按钮我试图得到它,以便如果一个最初被感染的人被一个易受感染的人重新接线,病毒将转移到该个体,并且海龟颜色将更新为红色。 这是我用来重新连接另一只乌龟的代码:

    to rewire-one

if count turtles != num-nodes [
setup
]


 set rewire-one? true
 set rewire-all? false

 let potential-edges links with [ not rewired? ]
 ifelse any? potential-edges [
 ask one-of potential-edges [

  let node1 end1
  ;; if "a" is not connected to everybody
  if [ count link-neighbors ] of end1 < (count turtles - 1)
  [
    ;; find a node distinct from node1 and not already a neighbor of node1
    let node2 one-of turtles with [ (self != node1) and (not link-neighbor?       node1) ]
    ;; wire the new edge
    ask node1 [ create-link-with node2 [ set color cyan  set rewired? true ] ]


    ask links
[ reed-frost-children]

ask links
[ increment-children ]

    set number-rewired number-rewired + 1  ;; counter for number of rewirings


    ;; remove the old edge
    die
  ]
  ]

;;然后我使用芦苇霜功能作为感染力,可以在下面看到

to reed-frost-children

ask children with [ child-sus = 1] 
[
set num-infected-neighbours length filter [[ child-infected = 1] of ?]
[other-end] of my-links with [not rewired?] ;; i.e not closed? i.e open 

  set force-of-infection 1 - (1 - prob-infection-child) ^ num-infected-   neighbours

if(random-float 1 <= force-of-infection)
[
  set child-sus 0
  set child-inncubated 1
  set child-infected 0
  set child-almost-infected 0
  set child-recovered 0


  set inncubation-period 100
  show-turtle
  set color orange
  set size 1

  ask link-neighbors with [ child-infected = 1]
  [
    ask my-links 
    [
      set color orange show-link

      ask other-end
      [
        set color orange
      ]
    ]
  ]

  ask my-links [set closed? false] ;; closed i.e. not open
]
]

然而,当被感染者与易感者重新接触时,病毒不会传播。有什么想法吗?

0 个答案:

没有答案