如何在NetLogo中记录代理的到达顺序?

时间:2015-12-01 12:34:46

标签: netlogo

在我的模型中,我想要一个海龟品种(食物)来记录许多其他品种(掠食者)到达它的顺序。

到目前为止,我有这段代码告诉我谁在那里,但不保留到达顺序:

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   ? 
  ]]

2 个答案:

答案 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 ]