首页 > 解决方案 > AnyLogic:停止延迟块中特定代理的延迟

问题描述

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

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

提前非常感谢。

标签: delayanylogicagent

解决方案


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

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

int x = 0;

x = 3;

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

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


推荐阅读