在我的模型中,我想要一个海龟品种(食物)来记录许多其他品种(掠食者)到达它的顺序。
到目前为止,我有这段代码告诉我谁在那里,但不保留到达顺序:
if ticks = day-length [
print [who] of turtles-here with [who != [who] of myself]
任何建议都会一如既往地受到重视。我确实已经启动并运行RNetLogo,如果它提供了更好的方法。
谢谢
获取我所追求的数据的一种丑陋方式是使用两行独立的代码
ask other turtles-here [show got-here]
foreach sort-by < [got-here] of turtles-here with [shape = "default"]
[
show ?
]]
答案 0 :(得分:1)
您可以将它们保存为Food拥有的列表。但我认为最好的方法是让掠夺者记住。
让捕食者运行类似这样的东西
if food-here != nobody and been-here = 0 [set got-here ticks]
那个最低的人来到这里的时间最长。
像这样检查
ask food [print [who] of predators-here with-min[got-here]]
这假设您正在使用刻度线
显示列表
foreach sort-by < [got-here]
[
show ? ;;
]
或者更好的列表
let here-list
foreach sort-by < [got-here]
[
set here-list lput ? here-list
]
答案 1 :(得分:1)
首先,如果每件食物都要记录自己的清单,你需要在food-own
代理变量列表中添加一个变量(例如&#39;捕食者顺序&#39;)。然后在创建食物时将列表初始化为空(set predator-order []
)。不要在列表中使用who
。而是将代理添加到列表中。如果没有看到周围的代码,很难让语法正确,但它会是这样的:
ask this-food
[ set predator-order lput myself predator-order ]