在AnyLogic ...我建立了一個模型,一旦Agent B發送了一條消息,Agent A(住在Main中)將移動到Agent B(住在另一個Agent C,比如家中)。 我在設置代理B的「初始位置」時遇到了麻煩。 我該如何指向他的特定「家」(代理C)?如何將代理主要移動到AnyLogic中其他代理內的代理?
我曾嘗試: 「指定點」:X = this.getLongitude()... 「中的節點」:這
,但沒有運氣。 任何想法?這有意義嗎?
在AnyLogic ...我建立了一個模型,一旦Agent B發送了一條消息,Agent A(住在Main中)將移動到Agent B(住在另一個Agent C,比如家中)。 我在設置代理B的「初始位置」時遇到了麻煩。 我該如何指向他的特定「家」(代理C)?如何將代理主要移動到AnyLogic中其他代理內的代理?
我曾嘗試: 「指定點」:X = this.getLongitude()... 「中的節點」:這
,但沒有運氣。 任何想法?這有意義嗎?
它可以通過多種方式實現。最常見的是基於流程圖:代理葉流程圖Main
到Exit
塊。在Exit
阻滯對退出行爲,請撥打:
agentC.enter.take(agent);
AgentC
類型都應該有Enter
塊。在塊的屬性中,指定進入代理的初始位置。 Enter
可被視爲代理人從另一空間進入的「大門」(如Main
)。
格雷戈裏談論的溝通和運動,但一個可能的「架構」,以代理運動的更普遍的水平上回答和嵌入:
如果你的代理類型AgentA
,AgentB
和AgentC
與嵌入你說(在他們的'家'AgentC
中的AgentB
s的人口),那麼每個AgentB
實例將自動具有鏈接(鏈接到上層代理)到包含AgentC
的被稱爲agentC
的實例。
所以,當一個AgentA
從AgentB
收到消息時,你可以這樣做
moveTo(sender.agentC)
或
jumpTo(sender.agentC.getX(), sender.agentC.getY())
(該sender
是一個特殊的關鍵字指發送代理在「On message received」代碼塊中。jumpTo
立即移動到某處而不是隨着什麼移動代理商的速度一直在加速。不幸的是moveTo
,您可以指定其他代理爲目標,但jumpTo
必須使用座標或節點)
請參閱以下幫助部分: