Anylogic:如何让代理在队列中等待直到它改变状态? (离散事件流程图)

Posted

技术标签:

【中文标题】Anylogic:如何让代理在队列中等待直到它改变状态? (离散事件流程图)【英文标题】:Anylogic: How to keep an agent waiting in queue until it changes state? (Discrete Events flowchart) 【发布时间】:2020-02-25 08:20:14 【问题描述】:

我开始将 Anylogic 用于模拟类,为此我需要对以下行为进行建模:有一个代理流进入 FIFO 队列,然后进入服务器(我延迟建模块),一次一个。代理有两种状态(分别称为 A 和 B),如果代理在状态 A 中到达队列末尾,则必须等待返回到状态 B 才能进入服务。

我认为在队列和延迟块之间有一个可容纳一个代理的等待块可能会解决这种情况。但我不知道如何让等待块在代理更改状态后立即释放它。

欢迎使用其他方法。我只需要在延迟块之前保留代理,只要它处于状态 A,但不再需要。提前致谢。

【问题讨论】:

【参考方案1】:

是的...在你的队列块之后一个容量为 1 的等待块是我要做的。

现在,当您的代理进入状态时,在该状态 B 的进入操作上,您执行以下操作:

if(currentBlock().equals(main.waitBlock) && main.service.size()==0)
    main.waitBlock.free(this); 

您还需要在等待块的“on enter”中执行此操作:

if(agent.inState(agent.stateB) && service.size()==0)
    self.free(agent);

另外,以防万一,在 main 中添加 0 个您的代理类型,以便能够使用 main。在您的代理状态代码中。

【讨论】:

以上是关于Anylogic:如何让代理在队列中等待直到它改变状态? (离散事件流程图)的主要内容,如果未能解决你的问题,请参考以下文章

Anylogic,动画队列

Anylogic自定义代理未加载?

根据队列等待时间更改代理颜色

服务图中的代理数量在服务块队列中的等待时间?任意逻辑

在 Anylogic 中创建已在队列中的代理集合

AnyLogic - 初学者