Netlogo:移动到特定补丁

Netlogo: move to a specific patch

我想问一个简单的问题。我有工人和补丁。工人想去一个特定的补丁,用一个 id 标记。我尝试了以下代码,但它不起作用。有人能帮我吗?谢谢

workers-own[selected-area]
patches-own [id]

ask workers [
move-to one-of patches with [id = selected-area]]

在您的示例中,您有两个重要的变量。 selected-area,即 turtles-variable,id,即 patch-variable。 每个代理(补丁或海龟)都可以访问自己的变量,但不能访问其他代理的变量。这里的问题是,您要求补丁将 idselected-area 进行比较,但补丁没有名为 selected area 的变量,因此程序无法运行。 您程序的当前结构是:

  1. 观察者向所有特工发出命令(2)
  2. 每个代理给所有补丁一个命令(3)
  3. 每个补丁都会尝试将 id 与 selected-area
  4. 进行比较

对于这类情况,一个非常好的工具是 myselfMyself指的是让你做你现在正在做的事情的agent,比你高1级的agent。在这种情况下,它将允许补丁检查海龟的变量。

ask workers [
move-to one-of patches with [ id = [ selected-area ] of myself ] ]