2017-08-09 100 views
0

在AnyLogic ...我建立了一個模型,一旦Agent B發送了一條消息,Agent A(住在Main中)將移動到Agent B(住在另一個Agent C,比如家中)。 我在設置代理B的「初始位置」時遇到了麻煩。 我該如何指向他的特定「家」(代理C)?如何將代理主要移動到AnyLogic中其他代理內的代理?

我曾嘗試: 「指定點」:X = this.getLongitude()... 「中的節點」:這

,但沒有運氣。 任何想法?這有意義嗎?

回答

0

它可以通過多種方式實現。最常見的是基於流程圖:代理葉流程圖MainExit塊。在Exit阻滯對退出行爲,請撥打:

agentC.enter.take(agent);

AgentC類型都應該有Enter塊。在塊的屬性中,指定進入代理的初始位置。 Enter可被視爲代理人從另一空間進入的「大門」(如Main)。

0

格雷戈裏談論的溝通和運動,但一個可能的「架構」,以代理運動的更普遍的水平上回答和嵌入:

如果你的代理類型AgentAAgentBAgentC與嵌入你說(在他們的'家'AgentC中的AgentBs的人口),那麼每個AgentB實例將自動具有鏈接(鏈接到上層代理)到包含AgentC的被稱爲agentC的實例。

所以,當一個AgentAAgentB收到消息時,你可以這樣做

moveTo(sender.agentC)

jumpTo(sender.agentC.getX(), sender.agentC.getY())

(該sender是一個特殊的關鍵字指發送代理在「On message received」代碼塊中。jumpTo立即移動到某處而不是隨着什麼移動代理商的速度一直在加速。不幸的是moveTo,您可以指定其他代理爲目標,但jumpTo必須使用座標或節點)

請參閱以下幫助部分:

  • AnyLogic的幫助>基於代理的建模>代理交互> 代理之間的通信
  • AnyLogic的幫助>發行說明>什麼在以前的版本中的新> 什麼在AnyLogic 7>鏈接到上一級代理[段]
  • AnyLogic的幫助>基於代理的建模>代理運動> 012的新功能連續空間中的運動
相關問題