AnyLogic:停止延迟块中特定代理的延迟

Posted

技术标签:

【中文标题】AnyLogic:停止延迟块中特定代理的延迟【英文标题】:AnyLogic: stop Delay for a specific agent in the delay block 【发布时间】:2021-10-22 15:23:38 【问题描述】:

在我的过程中,我有一个无限容量的延迟块。延迟块中的代理只有在调用 stopDelay() 时才会被释放。

如果发生事件,我想为存储在此延迟块中的一些代理停止延迟。 但是,我只想释放 x 个(可以变化的)代理,这些代理在块中的时间最长。 是否有功能/技巧或者我必须手动比较延迟块中所有代理的“getElapsedTime(Agent agent)”?

非常感谢。

【问题讨论】:

【参考方案1】:

我建议将 Delay 块替换为 Wait 块。你也可以给它无限的容量。不要使用 stopDelay(),而是使用 free()。

您的代码看起来像这样(其中 x 是您想要通过的代理数量):

int x = 0;

x = 3;

for(int i = 0 ; i < x ; i++) 
wait.free(wait.get(i));

另外,请确保将代码中的 wait 替换为等待块的名称。

【讨论】:

以上是关于AnyLogic:停止延迟块中特定代理的延迟的主要内容,如果未能解决你的问题,请参考以下文章

相同代理类型的不同延迟时间 (AnyLogic)

Anylogic - 由条件触发的代理位置

如何将代理存储在一个块中,直到运输者可以移动它们?

如何在 Anylogic 的一个流程图中处理不同的材料?

使用参数 (%) 定义代理,main 中的延迟时间基于它。 (任意逻辑)

Anylogic-改善输出