2017-08-09 52 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的新功能连续空间中的运动