1.3.2 离散事件系统仿真建模
本书是讨论离散事件系统仿真的,因此,需要将面向仿真的离散事件系统模型转换为仿真模型。离散事件系统仿真建模是以某种观点(如事件、活动或/和进程)描述离散事件系统并建立相应仿真模型。
离散事件系统仿真的核心问题是建立描述系统行为的仿真模型。在一个较为复杂的离散事件系统中,一般都存在诸多的实体,这些实体之间相互联系,相互影响,然而其活动的发生统一在同一时间基上,采用何种方法推进仿真钟,建立起各类实体之间的逻辑联系,这是离散事件系统仿真建模方法学的重要内容,有时称之为仿真算法或仿真策略。
目前,比较成熟的有四种仿真建模方法,即事件调度(Event Scheduling,ES)法、活动扫描法(Activity Scanning,AS)、进程交互法(Process Interactive,PI)和三阶段法(Three Phases, TP)。在建立仿真模型时,一般并非只拘泥于采用某一种策略,同一个仿真模型有时可同时采用几种策略。
仿真钟用于模拟实际系统的时间属性。系统的动态特性表现为系统状态随时间变化而发生变化,离散事件系统仿真就是要使模型在系统状态发生变化的时间点上产生出实际系统的动态行为。模型中的时间变量就是仿真钟。仿真过程中,仿真钟的取值称为仿真钟的推进,两次连续取值的间隔称为仿真步长。离散事件系统仿真中的仿真钟推进方法大多采用“下一最早发生事件的发生时间”(Next Event Scheduling)的方法。由于事件发生时间的随机性,因而仿真钟推进步长也是随机长度,而且,由于相邻两事件之间系统状态不会发生任何变化,因而仿真钟跨过了这些“不活动”周期,从而呈现出跳跃性,其推进速度具有随机性,这是离散事件系统仿真与连续系统仿真的重要区别之一。
离散事件系统中,许多事件的发生是随机的。因此,在离散事件系统的仿真过程中,根据随机事件发生的规律,仿真模型产生需要的随机变量来模拟事件的发生。从本质上说,仿真模型中的随机变量大多是伪随机变量(Pseudo Random Variable)。伪随机变量是指在伪随机数的基础上生成的具有某种概率分布规律的随机变量。
伪随机数(Pseudo Random Number)是指在计算机上利用数学算法生成的在统计意义上服从[0,1]区间上均匀分布的随机变量。产生随机数的程序被称为随机数发生器。随机数应具有两个基本的性质:均匀性和独立性。均匀性指随机数应该均匀地分布在[0,1]区间上,独立性指产生的随机数之间没有相互关联关系,已经产生的随机数对后面产生的随机数没有影响。
在系统仿真过程中所采用的随机数发生器一般都是采用数学递推算法生成随机数,例如采用线性同余算法,其基本的数学递推公式为:Zi=(aZi-1+C)(modm),这样Zi为0到m之间的整数。为了得到[0,1]区间上所需要的随机数Ui,可令Ui=Zi/m。因此,严格地说,仿真中采用的随机数发生器不是在概率意义下的真正的随机数,而称为伪随机数,因为所有的随机数都可以通过数学公式预先确定。但是,如果数学递推算法选择得合适,由这种算法得到的数据,经过统计检验后具有较好的统计特性(如均匀性和独立性等),则这种伪随机数用于仿真是可行的。
在对离散事件系统进行仿真时,仿真模型需要产生随机变量,并使这些随机变量服从某种指定的规律,以模拟离散事件系统的实际运行过程。产生一个服从某种分布的伪随机变量的基础是首先采用随机数发生器产生伪随机数,即[0,1]区间上均匀分布的伪随机变量,在此基础上经过进一步的变换而得到指定概率分布规律的伪随机变量。在伪随机数的基础上生成伪随机变量的方法主要有反变换法、组合法、卷积法、舍选法等。