在AnyLogic中,我正在构建一个模型,一旦Agent B向A发送消息,Agent A(居住在Main中)将移动到Agent B(居住在另一个Agent C中,例如home)。我在设置代理B的“初始位置”时遇到了麻烦,我如何才能指出他特定的“家”(代理C)?
我尝试过:“在指定点”:x= this.getLongitude() ..."in the node":this
但没那么走运。有什么想法吗?这有什么意义吗?
发布于 2017-08-09 20:30:29
它可以通过几种方式实现。最常见的是基于流程图的: agent通过Exit块将流程图留在Main。在Exit块的On Exit操作中,调用:
agentC.enter.take( agent );
AgentC类型应包含Enter块。在块的特性中,指定输入代理的初始位置。Enter可以被认为是从另一个空间(如Main)进入的代理的“门”。
发布于 2017-08-10 07:12:14
Gregory谈到了一种可能的通信和移动的“架构”,但要在更一般的智能体移动和嵌入级别上回答:
如果您的代理类型是如您所说的具有嵌入的AgentA、AgentB和AgentC (在其“主”代码中填充AgentB),那么每个AgentB实例将自动有一个链接(指向上层代理的代码链接)指向名为< AgentC >D9AgentC>的嵌入代码。
因此,当AgentA接收到来自AgentB的消息时,您可以这样做
moveTo(sender.agentC)
或
jumpTo(sender.agentC.getX(), sender.agentC.getY())
( sender是一个特殊的关键字,指的是“收到消息时”代码块中的发送代理。jumpTo会立即移动到某个地方,而不是以代理的速度移动。不幸的是,moveTo允许您指定另一个代理作为目标,但jumpTo必须使用坐标或节点。)
请参阅以下帮助部分:
agents
https://stackoverflow.com/questions/45586467
复制相似问题