如何访问随机选择的乌龟/代理集的原语-一般方法-NetLogo

时间:2019-06-14 12:32:34

标签: 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,但是在这种情况下,问问不是一个选择。

2 个答案:

答案 0 :(得分:1)

在第二个示例中,我认为您只需要括号即可。它首先分配sum-num,然后加上等式的后半部分。

答案 1 :(得分:1)

代替写作:

count [neighbors with [sum-num = 1]] of friend

并且想知道NetLogo是否会按照您想要的方式解析它(或者是否需要添加括号),我建议编写:

[count neighbors with [sum-num = 1]] of friend

消除任何可能的歧义。