在 Seize Block 中检查代理

Checking agents in a Seize Block

我想知道如何通过检查队列(位于 Seize Block 中的 Main 中)是否包含具有特定特征(p_contaminated 的患者来触发条件状态图转换(位于代理,患者中) ,这里的布尔参数应该为真,以便触发转换)。即,如果队列包含一个 p_contaminated = true 的 Patient,则该语句应产生 true 以触发转换。

Picture showing the Main chart and the Patient chart. Emphasizing (with red) the mentioned Seize Block and the conditional transition that is wanted to be triggered

永远不要使用条件转换。它们有一些怪癖(不是错误,但如果你没有破解的话很容易以意想不到的方式工作)并且会大大降低你的模型性能。

您可以随时用 message-based 转换替换它们。

对于您的情况,请进行如下设置:

每 x 秒,离开 Treatment 超时转换。检查 AnyPatientFound 中的患者队列,如果为真,则移至 GoToHallway,否则 return 至 Treatment

AnyPatientFound 应该调用布尔函数 anyPatientContaimated 循环遍历队列中的所有患者,如果有任何患者被污染,return 为真,否则为假。