【问题标题】:Average number waiting and waiting time in a queue队列中的平均等待数和等待时间
【发布时间】:2020-05-04 13:51:48
【问题描述】:

我正在尝试在我的模型中为队列(或服务块)实现 2 个指标;平均等待时间和平均等待人数。平均等待时间;我可以在“On Enter”操作中为每个代理添加时间戳,然后计算“On capture unit”中的增量,例如time()-agent.entryTime;。该值可以添加到数据集中,然后可以获得其平均值。关于如何实施平均人数等待指标的任何建议。我想使用这些指标来识别我的流程中的瓶颈。提前致谢。

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    我通常会做以下其中之一:

    1. 简单:myQueue.statsSize.mean()
    2. 创建一个统计块并打开“记录到数据库”选项(位于统计块的底部)。该值可以是myQueue.size()
    3. 通过模拟估计队列平均时间,通过Little’s law估计平均等待人数LL = lambda * W。其中 lambda 是代理的到达率,W 是代理在队列中花费的平均时间。

    利特尔定律适用于排队等候的平均人数和系统中的平均人数(排队中加上服务中)。

    【讨论】:

    • 实施了您的建议 1 并且有效。我还尝试了你和本杰明建议的myQueue.size()。这种方法对事件的重复时间很敏感。我可能会收集很多 0 值,从而影响我的平均值。除非我在概念上遗漏了什么。
    • 没错。我也更喜欢选项 1。如需额外注意,您可以将 myQueue.statsSize.mean() 放在输出块(分析面板)中,并将“计算”选项选中为“模拟结束”。
    • 如果您不介意帮助我,我有一个后续问题。如何访问服务块中嵌入队列的此统计信息,或者这是不可能的?
    • 由于服务块有一个嵌入式队列块,您可以按如下方式收集该队列的统计信息myService.sieze.queue.statsSize.mean()。这并不明显,AL 帮助和代码完整没有提到任何这些。将来 AL 提供的一些文档会很有帮助。
    • 如果您正在使用 AnyLogic 研究队列,请尝试阅读 Arash Mahdavi 的《使用 AnyLogic 进行以流程为中心的建模的艺术》一书。这本书是免费的at AnyLogic site,Mahdavi 大部分时间都在讨论使用 AnyLogic 建模排队模型。这是一种极好的材料。
    【解决方案2】:

    创建一个循环计算队列中代理数量的事件,例如myQueue.size()

    将该值添加到另一个 DataSet(或 Statistics 对象,甚至更好),您可以获得您的平均值 :-)

    【讨论】:

    • 感谢您的建议。我还偶然发现了myQueue.statsSize.mean(),它也可能会起作用。如果使用统计对象,我无法识别贡献该值的队列块,因为它只接受数字。看来我可能必须创建一个数据库(或文本文件)并插入值。
    • 正确,如果这很重要的话。或者每个队列有几个统计对象。或者 LinkedHashMap...
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2020-03-30
    相关资源
    最近更新 更多