如果 QueueTime 超过预选值,则让行人转移到另一个队列
Posted
技术标签:
【中文标题】如果 QueueTime 超过预选值,则让行人转移到另一个队列【英文标题】:Make pedestrians divert to another queue if QueueTime Exceeds a preselected Value 【发布时间】:2022-01-04 00:58:10 【问题描述】:编辑版本: 我实际上是在为机场值机终端建模。到目前为止它工作正常,但另外我仍在尝试实现一个功能,如果队列时间超过预选值(例如队列中已经有 15 名乘客),我的行人不会进入服务队列,因此步行到在这个繁忙时间打开的某种备份服务。
这是我的方法:
-
变量
QueueSize
永久返回队列中的实际乘客人数。
每次ped进入pedservice块CheckInEco
,函数waitingTime()
就会启动:
QueueSize = CheckInEco.size();
if (QueueSize > 15) CheckInEco.cancel(ped)
所以,一旦队列中的代理超过 15 个,16 号应该绕过并移动到备用服务块,我将连接到 CheckInEco 服务的 ccl 端口。但是在构建模型时,我收到以下消息:ped cannot be resolved to a variable
?
根据Anylogic Help,应该可以使用这个cancel - call
,但我对它的经验并不丰富。也许有人可以帮助我?
【问题讨论】:
您已经在跟踪队列中花费的时间。您也可以轻松计算平均值。为什么不在达到该阈值时使用简单的 selectOutput 块并将行人发送到备份服务? 带有 selectOutput 块的方法会很棒,我也考虑过。但我的问题是,如何检索DataSet中记录的actualWaitingTime? 我不知道你为什么不使用普通变量而不是数据集? 我显然想得太复杂了。基本上可以持续更新变量(例如actualWaitingTime)并将其用作SelectOutput-Block的条件吗? 【参考方案1】:如果已经有超过 16 个行人,您可以简单地使用选择输出块来防止行人进入服务块。
您最初的问题与等待时间有关,您应该遵循完全相同的方法。但是随着等待时间的增加,它会变得更加复杂,因为您不想从模拟开始计算平均等待时间......所以您需要决定是否要花费最后 10 分钟、1 小时等并执行您想在队列中包括座席的当前等待时间。由于这已经是问题,我不打算在这里添加它,如果仍然是这种情况,也许可以提出一个新问题。
【讨论】:
你是对的,队列中乘客数量的变体比通过等待时间更容易实现。我现在已经对此进行了测试,它对我的项目来说足够准确。谢谢 太棒了。如果你觉得它有帮助记得接受我的回答,如果你觉得它值得点赞 ;-)以上是关于如果 QueueTime 超过预选值,则让行人转移到另一个队列的主要内容,如果未能解决你的问题,请参考以下文章