在 Anylogic 中创建已在队列中的代理集合

Posted

技术标签:

【中文标题】在 Anylogic 中创建已在队列中的代理集合【英文标题】:Create collection of agents already in queue in Anylogic 【发布时间】:2021-11-08 09:43:43 【问题描述】:

我通过在排队环境中等待客户来模拟放弃。我假设如果一个人注意到在他们前面排队的人已经离开了队列(以及其他事情,比如他们自己的排队时间),他们就会放弃排队。为此,我需要在有新人加入队列时捕获已经在队列中等待的人的详细信息。我想我需要在客户代理中创建一个集合,我可以将他们前面的代理详细信息存储在队列中。然后,我可以使用代码通过队列块的 on enter 操作“填充”这个集合。但我不确定如何进步。我正在努力解决如何在队列中查找代理的 ID 并收集其参数的值。任何帮助将不胜感激!谢谢。

【问题讨论】:

请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

当新代理进入队列时,您可以使用 for 循环循环遍历队列中的所有代理,并将其添加到代理内部的变量中。

举个简单的例子。

有一个自定义代理类型 MyAgent 它有一个 ArrayList 类型的集合,接受 MyAgent 类型的对象。

现在,当代理进入队列时,我可以通过以下方式将其前面的代理存储在队列中

请注意 for 循环的限制是 i < self.size()-1,如果您不添加 -1,代理会将自己添加到列表中。 (假设您的队列是 FIFO(先进先出),新代理将是列表中的最后一个。

【讨论】:

谢谢 Jaco - 我做到了,它奏效了。我正在使用一个服务块,所以我做了一些微调“agent.agentsInQueue.add(self.queueGet(i));

以上是关于在 Anylogic 中创建已在队列中的代理集合的主要内容,如果未能解决你的问题,请参考以下文章

SelectOutPut (AnyLogic) 中代理类型的条件

如何在 GIS 空间中的 anylogic 中创建家庭和本地连接?

Anylogic:如何让代理在队列中等待直到它改变状态? (离散事件流程图)

如何在 Anylogic 中创建与特定代理的连接并为代理显示动画连接

在 Anylogic 中与单个块内的两个代理进行通信

与代理连接时清空集合 Anylogic