Netlogo 在询问海龟时无法计算补丁之间的距离

Netlogo 在询问海龟时无法计算补丁之间的距离,netlogo,Netlogo,请使用以下代码提供帮助: ask turtles[ ...... let new-patches no-patches ask patch-here [ set new-patches neighbors] let new-patch min-one-of new-patches [distance goal-patch] face new-patch ..... ] 目标: 我想要上面的代码使海龟

请使用以下代码提供帮助:

     ask turtles[
       ......
       let new-patches no-patches
       ask patch-here [ set new-patches neighbors]
       let new-patch min-one-of new-patches [distance goal-patch] 
       face new-patch
       .....
]
目标: 我想要上面的代码使海龟面对离给定补丁最近的补丁(“目标补丁”)

未遵循明显的方法: 我不直接使用facexy的原因是其间有障碍物,所以海龟会被击中

错误:

 let new-patch min-one-of new-patches [distance goal-patch] 
此代码不能由修补程序运行
海龟101跑距离时出错看起来目标补丁可能是海龟自己的变量

在这种情况下,表达“距离目标补丁”是海龟唯一的表达。它只对海龟有意义。所以,补丁程序无法运行它。换言之,补丁无法访问任何称为“目标补丁”的变量

您需要以补丁可以使用的方式提供目标补丁的价值。您可以使用我自己的
[goal patch],也可以将goal patch的值保存在临时变量中

但是,这忽略了此代码的真正问题,即您试图在距离目标修补程序最近的相邻修补程序中进行选择,因此您的代码非常复杂

看,海龟可以直接使用“邻居”。因此,如果您想找到距离turtles自己的变量
goal patch
(使用距离)中包含的补丁最近的邻居补丁,它是:

在本文中,
imf
指的是运行这行代码的海龟。“我自己”是一个狡猾的记者,理解它对于正确编写代理间交互非常重要


希望这有帮助

什么是目标补丁
?这是一个变量还是一个过程?如果是程序,我们能看到代码吗?所示的代码应该可以工作,尽管可以进行清理。例如,
邻居
可以由海龟直接运行,因此您完全不需要使用
新补丁
变量。然后代码将变成邻居之一[距离目标补丁]。同意布莱恩:你给我们看的代码是正确的。目标补丁是乌龟已经到达的补丁。我的代码仍然会出现错误,我不知道为什么,尽管我尝试了Bryan的代码,效果很好。谢谢
set nearest min-one-of neighbors [ distance ( [ goal-patch ] of myself ) ]
;; parenthesis added for emphasis
;; --distance can't be inside the brackets with goal-patch