netlogo中如何记录海龟访问过的patches的位置,并记录每只海龟的数据

How to record location of patches visited by a turtle in net logo, and reord data for each turtle

我正在使用 NetLogo 创建模拟蜜蜂访问花朵并为它们授粉的模型。为了了解遗传多样性,我希望每只海龟在每次拜访一朵花时都记录下它拜访过的花朵的位置。这意味着我知道最后记录的花可能已经被生成列表中它上面的任何花授粉。我将花朵建模为随机生成的黄色斑块,一旦蜜蜂从它们身上采集了花粉,它们就会变成蓝色,如果蜜蜂给它们授粉,它们就会变成白色,尽管只有当蜜蜂有足够的花粉来访问它们时才会发生这种情况授粉。

还需要此信息才能清楚地了解每只海龟的情况。我的希望是,如果在 运行 之后,它可以生成一个文件,其中包含每只乌龟,并在它们下面按顺序列出它们访问过的花朵的位置。

我想象它的工作原理是每次蜜蜂拜访一朵花时它都会存储那朵花的 x 和 y 坐标。

 to store-location
  ask turtles [
     if ((pcolor = yellow) or (pcolor = blue) or (pcolor = white))
       set xy_list fput (list int xcor int ycor) xy_list
     ]
   ]
 end

我还没有对此进行测试,但对我来说它看起来几乎是正确的。事实上,我很惊讶它不起作用(你没有解释问题)。但不是:

set xy_list fput (list int xcor int ycor) xy_list

set xy_list fput patch-here xy_list

您在列表中添加新条目的方法很好。但是你拥有它的方式会给你列表列表。相反,您可以存储补丁(这样您就不需要使用 int),然后您将拥有一个包含 patch 1 4 等项目的单级列表,稍后将更容易阅读。

然后,当 运行 完成后,您可以将列表写入文件。如果您需要这方面的帮助,请提出一个单独的问题。