首页 文章

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

提问于
浏览
0

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

我试过:“在指定点”:X = this.getLongitude()...“在节点中”:这个

但没有运气 . 有任何想法吗?这有意义吗?

2 回答

  • 0

    它可以通过多种方式实现 . 最常见的是基于流程图:代理在 MainExit 块处留下流程图 . 在 Exit 块的On Exit操作中,调用:

    agentC.enter.take( agent );

    AgentC 类型应该有 Enter 块 . 在块的属性中,指定输入代理的初始位置 . Enter 可以被视为从另一个空间(如 Main )进入的代理商的"gates" .

  • 0

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

    如果您的代理类型是 AgentAAgentBAgentC ,并且正如您所说( AgentB 在其'home' AgentC 中填充),那么每个 AgentB 实例将自动拥有一个链接( Link to upper level agent )到嵌入 AgentC ,称为 agentC .

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

    moveTo(sender.agentC)

    要么

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

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

    请参阅以下帮助部分:

    • AnyLogic帮助>基于代理的建模>代理交互>代理之间的通信

    • AnyLogic帮助>发行说明> AnyLogic 7中的新功能's new in previous releases > What'>上级代理的链接[部分]

    • AnyLogic帮助>基于代理的建模>代理移动>连续空间中的移动

相关问题