我正在使用AnyLogic构建离散事件模型。我想为进入流程的每个代理分配唯一的ID。我包含了一个变量ID和另一个变量clientID。当实体获得“this.clientID = ID ++;”时在出口处。我注意到有多个代理正在获得完全相同的ID。有没有办法在每个代理进入系统时为每个代理分配唯一ID?
答案 0 :(得分:1)
每个代理都有唯一的id,它是在内部生成的,可以使用getId()
函数返回。
也可以按照您的描述生成唯一ID。然后,您应该在画布上使用clientID
变量的自定义代理类型。 Source
块应该创建此类型的新代理。 Main
在canvas上应该有一个名为ID
的变量。在退出时,Source
块的操作代码应为:agent.clientID = ID++;
BTW,getIndex()
调用不安全,因为它返回了人口中的代理索引。如果人口规模发生变化,人口中的代理人指数也可能发生变化。 getIndex()
可能会为不同的代理返回相同的索引,以防它们位于不同的群体中。最后,getIndex()
始终为独立代理返回-1
。
答案 1 :(得分:0)
您需要了解基于代理的工作方式:
如果代理持有变量" ID",则每个代理都有自己的值" ID"。因此,当每个人单独执行" ID ++"时,他们都会得到相同的值。代码。
每个代理在创建时都已经拥有AnyLogic分配的唯一ID。您可以使用" myAgent.getIndex()"。
来检索它希望这会有所帮助