我在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
]
]
然而,当被感染者与易感者重新接触时,病毒不会传播。有什么想法吗?