我正在学习NetLogo,我对语法感到困惑。例如,如果我为一个补丁创建朋友,并且我想让其中一个补丁计数/访问他们的邻居和它的邻居朋友,一般的方法是什么?例如,此行正在工作:
set sum-num sum [number] of neighbors + sum [ [number] of neighbors ] of friend
但事实并非如此,为什么?
set sum-num count neighbors with [number = 1] + (count [neighbors with [sum-num = 1]] of friend)
在我的测试示例中,这两行应该给出相同的结果。
测试示例代码以简化理解:
patches-own [friend number sum-num]
to setup
ca
ask one-of patches [
set friend one-of patches
set pcolor green
ask friend [set pcolor red]
]
ask patches [
set number random 2
set plabel number
]
end
to go
ask patches with [pcolor = green][
;set sum-num sum [number] of neighbors + sum [ [number] of neighbors ] of friend
set sum-num count neighbors with [number = 1] + (count [neighbors with [sum-num = 1]] of friend)
set plabel sum-num
]
end
如果有人可以指出我某些文章/文档的一部分(我显然没有看到(或解释如何访问随机代理/代理集的一般方法,我将不胜感激:)我总是在这种情况下浪费一些时间。我很清楚,我错过了一些东西。我知道如何访问ask
,但在这种情况下,询问不是一种选择。
我认为您在第二个示例中只需要括号。它首先分配总和数,然后添加等式的后半部分。
而不是写:
count [neighbors with [sum-num = 1]] of friend
并想知道NetLogo是否会按照您的预期方式解析它(或者您是否需要添加括号(,我建议编写:
[count neighbors with [sum-num = 1]] of friend
消除任何可能的歧义。