【问题标题】:How to move agents in main towards agents inside other agents in AnyLogic?如何将主要代理移动到 AnyLogic 中其他代理内部的代理?
【发布时间】:2018-01-17 02:16:30
【问题描述】:

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

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

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

【问题讨论】:

    标签: agent anylogic


    【解决方案1】:

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

    agentC.enter.take( agent );

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

    【讨论】:

      【解决方案2】:

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

      如果您的代理类型是 AgentAAgentBAgentC,并且按照您所说的嵌入(AgentBs 在他们的“家”AgentC 中的人口),那么每个 AgentB 实例将自动拥有一个链接(到上层代理的链接)到嵌入 AgentC,称为 agentC

      所以,当AgentA 收到来自AgentB 的消息时,你可以这样做

      moveTo(sender.agentC)

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

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

      请参阅以下帮助部分:

      • AnyLogic 帮助 > 基于代理的建模 > 代理交互 > 代理之间的通信
      • AnyLogic 帮助 > 发行说明 > 以前版本中的新增功能 > AnyLogic 7 中的新增功能 > 链接到上层代理 [部分]
      • AnyLogic 帮助 > 基于代理的建模 > 代理移动 > 在连续空间中移动

      【讨论】:

        猜你喜欢
        • 2021-04-10
        • 1970-01-01
        • 2016-02-17
        • 2022-09-26
        • 1970-01-01
        • 2017-06-20
        • 2019-11-19
        • 1970-01-01
        • 2021-07-01
        相关资源
        最近更新 更多