gpt4 book ai didi

java - 离散事件仿真中的时钟

转载 作者:行者123 更新时间:2023-11-30 05:51:06 30 4
gpt4 key购买 nike

我正在为我的离散事件模拟开发一个时钟类。我已经将事件保存在 PriorityQueue 中,因此根据哪个事件具有最近的事件时间进行排序。但是有一件事我无法理解。在我读过的关于离散事件模拟的论文中,明确指出时钟从一个事件跳到另一个事件,因此没有必要有一个“滴答作响”的时钟。

但是这将如何工作,我有一个 EventScheduler 类,它在 PriorityQueue 中保存事件。因此,在确定下一个事件发生的时间之后,我是否可以只调用 EventScheduler 在下一个事件的给定时间调用的时钟中的“setTime”方法?但它永远不会真正像时钟一样运行,它只会继续跳到下一个事件?

我在想时钟运行(滴答声),然后它知道事件何时会从 EventScheduler 发生,当时钟到达那个时间时,它会处理事件、更新系统状态并可能生成输出事件。

抱歉有点不清楚,但我只对有关时钟工作原理的任何提示感兴趣,它是滴答作响,然后只在事件发生时“做”事情,还是只是从一个事件跳到另一个事件?

此外,您建议我可以使用 Java 中的任何内置功能吗?例如。定时器类

最佳答案

这个想法是没有不进入你的事件队列就不会发生。想一想:当它“滴答”但没有任何事件时,你的时钟在做什么?没有什么。那么为什么要处理这些时间呢?

所以是的,您只需在队列中从一个事件转到另一个事件。实际上,离散事件中的“时钟”与您构建的几乎完全相同:按“时间顺序”排序的优先级队列和某种“现在”感,即队列中的位置。

如果您从头队列中弹出,那么“现在”可能只是队列的头,您就完成了。通常,更复杂的模型可能具有更多功能,例如能够检测何时尝试在“现在”之前安排事件——例如,这表明模型响应太慢:在现实世界中,它总是会“迟到”并 catch 整个模拟中发生的事情。

如果你有一个需要每秒更新的模型,那么你必须将这些事件放入队列中,否则它们就不会发生。通常,对于非常适合离散事件仿真模型的问题(在我的职业生涯中,这是基于物理的建模),这不是问题:您的模型通常在没有事件时“空闲”,并且可以计算它们的状态在未来没有事件改变其状态的任何特定时间。

如果您的模型不是这样,那么离散事件建模可能不太适合您的问题领域。

关于java - 离散事件仿真中的时钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13187142/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com