如何设计时钟驱动的多主体仿真 [英] Howto design a clock driven multi-agent simulation

查看:108
本文介绍了如何设计时钟驱动的多主体仿真的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to create a multi-agent simulation model for a real word manufacturing process to evaluate some dispatching rules. The simulation needs to produce event logs to evaluate time effect of the dispatching rules compared to the real manufacturing event logs.

如何合并当前模拟时间

背景:

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

Background:
The classical discrete event simulation (which handles the time-advancement nicely) cannot be applied here, as the agents in the system represent relatively complex behavior and routing requirements plus the dispatching rules require them to communicate frequently. This and other process complexities rule out a centralized scheduling approach as well.

在制造科学领域,有成千上万的论文使用多智能体仿真来解决某些与制造相关的问题。但是,我还没有找到描述所需模拟的内部工作原理或实现细节的论文。

In the manufacturing science, there are thousands of papers using a multi-agent simulation for their solution of some manufacturing related problem. However, I haven't found a paper yet which describes the inner workings or implementation details of these simulations in the required detail.

不幸的是,使用最短的时间进行离散操作由于处理时间的范围介于0.1s和24小时之间,因此在系统中增加时间可能是不可行的。我的仿真可能会在以后的项目中用于假设评估,因此仿真需要尽可能快地运行-过夜仿真运行没有选择。

Unfortunately, using the shortest process time for discrete time stepping in a system might be infeasible as the range of process time is between 0.1s and 24 hours. There is a possibility my simulation will be used for what-if evaluations in a project later on so the simulation needs to run as fast as possible - no option for overnight simulation runs.

问题的大小大约是500个资源和1000-10000个产品代理,其中大多数已经完成,并且没有参与任何进一步的交流或资源占用。

The problem size is about 500 resources and 1000 - 10000 product agents, most of them is finished and not participating in any further communication or resource occupation.

因此,由于通信的结果,新事件可能触发代理在其原始下次事件到达之前做某事。例如,当前在一个小时的资源上阻止了一个代理。但是,另一个优先级更高的代理程序立即需要该资源,并要求第一代理程序释放该资源。

Consequently, in result to the communication new events can trigger an agent to do something before its original 'next time' event would arrive. For example, an agent is currently blocked on a resource lasting an hour. However, another higher priority agent needs that resource right away and asks the fist agent to release that resource.

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

In some sense, I need a way to create a hybrid of classical message passing agent-simulation and the discrete event simulation.

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

I considered a mediator agent that is involved in every message - a message router and time enforcer which sends around the messages and the timer tick events. Also the mediator agent keeps a list of next event times for various agents. However, I feel there should be a better way to solve my problem as the concept puts an enormous pressure at the mediator agent.

更新

花费了一段时间,但似乎我设法创建了一个小型框架并将DES和Agent概念组合为一个。我确定它没有什么新鲜之处,但至少是独一无二的: http://code.google.com / p / tidra-framework / (如果您有兴趣)。

It took a while, but it seems I managed to create a mini-framework and combined the DES and Agent concept into one. I'm sure its nothing new but at least unique: http://code.google.com/p/tidra-framework/ if you are interested.

推荐答案

这个问题听起来好像应该解决。通过使用 parallel 离散事件模拟-您计划实现的中介代理(涉及到每条消息,围绕消息发送和计时器滴答事件)似乎正在完成离散事件模拟器。您可以通过并行使用更多这样的模拟器,然后使用同步算法来保持因果关系等,将其扩展到所需的问题大小。(例如,参见这本书以获取详细信息)。当然,这需要付出相当大的努力,而如果您首先尝试顺序算法,可能会更好。

This problem sounds as if it should be tackled by using parallel discrete-event simulation - the mediator agent you are planning to implement ('is involved in every message', 'sends around messages and timer tick events') seems to be doing the job of a discrete-event simulator right now. You can make this scale to the desired problem size by using more of such simulators in parallel and then use a synchronization algorithm to maintain causality etc. (see, e.g., this book for details). Of course, this requires some considerable effort, and you might be better off by really trying out the sequential algorithms first.

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

A nice way of augmenting the classical DES-view of logical processes (= agents) that communicate with each other via events could be to blend in some ideas from other formalisms used to describe discrete-event systems, such as DEVS. In DEVS, each entity can specify the duration it will be in a certain state (e.g., the agent blocking a resource), and will only be interrupted by incoming messages (and then change its state accordingly, e.g. the agent freeing the resource).

BTW从哪种意义上讲,您认为代理太复杂而无法使用离散事件模拟进行处理?如果您将每个代理视为一个逻辑过程,那么从仿真的角度来看它到底有多复杂并不重要-还是我在这里遇到问题?

BTW In which sense do you think that the agents are too complex to be handled with discrete-event simulation? If you regard each agent as a logical process, it doesn't really matter how complex it is from a simulation point of view - or am I getting something wrong here?

这篇关于如何设计时钟驱动的多主体仿真的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆