NetLogo:有没有更好的方法来访问每个滴答的补丁和龟的变量?

时间:2013-12-23 00:43:03

标签: netlogo multi-agent

我需要在每个滴答时更新每个海龟的财富变量,按调用次数排在我的探查者列表之上。

我确信计算时间最多的是计算有多少其他代理人为他们的家庭使用相同的补丁并计算每只乌龟的份额。 food_carrying和my-home是turtle的属性,Storage是patch属性。

to update-wealth
  let h my-home
  set wealth ([Storage] of my-home / (Count agents with [my-home = h]))  + food_carrying
end

你能想到更好的方法吗?

Name                               Calls Incl T(ms) Excl T(ms) Excl/calls
UPDATE-WEALTH                    9744912 831703.608 461086.654      0.047

谢谢:)

1 个答案:

答案 0 :(得分:2)

我认为通过补丁而不是乌龟来做这件事要快得多,因为补丁上的每只乌龟似乎都在计算相同的财富价值。也许是这样的事情:

ask patches [
  let my-turtles turtles-here
  if any? my-turtles [
    let w Storage / count my-turtles
    ask my-turtles [set wealth w + food_carrying]
    ]
  ]
]

如果你在龟屋中保留了一套正在运行的补丁,你可以问一下这个子集,而不必担心补丁上没有任何补丁并且除以零。

查尔斯