繁体   English   中英

Anylogic - 根据条件阻止和解除阻止

[英]Anylogic - Block and unblock based on condition

是否可以在Hold块的阻塞条件中使用简单的真/假语句在条件为真时阻塞代理,如果条件为假则解除阻塞? 如果没有,还有其他方法吗?

如果条件 resourcePool1.idle()==0 为真,我需要Hold块来阻止,否则我需要它来解除阻止。 我尝试了一些不同的陈述,但没有一个有效。

保持块可能不会动态检查您的状况,而只会在开始时检查一次。 您有责任告诉它病情已发生变化。 (否则它需要不断地检查,这是糟糕的设计和计算成本)。

因此,请重新设计您的 model,以便在出现这种情况时显式更新 Hold 块(更改为“手动”模式)。 在您的情况下,每当资源空闲时,它应该检查是否所有资源都处于空闲状态,然后手动更改 Hold 块。

由于您的情况与资源有关,因此我建议以下内容:

在此处输入图像描述

在 on capture 和 on release 字段中,写下以下内容:

if(resourcePool.idle() == 0)
    hold.setBlocked(true);
else
    hold.setBlocked(false);

请注意,由于您在资源池中,因此可以将其名称替换为self

这样,您可以优化您的 model,因为只有在其结果可能发生变化时(即资源被占用或释放时)才评估块条件。 无需在其他时间检查状况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM