NetLogo:Turtles aren';";“感染”;彼此

NetLogo:Turtles aren';";“感染”;彼此,netlogo,Netlogo,我想创建一个关于群体免疫的模拟。为了实现这一点,我必须编写一个感染海龟的病毒代码。以下是迄今为止的代码: to setup ask n-of (sick-turtles / 5) turtles with [color != red] [set sick? true] ask turtles [ if sick? = true [ set color green ] ] ask turtles [if color != red [set immune? 1] ] ask turtl

我想创建一个关于群体免疫的模拟。为了实现这一点,我必须编写一个感染海龟的病毒代码。以下是迄今为止的代码:

to setup
ask n-of (sick-turtles / 5) turtles with [color != red]
[set sick? true]


 ask turtles
[
if sick? = true
[
  set color green
]
]

ask turtles
[if color != red
[set immune? 1]
]

ask turtles 
[if color != green
[set sick? 1]
]
end

to go
if smallpox = 0
[
set infection-rate 99
set infectivity 6
set lethality 0
set recovery recovery-rate
set immunity (1 - (1 / infectivity)) * 100
]

to infect
ask turtles with [not immune? and not sick?]
[if any? (turtles-on patch-ahead 1) with [sick? = true] 
[if (random 100) < infection-rate
  [set sick? true]
]
]
end
设置
用[颜色!=红色]询问n只(病海龟/5只)海龟
[病倒?对]
问海龟
[
如果生病了
[
设置颜色为绿色
]
]
问海龟
[如果颜色!=红色
[设置免疫?1]
]
问海龟
[如果颜色!=绿色
[病倒?1]
]
结束
外带
如果天花=0
[
设定感染率99
设置传染性6
将杀伤力设为0
设置恢复率
设定免疫(1-(1/传染性))*100
]
感染
问海龟[没有免疫?没有病?]
[如果有?(海龟在前面的补丁1上)带有[生病?=真]
[如果(随机100)<感染率
[病倒?对]
]
]
结束

然而,海龟们根本没有相互传染。我做错了什么?提前谢谢

在您的设置中,首先(1)只需几个一般的编码注释,您就可以看到类似于
询问海龟[if condition[do something]]
的代码。如果你把它写成
让有[条件][做点什么]
的海龟们读起来容易多了。(2)
go
过程没有
end
。(3) 您似乎在使用真/假和使用1/0作为标志之间进行切换-您应该始终使用真/假,这样您就可以使用
如果生病?
如果没有生病?
而不是
如果生病=真和
如果生病!=正确
。这可能是问题的原因-在安装程序中将
sick?
设置为true,但稍后在安装程序中将设置为1。JenB完全正确。此外,然而,你实际上并没有重新收集新感染的海龟,所以看起来感染没有扩散。所以,当你设置
病态?
真时,一定要确保设置海龟的颜色。非常感谢你们两位,都解决了这个问题,并给了我如何使我的代码“更光滑”的建议。干杯