首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将main中的agents移动到AnyLogic中其他agents中的agents?

如何将main中的agents移动到AnyLogic中其他agents中的agents?
EN

Stack Overflow用户
提问于 2017-08-09 17:17:43
回答 2查看 907关注 0票数 0

在AnyLogic中,我正在构建一个模型,一旦Agent B向A发送消息,Agent A(居住在Main中)将移动到Agent B(居住在另一个Agent C中,例如home)。我在设置代理B的“初始位置”时遇到了麻烦,我如何才能指出他特定的“家”(代理C)?

我尝试过:“在指定点”:x= this.getLongitude() ..."in the node":this

但没那么走运。有什么想法吗?这有什么意义吗?

EN

回答 2

Stack Overflow用户

发布于 2017-08-09 20:30:29

它可以通过几种方式实现。最常见的是基于流程图的: agent通过Exit块将流程图留在Main。在Exit块的On Exit操作中,调用:

agentC.enter.take( agent );

AgentC类型应包含Enter块。在块的特性中,指定输入代理的初始位置。Enter可以被认为是从另一个空间(如Main)进入的代理的“门”。

票数 0
EN

Stack Overflow用户

发布于 2017-08-10 07:12:14

Gregory谈到了一种可能的通信和移动的“架构”,但要在更一般的智能体移动和嵌入级别上回答:

如果您的代理类型是如您所说的具有嵌入的AgentAAgentBAgentC (在其“主”代码中填充AgentB),那么每个AgentB实例将自动有一个链接(指向上层代理的代码链接)指向名为< AgentC >D9AgentC>的嵌入代码。

因此,当AgentA接收到来自AgentB的消息时,您可以这样做

moveTo(sender.agentC)

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

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

请参阅以下帮助部分:

agents

  • AnyLogic section

  • AnyLogic帮助>基于代理的建模>代理交互>
  • AnyLogic之间的通信帮助>发行说明>以前版本中的新增功能> AnyLogic 7中的新增功能>链接到上层代理帮助>基于代理的建模>代理移动>在连续空间中移动
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45586467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档