我正在使用Akka演员来模拟现实世界的情况。这取决于时间,所以我需要一种方法来介绍一个模拟时间的想法。例如,1s real time = 1ms 模拟时间。通常,消息按照发送顺序到达(至少使用默认调度程序和本地)。但是,我需要它们根据模拟时间按顺序到达。
远期的消息可以在不久的将来发送,因为它包含模拟的时间延迟。邮件附带sent
字段,在发送邮件时提供模拟时间。
例如,我可以阻止将来发布的消息吗?通过在actor中保留等待列表并在适当的模拟时间到达时释放消息?
您建议使用其他任何方法吗?
答案 0 :(得分:1)
在网上搜索"离散事件模拟"。 一般来说,实时与模拟时间没有关系,例如" 1s实时= 1ms模拟"。相反,模拟时间使用优先级队列建模,其中优先级被视为模拟时间。目标地址旁边的每条消息都有时间值,表示必须到达的模拟时间。首先将所有消息路由到优先级队列,然后模拟器将模拟时钟的读数更改为队列中最近的存在,与实时无关。为该时间安排的所有消息都被路由到目的地,被处理,导致新消息被路由到优先级队列,然后时钟被移动到消息中引用的下一次。
由于消息发送的界面包含模拟时间的值,因此它与Akka界面不同,因此您不能直接使用Akka来完成任务。查看List of discrete event simulation software以选择合适的库。