Netlogo 如何让海龟移动到最近的同类补丁?

Netlogo 如何让海龟移动到最近的同类补丁?,netlogo,Netlogo,如果警察来了,我会设法改变问题青年的位置。该模型的设计是我设置不同类别的补丁,问题青年(海龟)占用一个类别为“学校”或“超市”的补丁,如果警察(海龟)访问该补丁,问题青年应将其位置更改为最近的类别为“学校”或“超市”的补丁。我写的代码不起作用,它表明问题青年在警察来访时不动,它仍然占据着相同的补丁 任何帮助都将不胜感激 to change-location let nearest-police min-one-of police [distance myself] if distance

如果警察来了,我会设法改变问题青年的位置。该模型的设计是我设置不同类别的补丁,问题青年(海龟)占用一个类别为“学校”或“超市”的补丁,如果警察(海龟)访问该补丁,问题青年应将其位置更改为最近的类别为“学校”或“超市”的补丁。我写的代码不起作用,它表明问题青年在警察来访时不动,它仍然占据着相同的补丁

任何帮助都将不胜感激

to change-location
  let nearest-police min-one-of police [distance myself]
  if distance nearest-police = 0 [
    let target-patch one-of patches with [category = "school" or category = "supermarket"]
    if  target-patch != one-of patches with [[category = "school"] of myself or [category = "supermarket"] of myself] and distance target-patch > 0 [
      go-to target-patch
    ]
  ]
end

如果我正确地解释了您的问题,那么名为“category”的补丁变量的值为“school”、“supermarket”以及其他可能的选项。您想要的是将选择限制为与提问的海龟已经使用的补丁具有相同类别的补丁


你的代码
我自己的[[category=“school”]或我自己的[category=“supermarket”]
的补丁之一没有真正意义。如果这是应该选择具有正确类别的修补程序的位,只需将其替换为:
另一个具有[category=[category]的修补程序]

我已格式化代码(创建问题时使用{}图标)。请检查它是否正确。谢谢你的回复,珍布。是的,我想把海龟移到最近的一个补丁,与提问的海龟已经在的补丁类别相同。问题是,如果海龟将它已经使用的当前补丁作为目标补丁,如何避免?因为当我运行这个mdel时,海龟有时会停留在当前补丁上。我尝试了你的代码,运行时错误出现在“其中一个”上,它是“预期来自(补丁422 634)的真/假值,但却得到了学校。”编辑代码-
other
避免了相同的补丁问题,这是有意义的。谢谢!