【问题标题】:Howto design a clock driven multi-agent simulation如何设计时钟驱动的多智能体仿真
【发布时间】:2010-11-05 16:40:57
【问题描述】:

我想为真实的制造过程创建一个多智能体模拟模型,以评估一些调度规则。模拟需要生成事件日志,以评估调度规则与真实制造事件日志相比的时间效应。

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

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

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

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

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

因此,作为通信的结果,新事件可能会在其原始的“下一次”事件到达之前触发代理做某事。例如,代理当前在持续一小时的资源上被阻止。然而,另一个更高优先级的代理立即需要该资源,并要求第一个代理释放该资源。

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

我认为每个消息都涉及一个中介代理 - 一个消息路由器和时间执行器,它围绕消息和计时器滴答事件发送。中介代理还保留各种代理的下一个事件时间列表。但是,我觉得应该有更好的方法来解决我的问题,因为这个概念给中介代理带来了巨大的压力。

更新

花了一些时间,但似乎我设法创建了一个迷你框架并将 DES 和代理概念结合在一起。我敢肯定它不是什么新鲜事,但至少是独一无二的:http://code.google.com/p/tidra-framework/,如果你有兴趣的话。

【问题讨论】:

    标签: scala simulation actor


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。你是对的,这个问题更接近于 DES。我可能用错了那句话。我的工作是我的大学进行基于 DES 模拟的研究项目的一部分。我的任务是找出并实施基于代理的方法来解决潜在问题。然而,DES 人员并不打算在我的模拟中包含我想要实现的那种决策或优化。
    • 感谢您的解释和参考。
    • BTW 部分 +1,我看不出它对 DES 来说太复杂了
    猜你喜欢
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多