服务块中的任何逻辑更改序列
Anylogic change sequence in service block
尊敬的 AnyLogic 社区,
我创建了一个模型来评估不同的自主控制方法。
我有不同截止日期的代理人,我希望首先为截止日期最快的代理人提供服务。目前,传入代理未以任何方式排序,而是根据 FIFO 规则提供服务。
是否可以在不添加单独队列的情况下修改服务块中代理的顺序?
非常感谢您的宝贵时间和帮助!
您可以按照 Felipe 的建议将截止日期映射到优先级。
或者,更直接的方法是使用队列优先模式"Agent comparison"。假设您的代理有一个类型为 Date
.
的参数 "myDueDate"
然后你可以简单地安排最紧急的代理如下,基本上是说"prefer the incoming agent1 to an existing agent2 if it is more urgent"。传入代理将跳到每个队列成员之前,直到它找到一个更紧急的成员。
Benjamin 的解决方案很好,但是如果您坚持不想在服务块之前使用队列,并且无论如何都需要使用服务块,那么您可以这样设置优先级:
越接近截止日期,您的代理人的优先级就会越高。
既然你已经在你的代理内部设置了优先级,那么就没有别的事情要做了(除非你想抢占)。
但是如果你想设置优先级可以是这个(优先级是你的代理中定义的参数):
尊敬的 AnyLogic 社区,
我创建了一个模型来评估不同的自主控制方法。
我有不同截止日期的代理人,我希望首先为截止日期最快的代理人提供服务。目前,传入代理未以任何方式排序,而是根据 FIFO 规则提供服务。
是否可以在不添加单独队列的情况下修改服务块中代理的顺序?
非常感谢您的宝贵时间和帮助!
您可以按照 Felipe 的建议将截止日期映射到优先级。
或者,更直接的方法是使用队列优先模式"Agent comparison"。假设您的代理有一个类型为 Date
.
然后你可以简单地安排最紧急的代理如下,基本上是说"prefer the incoming agent1 to an existing agent2 if it is more urgent"。传入代理将跳到每个队列成员之前,直到它找到一个更紧急的成员。
Benjamin 的解决方案很好,但是如果您坚持不想在服务块之前使用队列,并且无论如何都需要使用服务块,那么您可以这样设置优先级:
越接近截止日期,您的代理人的优先级就会越高。
既然你已经在你的代理内部设置了优先级,那么就没有别的事情要做了(除非你想抢占)。
但是如果你想设置优先级可以是这个(优先级是你的代理中定义的参数):