【问题标题】:AnyLogic Discrete Event Model Unique IdentifierAnyLogic 离散事件模型唯一标识符
【发布时间】:2018-01-10 04:22:19
【问题描述】:

我正在使用 AnyLogic 构建离散事件模型。我想为进入流程的每个代理分配唯一的 ID。我包括了一个变量 ID 和另一个变量 clientID。当实体获得“this.clientID = ID++;”在出口处。我注意到有多个代理获得完全相同的 ID。是否有任何方法可以在每个代理进入系统时为其分配唯一 ID?

【问题讨论】:

    标签: events unique anylogic


    【解决方案1】:

    每个代理都有唯一的id,它是内部生成的,可以用getId()函数返回。

    也可以按照您的描述生成唯一 ID。然后,您应该在画布上使用带有 clientID 变量的自定义代理类型。 Source 块应该创建这种类型的新代理。 Main 应该在画布上有一个名为 ID 的变量。 Source 块的 On At Exit 操作代码应为:agent.clientID = ID++;

    顺便说一句,getIndex() 调用不安全,因为它返回人口中的代理索引。如果人口规模发生变化,人口中的代理人指数也可能发生变化。 getIndex() 可能会为不同的代理返回相同的索引,以防它们位于不同的群体中。最后,getIndex() 总是为独立代理返回 -1

    【讨论】:

      【解决方案2】:

      您需要了解基于代理的工作原理:

      如果代理持有变量“ID”,那么每个代理都有自己的“ID”值。因此,当它们中的每一个单独执行“ID++”代码时,它们都会得到相同的值。

      AnyLogic 在创建时为每个代理分配了一个唯一 ID。您可以使用“myAgent.getIndex()”检索它。

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-31
        • 2023-03-25
        • 2015-03-07
        • 2012-04-25
        • 1970-01-01
        相关资源
        最近更新 更多