如何具体更改代理集中代理的变量



如果某个特定代理满足补丁的特定条件,我将尝试更改该代理集中该特定代理的变量(分数(。这是由另一个代理调用的。更清楚一点。例如,我的想法是,如果有一个品种(马(,它看到了补丁(草(,并且它站在另一个品种上(顶点-因为马沿着由顶点表示的节点连接的路径移动(-一个分数变量添加到顶点上,如果草的质量<3,它会给它所在的顶点添加一个分数。

ask horses[
ask patches in-cone 50 60 [                                       
if grass-quality <= 3 ask vertices with [min-one-of vertices in-radius 0 [distance myself] [set vertex-score vertex-score + 1 ]]]]

我知道这个代码逻辑有问题。我正试图把我提到的思想转化为代码。请推荐我。

谢谢大家。

问候,

恒华

NetLogo代理(乌龟(的位置是连续的数字,所以尝试说"如果另一只乌龟在我所在的位置"之类的话通常是错误的。虽然你可能已经使用move-to到达了那里,但让马识别一个离它很近的顶点可能比准确的位置更安全。您已经使用了radius 0,但我将把它更改为0.001,以考虑位置上的潜在错误。

ask horses
[ if any? patches in-cone 50 60 with [ grass-quality <= 3 ]
[ let my-vertex min-one-of vertices in-radius 0.001 [distance myself]
ask my-vertex
[ set vertex-score vertex-score + 1 ]
]
]
]

这还没有经过测试,但我只是重新组织了您的代码。你遇到了一些括号问题,你还要求顶点找到最接近的顶点(它本来就是它自己(,而不是让马找到最靠近的顶点。

也没有必要将letask分开,但我认为这会更容易让您了解它的工作原理。

最新更新