如何访问随机选择的海龟/代理集的原语 - 通用方式 - NetLogo



我正在学习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

消除任何可能的歧义。

最新更新