1

全部。

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

RunEnvironment.getInstance()endAt(5000)

它在 4 分 44 秒处停止。我遇到了这个答案,但这似乎不是我想要的(我可能错了)。有没有更好的方法来实现这一目标?我对RePast很陌生,并且对的概念感到困惑。

谢谢你。

4

1 回答 1

2

这是最近一篇论文的引用。可能有帮助的刻度概念。

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

如果您想在经过一定时间(例如,5 分钟)后安排停止,您可以安排一个在第一次调用时获取时间的操作,然后检查是否经过了正确的时间量。那时,您可以调用RunEnvironment.getInstance().endRun(). 如何进行时间算术是一个 Java 问题,所以如果你在谷歌上搜索“Java time elapsed”或类似的东西,你应该会得到答案。

至于调度操作,您需要创建一个实现 IAction 的类(https://repast.github.io/docs/api/repast_simpony/repast/simpony/engine/schedule/IAction.html)并将其安排在任何时间间隔似乎合适。

于 2021-04-14T13:32:36.227 回答