如何计算集群中的海龟数量 - netLogo

时间:2014-10-17 02:06:50

标签: cluster-computing netlogo turtle-graphics

我有一群被编程为聚类/合并的海龟(下面的代码)。我想知道,一旦群集达到一定的大小(my-groupSize),群集就会孵化出新的海龟。似乎mygroupSize计算的是滴答数而不是群集中的乌龟数。我如何跟踪群集中的海龟数量?

 ask origs [
    let candidates origs in-radius 1 with [leader != [leader] of myself]
    if any? candidates [
      create-links-with candidates [ hide-link ]
      ask candidates [ merge ]
    ]
    set my-groupSize my-groupSize + 1.0
  ]
  tick
end

to merge  ;; node procedure
  ;; First this node merges.
  set leader [leader] of myself
  set heading [heading] of leader
  set color blue
  ask link-neighbors with [leader != [leader] of myself]
    [ merge ]
    set my-groupSize my-groupSize + 1.0
end

1 个答案:

答案 0 :(得分:3)

如果my-group-size是一个海龟自己的程序,那么每只乌龟都有自己的变量版本。因此,当每只乌龟添加1时,它会在其自己的变量版本中添加1。它不会计入该组中所有海龟的数量。

相反,只使用领导者版本的my-group-size。合并乌龟时,请执行以下操作:

ask leader [ set my-group-size my-group-size + 1 ]

然后,任何代理都可以使用[ group-size ] of leader

获取组大小

这假设领导者也没有失去成员。在这种情况下,一旦所有领导者做出改变,你可能需要将领导者聚集到一组(如果还不是众所周知的),然后让他们计算他们的粉丝。

;; get leaders
let all-leaders turtle-set ([leaders] of turtles )
;; count group sizes
ask all-leaders [ set my-group-size count turtle with [ leader = myself ] ]

我不太了解你的模型,建议使用更少的暴力方法。但他们在那里。

如果您还没有,那么您可能希望将leader初始化为“self”。通过这种方式,您可以随时引用领导者,即使对于不跟随另一只乌龟的海龟也是如此。

希望这有帮助。