如何在netlogo中动态输出值

如何在netlogo中动态输出值,netlogo,Netlogo,我创建了一个模型,在这个模型中,海龟是根据某些参数出生和死亡的。但在任何一点上,让我们假设活下来的海龟不超过20只 随着每只新海龟的出生和死亡,海龟标签不断增加,即最初有5只海龟,第3只海龟死亡,在下一个蜱中,一只新海龟出生。新出生的海龟有6个标签,因此旧标签将失效,并替换为下一个标签 如果我想将与海龟相关的度量输出到监视器中,是否有一种方法可以动态地确保这一点。i、 e.因为一个刻度不能超过20只海龟,我能让netlogo自动显示海龟的公制和海龟标签吗。否则,我将不得不创建100个监视器,然后

我创建了一个模型,在这个模型中,海龟是根据某些参数出生和死亡的。但在任何一点上,让我们假设活下来的海龟不超过20只

随着每只新海龟的出生和死亡,海龟标签不断增加,即最初有5只海龟,第3只海龟死亡,在下一个蜱中,一只新海龟出生。新出生的海龟有6个标签,因此旧标签将失效,并替换为下一个标签


如果我想将与海龟相关的度量输出到监视器中,是否有一种方法可以动态地确保这一点。i、 e.因为一个刻度不能超过20只海龟,我能让netlogo自动显示海龟的公制和海龟标签吗。否则,我将不得不创建100个监视器,然后使用[metric]或turtle 0….[metric]的turtle n进行编码,这是不实际的。

如果您真的想为每个turtle创建一个单独的监视器,您可以这样做:

使用第0项分类海龟的
[metric]而不是海龟0的
[metric]
(等等)将确保您不依赖海龟的
编号,您只依赖海龟在分类海龟列表中的位置

请注意,这将是非常低效的,因为每个监视器都会一遍又一遍地重新排序海龟

尽管如此,我认为有很多不同的更好的方法来实现这一点。以下是一个完全有效的示例:

turtles-own [ metric ]

to setup
  clear-all
  create-turtles 20 [ set metric random 10 ]
  reset-ticks
end

to go
  ask n-of 5 turtles [ die ]
  create-turtles 5 [ set metric random 10 ]
  tick
end

to-report info [ the-turtle ]
  ; format this however you want:
  report [ (word who ": " metric ", ") ] of the-turtle
end
然后,在监视器中,输入:

map info sort turtles
这会给你一些类似的东西:

如果对您来说不清楚,您可能需要检查它的字典条目。其基本思想是,我们通过将
info
reporter应用于海龟列表的每个元素来构建一个新的字符串列表

我在示例中使用了一个监视器,因为这就是您在问题中所说的,但是对于像这样显示多个海龟的信息,可能一个绘图或输出小部件更合适。在任何情况下,您都可以使用类似的方法,使用或


最后一句忠告。你的问题表明你可能已经意识到了这一点,但任何时候你试图用海龟的
号码来指海龟(即
海龟0
海龟1
海龟27
,等等),这可能意味着你走错了方向。NetLogo用于操纵代理集和列表;好好利用这一点。当你确实需要提及某只海龟时,请使用该海龟的引用(例如,在上面的例子中,
海龟
),永远(或几乎永远)不要提及它的
编号。

当你说“标签”时,你真正的意思是海龟的
编号。NetLogo中的海龟确实有一个
标签
变量,但这是一个不同的概念。是的,我指的是who号码,对不起。您好,谢谢您的帮助。非常感谢。谢谢你的建议,我同意你的看法。事实上,我对每只海龟都不感兴趣,因为它们不断死去,新的海龟出生了。我的模型中的每只海龟都分为5类,比如说A..E,我对这个级别上聚合的度量感兴趣,即A的[度量]等等。为此,我确实创建了一个列表,但这是我被迫做的事情,不幸的是,在这件事上我真的没有选择的余地