如何将代理主要移动到AnyLogic中其他代理中的代理?

时间:2017-08-09 09:17:43

标签: agent anylogic

在AnyLogic中...我正在建立一个模型,其中一旦代理B发送A消息,代理A(住在Main)将移动到代理B(住在另一个代理C,例如家中)。 设置"初始位置"时遇到麻烦。代理商B. 我怎样才能指出他特别的家乡" (特工C)?

我试过了: "在指定点":X = this.getLongitude()... "在节点":这个

但没有运气。 有任何想法吗?这有什么意义吗?

2 个答案:

答案 0 :(得分:0)

它可以通过多种方式实现。最常见的是基于流程图:代理在MainExit块处留下流程图。在Exit阻止的退出操作中,请致电:

agentC.enter.take( agent );

AgentC类型应该Enter阻止。在块的属性中,指定输入代理的初始位置。 Enter可被视为" gate"从另一个空间进入的代理人(如Main)。

答案 1 :(得分:0)

格雷戈里谈到了一个可能的架构'对于沟通和运动,但是,在更一般的代理人运动和嵌入层面回答:

如果您的代理类型为AgentAAgentBAgentC,则按照您的说法进行嵌入(AgentB s在其家中的人口数量AgentC { {1}})然后,每个AgentB实例都会自动为名为AgentC的嵌入agentC提供一个链接(指向上级代理的链接)。

因此,当AgentA收到来自AgentB的消息时,您可以执行类似

的操作

moveTo(sender.agentC)

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

sender是一个特殊的关键字,指的是发送代理"收到消息"代码块。jumpTo立即移动到某个地方,而不是以代理的速度移动不幸的是,moveTo允许您指定另一个代理作为目标,但jumpTo必须使用坐标或节点。)

请参阅以下帮助部分:

  • AnyLogic帮助>基于代理的建模>代理商互动> 代理人之间的沟通
  • AnyLogic帮助>发行说明>以前版本中的新功能> AnyLogic 7中的新功能>链接到上级代理[部分]
  • AnyLogic帮助>基于代理的建模>代理运动> 连续空间的运动