在内部问龟时无法计算补丁之间的距离

时间:2014-07-22 17:37:54

标签: 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
       .....
]

目的: 我希望上面的代码让乌龟面向最接近给定补丁的补丁("目标补丁")。

未遵循明显的方法: 我不直接使用facexy的原因是两者之间存在障碍,因此龟会受到打击。

错误:

 let new-patch min-one-of new-patches [distance goal-patch] 

此代码无法通过补丁运行 龟101运行DISTANCE时出错

1 个答案:

答案 0 :(得分:2)

看起来目标补丁可能是海龟自己的变量。

在这种情况下,表达“距离目标 - 补丁”是仅限海龟的表达。它只对乌龟有意义。因此,补丁无法运行它。换句话说,补丁无法访问任何名为“goal-patch”的变量。

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

然而,这忽略了这段代码的真正问题,就是你试图在最接近目标补丁的邻居补丁中进行选择,而你的代码非常复杂。

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

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

在此上下文中,myself指的是运行此行代码的乌龟。 “我自己”是一个棘手的记者,理解正确编写代理间交互非常重要。

希望这会有所帮助。

相关问题