Anylogic: While(true)等待块的函数



嗨,我试图模拟一个组装站,因此我想协调我的材料与等待块的释放。我的流程包括以下步骤:

3个不同的路径:来源->抓住转运器——>——在移动;等待块——>发布——比;汇编程序(见截图)

模型当所有代理到达他们的块时,我想在等待块中释放我的代理。我现在面临的问题是,三个探员在不同的时间到达。例如,代理1在等待块1中10分钟后到达,代理2和代理3在等待块2和3中5分钟后到达。因此,Agent1应该检查其他代理是否到达了它们的block,然后被释放。Agent 2和Agent 3的动作应该相同,这样3个Agent就可以同时释放。

因此,例如,我在等待块1中添加了一个while(true)循环来证明在等待块2和3中是否存在Agent,然后释放当前等待块中的Agent。根据我的逻辑,我会将此代码也添加到等待块2和3中,以便最终所有代理将被释放

代码在输入"waitblock的字段:

while(true) {if(wait1.size()>0 &wait2.size()>0)wait.free(agent);}

如果我运行模型,我得到以下错误代码:"不可达代码"。说实话,我在使用Java的新,但我想说的代码应该是正确的?也许我比较等待阻塞和释放代理的方法是错误的。无论如何,如果有人能帮助我,我会很高兴:)

thanks in Advance

这不是你怎么做的,你不能使用while(true),除非你运行在一个独立的线程

and操作符也写成&&而不是&

那么在每个代码块的开始处创建一个函数,在这个函数中,你将或多或少地执行以下操作:

if(wait1.size()>0 && wait2.size()>0 && wait.size()>0){
wait.free(wait.get(0));
wait1.free(wait1.get(0));
wait2.free(wait2.get(0));
}

将条件放入while()语句或添加break语句

while(wait1.size()>0 &wait2.size()>0)
; 
wait.free(agent);

否则循环永远不会结束,之后的代码不可达

最新更新