算法笔记(X) 模拟与仿真

图片

前做过仿真模拟的内容,大约是在交通流问题中初次借助模拟完成对高速公路流量的分析。后来主要对模拟形成了一种固定的看法,当然也是最为直觉的看法,下面我们简单说一说:

我们在现实生活中,往往是基于时间为轴去看待 事物 之变化,所以说 时间是变化的一种形式。于是在以往的模拟思路上我们大约遵循一下模式:

STEP 0:初始化起始时间|

STEP 1:判断时间有未越界?

        是:则停止仿真,进入STEP 3

        否:观察此时的变化,系统做出反应(如迁移状态)

继续.......

STEP 2:推动时间前进(比如向前推进一秒)

STEP 3:做出结果的输出

--------------------------------------------------------

      MODEL   时间驱动仿真 

然以上只是一个最简单的框架,实质上仿真程序要比之更为复杂。如此简单的时间驱动模拟模式往往是我对模拟的设计有了固定的理解,我们总是以时间作为演进的依据,难道没有其他的办法了么?

好,问题并不在于这,我们考察与交通流不同的另一类问题(当然他们两者有着区分,相信这一点)

 

排队模型

 

这一点来自选修《高等计算机网络》一课的感受,当时老师让大家写一个ALOHA协议的仿真,于是我很自信,开始使用上述的模式写代码,写着写着我发现一个问题: 

如果我们将时间轴(当然他是连续的,但因为计算机只能做离散的事情,我们值得割爱)以定时间段进行剖分,在一个时间点上如何决定在此时会有“顾客”,或者更为普遍的说是 有事件发生 么? 

是我们陷入了一个窘境,我们知道 以往模拟我们可以假设事件发生之概率来完成对 某时间点 可能有事发生的评判? 但这个概率又有谁来定呢? 

我们知道 顾客 的来到是服从泊松分布的,但当以时间为轴时,这一概率分布是很难被描述的,(也许有,但我没遇见),遇到这种窘境之原因我们后面会继续探讨。 

{最近看了一篇排队模型模拟的文章,发现确实可以完成泊松分布的产生,原理大概是利用数据确定泊松分布中lambda的值,已产生在单位时间段事件发生的数目。因此回想一下,但是之所以遇到那个窘境是因为我们当时并不知道每个分组发送消息的数据,故无法推算他的分布情况。而对于事件驱动的模拟方式,我猜想可以采用 期望的间隔时间 来完成对事件发生的概率分布进行模拟。想一下,确实自己的看法仍非常的片面 09-09-15}

节课上的很纠结,因为我发现我们曾以为傲的模拟框架在此类问题上却无能为力,老师大概会预知到我们的问题所在,他写了另一种模拟的方式,大概是: 

STEP 0:产生 事件的发生时间

STEP 1:以  事件的发生时间为准,将时间移到此点;

STEP 2:做出对该事件的处理,产生下一事件的发生 时间;

STEP 3:判断时间有未越界

是,终止

否,则以最近事件的发生时间为准,将时间移到此点;进入STEP 1

--------------------------------------------------------------------------

      MODEL   事件驱动仿真 

看完上面的框架以后,我们惊喜的发现,在上面遇到的问题将迎刃而解,

两者的区别在于 驱动方式的差别,尽管两者看起来都是离散的,但实质上,我们观察到两者本质上的不同,在时间驱动框架上,虽然时间被离散化了,但是 其本质在于对于连续系统的离散化,我们发现 交通流 与 排队模型 的区别:

 

前者是连续的系统,而后者是离散系统

 

这一本质差别,在上述问题发生的半年后我才发现之所以时间驱动模型在排队模型中无能为力的原因。我觉得这一点在《离散事件系统建模与仿真(王维平)》一书中就有很透彻的说明,见page 147:(提到的事件调度法即大约是事件驱动的模型) 

事件调度法的“将仿真时钟推进到下一最早发生时刻”体现了仿真时钟的推进机制,是将仿真时钟推进到下一最早事件的发生时刻。它与连续系统仿真中时间推进方法- 固定时间增量法不同,反映了离散系统状态仅在离散时刻上发生变化的特点,这种时间推进方法为离散系统仿真策略所普遍采用,成为下一事件增量法,简称为 事件增量法。 

看了上文的描述我们大概清晰的观察到 连续系统模拟 与 离散系统的差异。

 

!事情还没完,现在还有些迷惑....那就是 归根结底 我为什么会形成 这种对时间驱动的偏执呢? 我又是在交通流模型中使用了什么一种方法? 需求这个问题的答案往往会对问题的涉及领域有了很大的拓展。是的, 

时我用的是 元胞自动机 模型对高速公路上车辆进行模拟的。我想很多人都对他并不陌生,也即是 我们曾说过的 wolfram 博士推崇这种离散的仿真模型,并称之为 一种新科学(NKS)

之所以如此,我们可以想象一下 当遇到一个连续系统时 我们往往建立微分方程进行对其的描述,而遇到一类离散的问题,我们可以使用 建立差分方程(当然可以将之比作 微分方程之离散化)、有限状态自动机等等模型,而元胞自动机 给了我们新的思路去模拟一个复杂的系统,虽说他是离散的,但对于连续系统他并不必微分方程逊色: 

大量元胞 的 局部规则驱动变化下,系统的整体往往呈现某种 相对稳定 的性质 

其实,这在人类社会中也能体会到这一规律,一个较大的社会现象 往往是各个 个体协作并发的结果。

我想这就是为什么 Wolfram之所以将其看做一种新科学的原因了。

呵呵,好像对于我提出的问题并没有一个合理的解释,我想大概是我们以往使用的 元胞自动机 模型都是事件驱动的方式进行设计的


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值