【问题标题】:Temporary adjustment of delay time延迟时间的临时调整
【发布时间】:2022-01-25 13:51:51
【问题描述】:

我有以下我无法解决的问题:

我有一个安全点(作为延迟添加)每半小时设置一个 15 分钟的休息时间。休息后,保安人员加快速度,直到排队少于10pp。

我想对此建模如下:30 分钟后 delay.set_capacity(0) 和 15 分钟后再次 delay.set_capacity(1) 的状态图休息。为了提高休息后的速度,我添加了一个带有条件的附加状态:queue.size()>10 现在我想设置动作,使延迟函数将延迟时间从指数( 1/10) 到指数 (1/5),只要 queue.size()>10

有人使用过操作框中的哪个功能吗?或者你会建议一个不同的功能?

【问题讨论】:

  • 只需使用返回双精度的实际函数(来自代理库)。根据需要对其进行编码并在延迟属性中调用它以获得实际延迟持续时间......希望这会有所帮助

标签: anylogic


【解决方案1】:

由于您正在使用,或者至少想要使用状态图,我建议您采用以下设计,您可以在工作状态中使用复合状态来指示安全代理是快速工作还是正常工作,并通过消息转换来让它从一种状态转移到另一种状态。

建议使用消息转换并根据需要触发它,而不是使用条件状态来检查代理内部的每次更改,因为这可能是一项计算成本很高的练习。

我假设您已经为工作和中断的不同输入操作实施了正确的容量设置

现在您只需要在每次代理进入队列和每次退出延迟块时发送消息,当然,根据状态图的状态查看延迟时间。 截图如下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2013-11-22
    • 2011-03-26
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多