我已经创建了一个模型,其中龟出生并基于某些参数死亡。但在任何一个特定点上,我们都说不超过20只乌龟活着。
随着每只新龟的出生和死亡,龟标签逐渐增加,即最初有5只龟,第3只龟死亡,在下一次蜱中,新龟出生。出生的新龟的标签为6,因此旧标签将退役,并替换为下一个标签。
如果我想将与海龟相关的指标输出到监视器中,有没有办法动态确保。即,因为在任何刻度线上不能有超过20只海龟,我是否可以使netlogo自动显示海龟指标和海龟标签。否则我将不得不创建100个监视器,然后使用[公制]或乌龟0 [[公制]的乌龟n进行编码,这是不实际的。
答案 0 :(得分:1)
使用[ metric ] of item 0 sort turtles
代替[ metric ] of turtle 0
(依此类推)可以确保您不依赖于who
海龟的数量,您只能依赖于他们在排序的海龟列表。
请注意,这将是非常低效,因为每个监视器都会一遍又一遍地重新整理海龟。
话虽如此,我认为会有很多不同的,更好的方法来解决这个问题。这是一个完全有效的例子:
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
这会给你类似的东西:
如果您map
模糊不清,则可能需要检查其词典条目。基本思想是我们通过将info
报告者应用于我们的海龟列表的每个元素来构建新的字符串列表。
我在示例中使用了一个监视器,因为这就是你在问题中所说的内容,但是为了显示像这样的多个乌龟的信息,可能是一个情节或输出小部件更合适。在任何情况下,您都可以使用类似的方法,map
或foreach
。
结束时提出一句建议。您的问题表明您可能已经意识到这一点,但是每当您想要通过who
号码引用海龟时(例如turtle 0
,turtle 1
,{{1等等,这可能意味着你走错了轨道。 NetLogo用于操作代理集和列表;利用这一点。当您确实需要引用特定的乌龟时,请使用对该乌龟的引用(例如,上例中的turtle 27
),从不(或几乎从不)引用其the-turtle
数字。