在每个滴答声中,我要求每个补丁更新其计数,具体取决于其8个邻居的数量。如果超过4个邻居的计数大于或等于1,则它们会更新1.如果超过4个邻居的计数小于或等于1,则补丁计数应设置为0.
当我运行代码时,我收到以下错误:
“> =运算符只能用于两个数字,两个字符串或两个相同类型的代理,但不能用于TRUE / FALSE和number.error,而补丁27 -22运行> =被调用通过程序GO“
调用程序SPREAD-ERRORSto spread-errors ;; Errors spread prior to addition of random error
;; This is dependent upon majority of neighbors with errors
ask patches [
ifelse count neighbors with [n >= 1] > 4
[update-n 1]
[set n n = 0]
]
end
答案 0 :(得分:0)
您的意思是set n 0
,而不是set n n = 0
。
但为什么set n n = 0
实际上有效的NetLogo语法,以及它最终如何导致您收到错误消息?
嗯,n = 0
是一个布尔表达式,其值为true
或false
。然后,您将获取该值并将其存储在n中。效果就好像你写了:
ifelse n = 0 [ set n true ] [ set n false ]
运行此命令后,n保存一个布尔值。然后,下次n >= 1
运行时,您会收到上面的错误消息,因为n不再是数字,也无法与1进行比较。