在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
必须使用坐标或节点)
请参阅以下帮助部分: