在 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:如何让代理在队列中等待直到它改变状态? (离散事件流程图)