【问题标题】:How to stop timeout in service block如何停止服务块中的超时
【发布时间】:2021-05-16 00:26:48
【问题描述】:

我正在为具有各种 SLA 的票务系统建模。该模型必须包含多个具有不同反应时间(从 2 到 32 小时)的服务块。在服务块中,仅应考虑工作时间。因此,在非工作时间和周末时,服务块超时应该停止。你能告诉我我是怎么实现的吗? 非常感谢您!

【问题讨论】:

    标签: anylogic


    【解决方案1】:

    我可以想到两个答案,一个简化但在许多情况下都有效,另一个更高级并且可能更准确:

    1. 简化方法:我会在几小时内设置模型,并保持一切按原样运行而不会停止。因此,在模拟结束时,如果总时间为 100 小时,并且您知道您有 8 小时/天和 5 天/周,那么您将知道总持续时间为 2.5 周。当然,如果您想要特定日期的操作(例如,您想要区分星期一、星期二等),这可能会有限制,或者以后可能会变得更加复杂

    2. 进阶更准确的方法:创建容量按计划定义的资源,并将其分配给您的服务。创建一个时间表并在该时间表中指定工作时间。检查以下链接以了解有关时间表的更多信息。我将此称为更高级的方法,因为您需要确保正确定义时间表并确保模型中的所有元素都得到适当控制(例如非服务块,如源、延迟等)。

    https://help.anylogic.com/topic/com.anylogic.help/html/data/schedule.html?resultof=%22%73%63%68%65%64%75%6c%65%73%22%20%22%73%63%68%65%64%75%6c%22%20

    如果模型相当简单并且建模工作时间足以进行分析,我个人会使用第一种方法。否则,我会选择选项 2。

    最后,我想强调的另一个选项是“暂停/恢复”功能。我只是添加这个,因为你问“如何停止超时”。所以这些函数专门停止和恢复超时。但是您需要定义它们的执行时间(例如通过事件)。

    【讨论】:

    • 艾米莉,非常感谢您的回复!我尝试在服务块中使用挂起/恢复功能并为资源块设置时间表(就像第二种方法一样)。然而,事实上,在非工作时间进来的座席会超时离开。实际上,根据模型,他们在非工作时间超时离开,这是不正确的。能否请您澄清一下,我做错了什么?
    • 如果您对资源块使用调度,则无需手动添加挂起/恢复功能,它会自动为您完成。我猜你的问题是任务抢占。您需要指定在服务超时期间资源不再可用时会发生什么。默认情况下,任务在没有资源的情况下继续。在服务属性中,勾选“任务可能抢占”,选择“等待原始资源”或 wtv 对您有意义并勾选“自动暂停/恢复代理”。我想应该可以解决它。
    • Emilie,打扰一下,但我需要再次澄清,因为我无法构建模型。情况是当资源不可用时,应停止传入代理的超时计时器,直到资源再次可用。对于在资源不可用时到达的代理,超时计时器应该从资源可用的那一刻开始。现在这条规则不起作用了。非常感谢您!
    • 检查我做的这个示例模型。尝试使用注入按钮并观察服务/资源的行为。这不是理想的行为吗? wetransfer.com/downloads/…
    • 他们因超时离开,因为在服务属性中,您添加了 8 小时的超时,这意味着无论资源如何,如果代理在服务队列中等待 8 小时,它将通过超时端口。只需在“高级”选项卡下的服务属性中取消勾选“队列:超时退出”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多