NetLogo:所有海龟死亡时的错误

时间:2014-11-16 19:25:25

标签: netlogo die

我有一个模拟,海龟走到红色斑块并死亡,这是有效的,但是只要大多数/所有海龟死亡,其中n-of的所有内容都会报告错误。我确实理解错误,因为模拟试图获得n-of而没有留下乌龟,但我该如何解决?有没有办法在模拟结束时使用n-of所有的海龟都死了? 如果有,我该怎么做? 如果没有,是否有另一种方法让海龟死在红色斑块上? 我的模拟需要每只乌龟一走上红色斑块就会消失,但是它们不能相互走动,这会让它们很难让它们聚集在一个红色斑块上(大约有500只乌龟)

谢谢! 编辑: 我编辑了我的代码,所以我不再需要n-of了。现在,我想要一只乌龟将笔模式设置为“向下”的代码部分是

to go .... ask one-of turtles [set pen-mode "down"] .... end

现在出现错误消息:

  

ASK预期输入为代理或代理集,但取而代之的是NOBODY。   观察者运行ASK时出错   由程序GO调用   按钮'go'调用

一旦模拟结束。

建议使用one-of turtles,但现在每只乌龟都将其笔模式设置为“向下”,但我只想要一只乌龟这样做。

2 个答案:

答案 0 :(得分:2)

基本上,你想要使用最多n只乌龟。也就是说,如果至少有n只龟,你应该使用它们的n,否则你应该只使用所有的海龟。我们可以很容易地把它变成记者:

to-report at-most-n-of [ n agentset ]
  ifelse count agentset > n [
    report n-of n agentset
  ] [
    report agentset
  ]
end

您使用的方法与n-of完全相同,但如果没有足够的海龟,则不会出现错误。

答案 1 :(得分:2)

您没有告诉我们您使用n-of 的内容,因此很难提出替代方法。但一般来说,当没有足够的海龟可供选择时防止n-of崩溃的方法是使用类似的东西:

n-of (min list n count turtles) turtles

其中n是您希望选择的海龟数量。