代码之家  ›  专栏  ›  技术社区  ›  akarnokd

如何设计时钟驱动多智能体仿真系统

  •  3
  • akarnokd  · 技术社区  · 15 年前

    我想为一个真实的字制造过程创建一个多代理仿真模型来评估一些调度规则。仿真需要生成事件日志,以评估调度规则与实际生产事件日志的时间效应。

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

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

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

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

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

    因此,对于通信来说,新事件可以触发代理在其原始“下次”事件到达之前做一些事情。例如,代理当前在持续一小时的资源上被阻止。但是,另一个更高优先级的代理立即需要该资源,并要求第一个代理释放该资源。

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

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

    更新

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

    1 回复  |  直到 13 年前
        1
  •  4
  •   Roland Ewald    15 年前

    这个问题听起来应该用 平行 离散事件模拟-您计划实现的中介代理(“涉及到每个消息”、“发送消息和计时器计时事件”)现在似乎正在执行离散事件模拟器的工作。通过并行使用更多这样的模拟器,然后使用同步算法来保持因果关系等,您可以使这个比例达到所需的问题大小。 this book 详情请参阅。当然,这需要付出相当大的努力,而且您最好先尝试序列算法。

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

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