如何具体改变agentset中agent的一个变量?

How to specifically change a variable of an agent in the agentset?

我正在尝试更改代理集中特定代理的变量(分数),如果它满足补丁的特定条件。这是由另一个代理调用的。更清楚一点。我的想法是,例如,如果有一个品种(马)并且它看到补丁(草)并且它站在另一个品种(顶点 - 因为马沿着由顶点表示的节点连接的路径移动) - 添加的分数变量到 vertices-own 如果草地质量 <=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 代理(海龟)的位置是连续的数字,因此尝试说 'if another turtle is where I am' 这样的说法通常是错误的。虽然您可能已经使用 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 分开,但我认为这样会更容易让您了解它是如何工作的。