【问题标题】:NetLogo: n-of error when all turtles dieNetLogo:所有海龟死亡时的 n 个错误
【发布时间】:2015-01-13 16:18:46
【问题描述】:

我有一个模拟,其中海龟走到红色斑块上并死亡,这是可行的,但是一旦大多数/所有海龟死亡,其中包含 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,但现在每只乌龟都将其笔模式设置为“向下”,但我只希望一只乌龟这样做。

【问题讨论】:

  • 您应该发布您的代码和您收到的错误消息。

标签: netlogo die


【解决方案1】:

基本上,你最多想使用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 一样使用它,但如果没有足够的海龟,它不会出错。

【讨论】:

    【解决方案2】:

    你没有告诉我们你在使用n-offor,所以很难提出替代方法。但一般来说,当没有足够的海龟可供选择时,防止n-of 崩溃的方法是使用类似的方法:

    n-of (min list n count turtles) turtles
    

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

    【讨论】:

    • 我有大约 500 个棕色补丁,每个补丁可以生成 1 只乌龟。当我告诉 200 个补丁生成一只海龟(带有滑块)时,我有 200 只海龟,我如何告诉你的代码我有多少只海龟?我是否只是在“n”所在的位置填写滑块的名称,即使滑块指的是补丁,而不是海龟?还是我在这里完全错了? :-D
    • 在上面的代码中,count turtles 是您当前拥有的海龟数量。 n 是您想要从您目前拥有的海龟中选择的数量。但我不明白你的问题,因为我不明白你想做什么。你没有错;只是不清楚。你想选择什么?你想选择它做什么?编辑您的问题。发布一些代码...至少向我们展示您尝试使用n-of的行...
    • 我现在改了代码,但错误差不多。例如,我想放下一只乌龟笔。 “问乌龟随机 1 [设置笔模式“向下”]”,但只要那只随机乌龟死了,我就会得到一个错误。我可以用你的建议解决这个问题吗?
    • 永远不要尝试通过who 数字随机选择海龟(这是turtle random 1 会做的——除了random 1 总是等于0)。如果要随机选择一只乌龟,请使用one-of turtles。但在您编辑您的问题并发布您正在尝试做的事情的代码之前,我们仍然无法为您提供更多帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    相关资源
    最近更新 更多