NetLogo 中的 path-where 命令

path-here comand in NetLogo

我有基本的 NetLogo 命令问题。

我想要一组移动代理(海龟)访问一个补丁变量(称为veg)并根据它们加载糖的能力(大小)收集一定量的(糖)。我正在尝试使用patch-here命令,但是在NetLogo字典中没有patch-here如何使用的例子,我也不知道如何向海龟们请教一个问题,请教他们是否收集了根据您的尺寸从该补丁中获取足够的糖。有人对如何操作或在哪里可以找到此信息有任何建议吗?

 ask turtles [
    patch-here veg > 0.6 
    set sugar (sugar - metabolism)    
  ]

因为你问的是海龟,所以不能直接访问patch变量,需要先访问patch,才能访问patch里面的变量。

ask bees
  [ ask patch-here
    [ if veg > 0.6
      [ set sugar (sugar - metabolism) ]
    ]
  ]

或者你可以使用of命令简化代码,并使用这里的补丁作为你要检查的补丁的位置。

ask bees
  [ if [veg] of patch-here > 0.6
    [ set sugar (sugar - metabolism) ]] 

要使用 patch-here,您需要将代码修改为:

ask turtles
[ if [veg] of patch-here > 0.6 
  [ set sugar (sugar - metabolism)    
  ]
]

然而,每只乌龟都位于一个补丁中 - 即使用于显示乌龟的图片很大并且跨越许多补丁,乌龟本身也被认为位于一个点,在一个补丁中。 NetLogo 巧妙地使用了坐标系统——因为乌龟只能在一个地方,如果你使用一个补丁变量名,它会假设你想要乌龟所在的补丁。

因此您可以将其简化为:

ask turtles
[ if veg > 0.6 
  [ set sugar (sugar - metabolism)    
  ]
]

请注意,我在删除 of patch-here 时删除了 [ ]。

但您可以进一步简化为:

ask turtles with [veg > 0.6]
[ set sugar (sugar - metabolism)    
]

所以如果你是用patch-here获取海龟所在的patch的变量值,那么直接使用变量即可。 patch-here 的典型用途是查找同一块上的其他海龟。