Scala 如何设计时钟驱动的多智能体仿真

Scala 如何设计时钟驱动的多智能体仿真,scala,simulation,actor,Scala,Simulation,Actor,我想为真实的word制造过程创建一个多agent仿真模型,以评估一些调度规则。仿真需要生成事件日志,以评估调度规则相对于真实制造事件日志的时间效应 如何将“当前模拟时间”融入这种多代理、消息传递密集型模拟中 背景: 经典的离散事件模拟(可以很好地处理时间推进)不能在这里应用,因为系统中的代理代表相对复杂的行为和路由需求,加上调度规则要求它们频繁通信。这种和其他过程的复杂性也排除了集中式调度方法 在制造科学中,有数千篇论文使用多智能体仿真来解决一些与制造相关的问题。然而,我还没有找到一篇论文来详细

我想为真实的word制造过程创建一个多agent仿真模型,以评估一些调度规则。仿真需要生成事件日志,以评估调度规则相对于真实制造事件日志的时间效应

如何将“当前模拟时间”融入这种多代理、消息传递密集型模拟中

背景:
经典的离散事件模拟(可以很好地处理时间推进)不能在这里应用,因为系统中的代理代表相对复杂的行为和路由需求,加上调度规则要求它们频繁通信。这种和其他过程的复杂性也排除了集中式调度方法

在制造科学中,有数千篇论文使用多智能体仿真来解决一些与制造相关的问题。然而,我还没有找到一篇论文来详细描述这些模拟的内部工作或实现细节

不幸的是,在系统中使用最短的离散时间步进处理时间可能不可行,因为处理时间的范围在0.1到24小时之间。我的模拟可能会在以后的项目中用于假设评估,因此模拟需要尽可能快地运行-夜间模拟运行没有选项

问题规模约为500个资源和1000-10000个产品代理,其中大部分已完成,且未参与任何进一步的沟通或资源占用

因此,作为通信的结果,新事件可以触发代理在其原始“下一次”事件到达之前执行某些操作。例如,一个代理当前在一个资源上被阻止了一个小时。但是,另一个优先级较高的代理立即需要该资源,并要求第一个代理释放该资源

在某种意义上,我需要一种方法来创建经典消息传递代理模拟和离散事件模拟的混合

我考虑了一个参与每条消息的中介代理—一个消息路由器和时间执行器,它发送消息和计时器滴答事件。此外,中介代理还为各种代理保留下一个事件时间的列表。然而,我觉得应该有更好的方法来解决我的问题,因为这个概念给调解人带来了巨大的压力

更新


虽然花了一段时间,但我似乎成功地创建了一个迷你框架,并将DES和代理概念结合到了一起。我相信这并不是什么新鲜事,但至少是独一无二的:如果你感兴趣的话。

这个问题听起来似乎应该通过使用并行离散事件模拟来解决——你计划实现的中介代理('涉及每一条消息','发送消息和计时器滴答事件')现在似乎正在做离散事件模拟器的工作。通过并行使用更多此类模拟器,然后使用同步算法来维护因果关系等,您可以将此规模扩大到所需的问题规模(有关详细信息,请参阅)。当然,这需要付出相当大的努力,最好先尝试一下顺序算法

扩充通过事件相互通信的逻辑过程(=代理)的经典DES视图的一个很好的方法是,将用于描述离散事件系统的其他形式主义的一些思想混合在一起,例如。在DEVS中,每个实体都可以指定其处于特定状态的持续时间(例如,代理阻止资源),并且只会被传入消息中断(然后相应地更改其状态,例如代理释放资源)


顺便问一句,您认为在何种意义上,代理过于复杂,无法用离散事件模拟来处理?如果您将每个代理视为一个逻辑过程,那么从模拟的角度来看,它有多复杂其实并不重要——或者我这里有什么错误吗

多谢各位。你说得对,这个问题离DES更近了。我可能把那句话的措辞弄错了。我的工作是一个研究项目的一部分,我的大学在这个项目中进行基于DES的模拟。我的任务是找出并实现一种基于代理的方法来解决根本问题。然而,DES的人不打算包括我想通过模拟实现的那种决策或优化。谢谢你的解释和参考。+1对于顺便说一句,我不认为DES会太复杂