如何具体改变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 ]
]
]
]
这没有经过测试,但我只是重新组织了您的代码。您遇到了一些包围问题,并且您还要求顶点找到最近的顶点(本来应该是它本身),而不是让马找到最近的顶点。
也没有必要将 let
和 ask
分开,但我认为这样会更容易让您了解它是如何工作的。
我正在尝试更改代理集中特定代理的变量(分数),如果它满足补丁的特定条件。这是由另一个代理调用的。更清楚一点。我的想法是,例如,如果有一个品种(马)并且它看到补丁(草)并且它站在另一个品种(顶点 - 因为马沿着由顶点表示的节点连接的路径移动) - 添加的分数变量到 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 ]
]
]
]
这没有经过测试,但我只是重新组织了您的代码。您遇到了一些包围问题,并且您还要求顶点找到最近的顶点(本来应该是它本身),而不是让马找到最近的顶点。
也没有必要将 let
和 ask
分开,但我认为这样会更容易让您了解它是如何工作的。