如何在特定时间后停止模拟运行NOT tick



all。

无论我的模型做什么,我都希望在运行特定时间(实际时钟时间(后停止模拟。例如,在5、10或15分钟后停止。我尝试在5分钟后使用RunEnvironment.getInstance()endAt(double tick)停止它,如下所示:

RunEnvironment.getInstance()endAt(5000)

它在4分44秒时停止。我找到了这个答案,但它似乎不是我想要的(我可能错了(。有更好的方法来实现这一点吗?我对RePast很陌生,不知何故对tick的概念感到困惑。

谢谢。

这是最近一篇关于tick概念的论文中的一句话,可能会有所帮助。

Repast模拟中的事件由离散事件调度程序驱动。这些事件本身被安排在特定的时间点发生。刻度不一定代表时钟时间,而是代表相关事件的优先级。记号决定事件相对于彼此发生的顺序。例如,如果事件A安排在刻度3,事件B安排在刻度6,则事件A将发生在事件B之前。假设在中间的刻度没有安排任何事情,则A将紧接着B。不存在B发生在3个刻度持续时间之后的固有概念。当然,tick可以并且经常通过模型实现被赋予一些时间意义。例如,交通模拟可以将交通向前移动相当于每个刻度30秒的时间。

如果您想在经过一定时间(例如5分钟(后安排停止,您可以安排一个操作,该操作在第一次调用时获得时间,然后检查是否经过了正确的时间。这时,您可以调用RunEnvironment.getInstance().endRun()。如何进行时间运算是一个Java问题,所以如果你在谷歌上搜索";Java时间流逝";或者类似的事情,你应该得到答案。

就调度操作而言,您需要创建一个实现IAction的类(https://repast.github.io/docs/api/repastrongimphony/repast/simphony/engine/schedule/IAction.html)并安排在任何合适的时间间隔。

最新更新