在模型运行期间更新过程建模库中的块大小

问题描述 投票:0回答:1

我有一个使用 AnyLogic 中的流程建模库构建的简单模型。实体在第一个延迟块中停留指定的时间,然后再传递到下一个延迟块。看图片。

enter image description here

当第一个延迟块的 size() 超过 90 个实体时,我想分别将两个块中的实体数量更新为 -10 和 +10。本质上,我想将 10 从第一个推到第二个。

这将复制一个人决定 10 个实体不需要在第一个延迟中等待并且可以跳到下一个延迟的现实生活过程。

我可以设置一个当大小达到 90 时触发的事件。

我知道我可以使用源块将 10 生成到第二个块中,但我找不到将实体推入接收器的方法。

我也尝试过(有点不太可能)使用 Block1.size() = Block1.size()+10 - 这并不会让编译器很高兴。

我发现此文档重新添加或从群体中删除代理(https://anylogic.help/anylogic/agentbased/dynamic-creation-and-destruction.html),但我不需要任何具有自定义参数的代理,因此为简单起见,我想继续在主区工作,而不是创建大量代理。

有没有办法按照我指定的方式更新块的大小?

anylogic
1个回答
0
投票
if(Block1.size()>90){
    List <Agent> agentsInDelay=findAll(Block1,a->true).subList(0,10);
    for(Agent a : agentsInDelay){
        Block1.stopDelay(a);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.