触发事件的任何逻辑

问题描述

据此,我在建模过程中有一个问题。我希望我的代理有一个由时间和条件触发的事件,例如:goToSchool 如果早上 6 点多并且有校车。我很困惑是使用超时触发器(但不能使用条件)还是使用条件(但不能使用超时),或者有没有可能的替代方法

解决方法

在您的示例中,“如果超过 6 点”是一个条件,而不是超时。当您希望事件在确切时间发生时,将使用超时触发器。在您的情况下,虽然“上午 6 点以上”与时间有关,但它仍然是一个条件。所以我会使用具有两个条件的条件触发事件:

getHourOfDay() > 6 && <bus condition>

getHourOfDay() 函数以 24 小时格式返回一天中的小时。

您需要记住一些与条件触发事件相关的重要事项,它们仅在“更改时”进行评估。我建议您仔细阅读此内容:

https://help.anylogic.com/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Fstatecharts%2Fcondition-event.html

我的建议是在控制公交车到达的块中使用 onChange() 函数,以便在每次公交车到达时评估条件。