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

Create collection of agents already in queue in Anylogic

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

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

举个简单的例子。

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

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

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