在DES的大多数示例中,我看到一个事件触发状态更改,并可能在将来调度一些新事件。但是,如果我模拟一个台球游戏,这不是全部故事。
在这种情况下,感兴趣的事件是球和彼此之间以及与垫子的碰撞。状态由每个球的位置和速度组成。
在碰撞或射击之后,我将首先重新计算一个新状态,然后我会计算所有可能的未来(第一次)碰撞。奇怪的是,我将必须丢弃之前安排的所有事件,因为这些事件描述的冲突只有在状态改变之前才可能。
所以似乎有两种做DES的方法。
这很难相信。
Billiard示例还具有令人恼火的属性,即未来事件是从系统的全局状态计算出来的。所有球都需要考虑,而不仅仅是参与碰撞或击球的球。
我想知道我的Billard示例是否与经典DES不同。无论如何,我正在寻找推理关于此类问题的正确方法,即
一个明显的答案是“这一切都取决于你的问题领域”。一个更精确的答案或指向文学的指针将非常感激
答案 0 :(得分:2)
状态由每个球的位置和速度组成。
一旦你开始工作,你就需要为每个球添加旋转和旋转轴,因为正确使用旋转是专业人士与业余爱好者的区别。
是的,这是真的,所以根本不打算安排它们。见下文。我将不得不丢弃之前安排的所有活动
所以似乎有两种方法可以做DES (两者都涉及到 事件安排)
实际上,还有第三种方式。只需搜索问题空间以确定第一个 future事件的时间,然后跳转到该时间。无需安排活动。您只关心将首先发生的一个事件。
所有球都需要考虑
是的,这是真的。首先考虑其中一个球并确定其下一次碰撞的时间。然后那个时间对其他球可以移动的距离设置上限。例如,假设第一个球在0.1秒后会发生碰撞。那么第二球的问题是,"第二球是否有可能在0.1秒内击中任何东西?"如果没有,那么继续前进到第三球。如果是这样,那么将时间限制减少到第二个球碰撞所需的时间,然后转到第三个球。
一个明显的答案是"这一切都取决于你的问题领域"
那是真的。我的评论仅适用于您的台球模拟示例。对于其他问题域,适用不同的规则。
答案 1 :(得分:2)
您的示例与其他DES模型不同,也不同。
您省略了第三个选项,即当某些事件发生时,将取消特定的其他事件。例如,在流行病模型中,您可以安排感染事件。每个感染事件随后安排1)患者的关键时间,超过该关键时间死亡变得不可避免,具有一定的概率和一些延迟,对应于患者的人口统计学,该人口统计的死亡率和疾病的进展速度;或2)患者的康复。如果医疗干预根据某种分类策略排队,则治疗可能会或可能不会在关键时间之前发生。如果没有,则计划死亡,否则取消关键时间事件并安排恢复事件。
这些类型的事件调度,事件取消和参数化,以便您可以识别调度/取消适用的实体都可以通过称为"事件图表的符号来描述,"由Lee Schruben创建。参见' Schruben,Lee 1983.使用事件图进行模拟建模。 ACM的通讯。 26:957-963'对于原始论文,或查看可在线免费获得的tutorial from the 1996 Winter Simulation Conference。
您可能还想看一下2005年冬季模拟大会上出现的名为" Simple Movement and Detection in Discrete Event Simulation"的论文。