第九章系统模拟Word格式.docx
- 文档编号:21406413
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:22
- 大小:251.30KB
第九章系统模拟Word格式.docx
《第九章系统模拟Word格式.docx》由会员分享,可在线阅读,更多相关《第九章系统模拟Word格式.docx(22页珍藏版)》请在冰豆网上搜索。
离散系统仅在可能的参数范围内取特定的数值。
一个系统可能是确定型的或随机型的,这要看系统的输入、过程以及输出的特点。
当输入确定后,确定型系统的输出也是准确可知的。
图9-1系统模拟的类型
三、模拟模型
建立模拟模型是进行系统模拟的基础。
与前几章学习的数学模型不一样,模拟模型是由大量的要素、法则和逻辑关系所组成的流程图。
模拟模型构成的方法特点是,先把系统划分成较小的子系统,然后再把这些子系统按照逻辑关系结合在一起。
当然,其中有些子系统也有可能用解析方法构成模型。
1.计算机模拟系统的组成
计算机模拟系统是多种多样的,特别是离散事件系统较为复杂。
为了更为方便地进行模拟,首先要把系统抽象化、规范化。
计算机模拟系统的主要构成为:
(1)实体(Entity)
组成系统的各个元素称为实体,它们是组成系统的基本部分。
凡是在系统中活动的部分叫活动实体,例如生产线上待加工的零件,排队系统中的顾客,待装载的车辆等;
系统中的另一部分是固定的,叫固定实体,如排队系统中的服务员,运输系统中的装载机、料仓等。
固定实体是对活动实体进行加工、处理或服务的。
(2)属性(Attribute)
指实体所具有的特性、状态或参数。
每个实体都有若干个属性来描述。
例如,汽车是实体,规格、速度、载重量是它的属性;
又如装载机、料仓是固定实体,装、卸载速度,方式是它们的属性。
(3)活动(Activity)
表示系统内同一类运动的一段过程或行为。
例如,车辆的卸载时间或故障时间等。
(4)事件(Event)
这是离散事件系统的一个重要概念。
它与系统活动有关,一般指某一时间点,系统正处于某种活动的开始或结束。
例如,设备某一时刻发生故障,这个时刻叫做事故发生事件,也叫正常运行结束事件。
(5)系统状态
指系统在某一时刻上所有实体的属性、活动的瞬间表象。
(6)过程
系统经过各种活动,又回到原来开始时类似的状态叫做一个过程。
例如汽车运输中的一个往返过程。
图9-2是某设备运行系统中,事件、活动和过程的一个关系示意图。
过程
正常运行活动发生故障活动
运行开始事件运行结束事件故障结束事件t
(故障开始事件)(运行开始事件)
图9-2事件、活动和过程关系示意图
(7)模拟时钟
在动态系统中都设有模拟时钟,以推进系统的模拟时间,它是提供模拟时间当前数值的变量。
每推进一次叫一个步长,一般每一个步长都要对系统全面考查一次,以推进系统状态的变化与发展。
2.计算机模拟的一般步骤
一般来说,模拟模型的建立包括以下几个步骤:
(1)提出问题
就是要把与所研究的问题有关的主要内容、系统的目标、衡量系统效果的标准和状态参数等表述清楚。
(2)系统分析
要确定系统的边界,系统中的实体及其相互之间的联系,实体的活动和属性等;
要确定系统变量的类型,是确定型的还是随机型的;
对于复杂的系统,一般要划分成为若干相对独立的子系统,并弄清各子系统之间的相互关系。
(3)收集数据
收集数据分为实际观测和分析整理两个阶段。
实际观测就是现场标定和采集数据,它分为连续观测和间隔抽样观测。
对于已经发生不能进行实测的现象,只能根据历史资料获得有关数据。
对于随机变化的数据还要进行统计分析,寻找其分布规律。
(4)构造模型
模拟模型包括模型框图和计算机程序两部分。
模拟模型通常先以框图表示,然后再据此编制计算机程序。
构造模拟模型的过程通常是根据系统中实体的运动规律,先构造一个简单模型,然后再不断充实和完善。
构造模型的关键在于,对于所研究的系统有较深刻的了解,抽象构造出的模型能够真实反映系统的本质特征。
编制计算机程序时,如果选择一些通用语言,如BASIC,FORTRAN,C++等,则比较灵活,但编程工作量较大;
如选用一些模拟专用语言,如GPSS,SLAM等,则编程较简单,但有可能受模拟语言规则的一些限制。
(5)模型检验
将编制的程序进行试运行,如运行的结果与专业人员的判断或实际发生的结果基本一致,则认为模型是正确的,否则,要寻找原因并进行修改。
具体来说,确认模型是否精确代表实际系统,一般分三步来检验:
第一步,考查模型的直觉有效性。
由有经验的专家进行直观评价和灵敏度分析来校核直觉有效性:
如,在一个排队系统中,减少车辆到达的间隔,观察排队队长是否增长;
第二步,对模型的假设进行确认。
分为结构假设和数据假设。
结构假设检验的例子如,对于一个服务系统,先到先服务的假设与实际是否有区别,对于数据假设检验,主要指对收集数据的可信度检验,例如,对实体的某项活动时间服从某一随机分布的检验。
第三步,输入输出变换的确认。
一般可根据实际系统历史数据进行校核。
如无实际运行资料,可把模型分解成子系统后,进行部分确认,或者与已被确认的部分进行比较,对比分析。
(6)结果分析
主要是对结果精度的分析。
由于系统中包括随机参数,需对模拟结果进行统计分析,以便确定其可靠性。
一般采用在一定置信度下,对置信区间进行估计;
同时可改变某些参数,以实现对系统行为的预测。
第二节应用举例
为了对计算机模拟模型的建立、运算过程、结果和意义有一个初步的认识,首先从较简单的静态模型入手,来考虑下面两个例子。
例1现有一火炮发射系统,共有n门炮,同时攻击一个目标,已知各门炮的命中率为P。
求击毁目标的概率(这里假设击中等于击毁)不小于S的情况下,最少需要配备的火炮数。
解:
从概率论可知:
n门炮各发射一炮,称为一轮射击,未击中目标的概率为(1-P)n,那末击中目标的概率为1-(1-P)n。
现要求一轮射击击毁目标的概率不小于S,即要求
1-(1-P)n≥S
由于P、S都是已知数,因此可由上式求出满足条件的n。
对于这一问题也可以用计算机模拟模型来求解。
可以利用计算机语言提供的0,1之间的均匀随机数发生器,例如,BASIC语言中的RND(n)函数。
用发出一个随机数R模拟一次射击过程,由于各门炮的命中率为P,随机数R落入某一区间的概率只与这一区间的宽度有关,因此,随机数R落入0,P区间的概率为P。
构造该模拟模型的基本规则为:
1.n门炮依次发射,如有一炮命中,叫做成功,此轮不必再向下计算,轮数Q加1,进入下一轮,如果n门炮都未中,叫做失败,轮数Q加1,失败轮数F加1。
2.n门炮发射一轮(不一定每门炮都发射),叫做实验一次。
实验Q轮(Q应足够大),则每轮射击的成功率(命中率)为:
模拟模型的计算机框图如图9-3所示。
模拟轮数Q定为1000,要求输入火炮数目n,每门炮的命中率P;
系统根据累计失败的轮数F,可最终输出每轮射击的成功率S。
经检验,模拟结果与理论结果非常接近。
根据要求击毁目标的概率S,就可以用试算的方法求出满足条件的n。
显然,可变因素P,n直接影响着系统的功能。
类似问题的模拟为兵力部署,武器装备的最佳配备提供了战术、装备方面的信息。
当然,实际作战方案效果的模拟要复杂得多。
例如,对于精确制导武器攻击力的计算机模拟模型,就要考虑目标的被弹面积、击中部位、角度、击伤、击毁的标准;
并每次产生弹着点,累计命中弹数等。
N
图9-3火炮发射系统模拟模型框图
例2蒙特卡罗(MonteCarlo)方法,又称为统计试验法。
最早是由科学家冯·
诺依曼和乌拉姆在第二次世界大战期间,从事原子弹的研制,对中子的随机扩散进行模拟而建立和发展起来的。
由于蒙特卡罗法在基本原理上与某些赌博工具一样,因此就用当时世界著名的摩洛哥的赌城蒙特卡罗来命名了。
蒙特卡罗法实际上就是在产生随机数的基础上,再现系统某种概率分布的试验方法。
下面用蒙特卡罗法计算一个定积分问题。
如图9-4所示,有一个正函数f(x),x的定义域为[a,b],f(x)的上界为M,求积分
可以按照如下的思路来考虑此问题:
(1)
的解在矩形面积(b-a)M
之内。
*(x0,y0)
(2)向矩形(b-a)M内均匀地投N个
点,并统计出落入f(x)曲线与横坐标x轴
所围面积内的点数n。
则点数之比等于面
积之比:
。
图9-4正函数f(x)
因此,
,这样一来,就把一个求定积分的问题转化为一个统计试验问题了。
(3)模拟过程。
由计算机产生2个0,1之间的均匀随机数R1,R2。
令
x0=a+(b-a)R1,y0=MR2
这样x0即为均匀落入[a,b]区间的随机数;
y0则是均匀落入[0,M]区间的随机数,而这一对随机数可作为均匀落入矩形(b-a)M内的一个点(x0,y0)。
如果y0≤f(x),则说明该点落入了积分区域内。
重复这一过程,并累计落入了积分区域内的点数,即可完成对定积分的计算机模拟。
试验的“点数”增加,则模拟的精度可相应提高。
用计算机模拟方法计算定积分
的计算机程序如下:
10INPUTS:
n=0
11
FORI=1TOS
12X=RND
(1)
13Y=RND
(1)
14IFY>
SIN(3.1416*X)GOTO16
15n=n+1
16NEXTI
17F=3.1416*n/S
18PRINT“F=”;
F
19END
当输入模拟循环S=800,此程序的运行结果为:
F=1.998843,与理论计算结果非常接近。
第四节模拟过程的控制方式
建立计算机模拟模型并控制模拟过程的主要方法有两种。
一种是时间步长法,即以固定的时间长度为增量,随着时间的推进,模拟各段时间内各种量和参数的变化;
另一种称为事件步长法,它是以相邻事件发生的时间间隔为增量,模拟各段时间内各种量和参数的变化,由于模拟中的事件多为随机事件,因此,时间的推进是不等长的。
如果被考查的对象(实体)不只一个时,为了与实际相符,常采用“最短时间事件步长法”。
在对一个系统的模拟中,也可能混合采用上述两种方法。
一、时间步长法
1.时间步长法基本原理
时间步长法又称为等步长法,是采用相等的时间间隔控制模拟的时间进程的。
时间间隔根据内容、要求的精度而定,称为一个步长。
先确定系统的一个初始状态,然后输入计算机。
在计算机中设置一个模拟时钟,每经过一个时间间隔△t,对系统中所有实体进行一次全面性的扫描,并根据系统运行的规则改变系统的状态。
这样,系统从初始状态开始,经不断的转换,且对系统的各实体的活动与状态进行相应处理,直至模拟结束。
时间步长法的模拟过程如图9-8所示。
(1)初始状态
模拟开始时,要对系统内全部实体、活动、属性预先设置初始值。
一般是找一个尽可能简单的系统状态作为初始状态。
例如,对于一个汽车装运系统,可设置所有车辆空车待装为初始状态。
(2)模拟时钟
整个模拟过程由一个模拟时钟来控制,每次推进一个步长,模拟时钟记数器加1。
当模拟时钟的当前时刻等于预定的模拟总时间时,模拟便结束。
模拟步长的选择主要依据具体问题所要求的模拟精度而定。
一般来说,模拟步长越小,模拟结果的精度就越高,但占用机时就越长。
因此,应在保证达到要求精度的条件下,选取适当的模拟步长。
例如,对于一个运输系统中的胶带运输机运输量的模拟,可用几秒或几十秒为一个步长。
而对于一个生态系统或人口预测模拟模型,可能以日、月或年作为模拟的步长。
为了控制每个实体的活动过程,对每个实体都要设一个子时钟,用此来记录和控制各实体的延续时间。
模拟子时钟是实体的时间属性。
例如,对于车辆到达装载点,就具有“到达时刻”、“等待时间”和“装车时间”三个时间属性。
(3)实体或活动的顺序考查
确定初始状态
模拟时钟进一个步长
对实体顺序考查
否
发生
事件?
是
处理该事件子程序
发生并
发事件?
处理并发事件
发事件
改系统状态确定下一事件发生时间
计算记录系统有关变化
模拟完?
图9-8时间步长法的模拟过程图
模拟时钟每推进一个步长,要对整个系统的全部实体或活动进行一次扫描。
这一过程一般是顺序地对系统中的实体进行扫描考查。
对于每一类实体有一个对应的处理子程序。
当被扫描到的实体不发生事件(活动不改变)时,则不需处理;
若发生事件,则转向该活动的子程序进行处理。
在这种方式下,扫描是以实体为对象,活动是附属于实体的。
例如,对于一个矿石运输系统,被扫描的实体有电机车、矿仓、…,在每一个步长中,将考查该实体工作状态是否改变,并进行相应的计算和处理等。
对于某类系统,也可以考虑以系统中的活动为主进行扫描考查,这时候实体是附属于活动被考查的。
`
(4)并发事件
在某一事件发生时,可能引发其它事件的发生。
这些并发事件也需要在当前步长中加以处理,否则可能出现模拟结果与实际背离。
例如,当矿仓已满时,上方的运输机或卸载车辆应停止工作;
矿仓放空时,下方的运输应停止。
(5)改变系统状态并确定下一事件
在当前步长中,要对所有发生事件的实体改变其状态及属性值,并且要预测出下一个活动将延续的时间(或者说,预测出下一相继事件发生的时刻),这样才使模拟不断向前推进。
(6)记录和统计系统有关变化
模拟的目的就是要获取有关系统的尽可能多的有用信息,以便于对系统进行深入的分析研究。
在模拟的各个步骤中,记录和统计计算有关数据是必不可少的。
例如,在一个排队系统中,就应对排队队长、服务时间、等待时间等逐个记录,以便得出一些有用的统计信息,为正确的决策服务。
2.时间步长法应用举例
下面通过一个设备维修的例子说明时间步长法模拟过程。
问题是,一名维修工负责N台设备的维修工作。
现在要求这N台设备的平均利用率,以及增减看管的设备数后利用率的变化情况。
已知,通过每15分钟一次的观察,从统计资料得出各台设备的故障概率P为0.1,每台设备的维修时间如表9-2所示。
设备维修时间表表9-2
维修时间,分
15
30
45
60
75
出现概率
0.3
0.2
0.1
通过对该系统的分析可知,系统的实体为设备和维修工。
其中设备为主要实体,它的属性有设备数、故障率、维修时间。
模拟时要记录设备的故障时刻、修复时刻和计算故障延续时间,这些都是设备的时间属性;
设备具有的三种不同的状态为:
工作状态、待修状态、修理状态。
维修工的属性有修理设备时间,等待修理设备的数目和各自在队列中的位置,以及忙和空闲两种状态。
在设备维修系统中,有设备工作活动,随着故障事件的发生有修理活动。
由于两者时间的随机波动,从而产生了设备排队待修活动。
修复后又产生了设备工作活动。
图9-9表明设备维修系统中事件与活动的关系。
设备维修系统的考查指标为设备的平均利用率。
若在时间T内,各台设备的故障总时间为F,则设备的平均利用率为1-F/(N×
T)。
根据以上分析,可应用时间步长法构造计算机模拟模型。
其中,设备维修主程序框图和故障事件子程序框图分别见图9-10和图9-11(其余子程序框图略)。
模拟开始时,以全部设备处于正常工作状态,修理工处于空闲状态为系统的初始状态。
模拟步长取15分钟,模拟的当前时刻从零开始,模拟总时间T的确定与所要求的输出精度有关。
模拟运行结果:
当取T=9600分,负责设备台数N作为可控变量分别取2、3、4、5。
运算结果见表9-3。
如给出维修工的工资和设备利用率对应的经济指标,就可综合确定一名维修工负责看管设备的合理台数了。
模拟运行结果表表9-3
设备台数
2
3
4
5
平均利用率
0.762
0.716
0.616
0.568
二、事件步长法
事件步长法是控制模拟动态进程的另一种方法。
系统中某一个实体的一个活动结束,同时另一种活动开始,这二者变换的瞬间,我们称之为发生了一个事件。
系统的状态也只有在事件点上才发生变化。
在要进行模拟的系统中,可能同时遇到延续时间很长的活动,如以月、周、天为单位;
以及延续时间很短的活动,如以小时、分、秒为单位。
类似这种情况下采用等步长法(时间步长法)要保持模拟的精度,又要提高模拟的效率就比较困难。
而这时采用事件步长法就比较有利了。
1.事件步长法基本原理
事件步长法是以相邻事件发生的时间间隔为模拟步长的。
模拟时钟的推进与时间步长法不同,是不等步长的。
从图9-12可直观地看出两种模拟步长概念的区别。
当被考查的实体只有一个时,模拟将按照事件发生的顺序,不断改变实体的状态并进行相应的统计计算,预测下一个事件发生的时间使模拟逐步推进。
当被考查的对象不只一个时,就要从模拟时钟赋予初始值开始,从需要处理的多个事件中,找出距系统的当前时刻最近的事件进行处理,即改变相应的实体状态并进行有关的统计等,处理完后,要预测下一个事件的发生时刻,以不断推进模拟的进行。
然后再从多个事件中找出新的最近事件进行处理,……,直至模拟时钟结束。
由于每次都是从距系统的当前时刻间隔最短的事件先进行处理,因此又被称为最短时间事件步长法。
事件步长法与时间步长法相比较,在适用范围、计算方法和效果上都有所不同。
首先,时间步长法可适用于任何系统,而事件步长法有一定程度的局限性。
例如,当系统中有的变量呈连续性变化时,就不适合用离散事件来近似,因此就不能用事件步长法来构造模拟模型。
另外,时间步长法虽然结构简单些,但是如果一段时间无事件发生,则在这段时间的计算和判断显得多余。
事件步长法虽然要比较和判断哪一个事件最早发生,但是避免了许多不必要的计算,效率较高。
最后,对于事件步长法,时间轴上的每一个事件点确切表示了一个活动的开始或结束时刻,不会产生误差问题。
而时间步长法即使步长取的很小,也有一个误差问题。
例如,在图9-12中,如果采用时间步长法模拟,我们只知道事件e1发生在时刻10和20之间,而具体发生在某一时刻是不确定的。
应用事件步长法进行模拟的过程可用图9-13表示,它的各步骤的基本思路如下。
(1)初始状态。
即对于所使用的模拟时钟、记数器和状态变量赋予初值。
(2)找出最短时间的事件。
扫描系统中所有的事件,找出事件发生时刻距当前时间最短的事件。
对于同一时刻上可能发生的若干个事件,应安排好处理顺序。
(3)模拟时钟的步进。
模拟时钟是以相邻两个事件出现的间隔时间为步距顺序步进的。
(4)判断事件的类别和子程序处理。
对于找出的最短时间的事件,判断是属于哪一类事件后,便进入相应的处理事件子程序进行有关的统计运算等处理。
(5)并发事件。
与时间步长法相同,在某一事件发生时,可能引发其它事件的发生。
这些并发事件也必须在当前步长中加以处理。
(6)改变系统状态并确定下一事件。
与时间步长法相同,这使得模拟过程能动态地进行下去。
(7)整理模拟数据。
与事件有关的数据是由事件子程序产生,而数据、统计量的整理、计算和输出结果的格式化是由主程序完成的。
(8)模拟结束。
在事件步长法中,每次步进后事件处理完,都要检查模拟时钟的当前时刻是否已达到预定的模拟终结时间,以确定模拟是否已结束。
2.事件步长法应用举例
一项土石方运输工程,由1台装载机配合3辆自卸式汽车作业。
已知下列有关参数:
装车时间服从均值为3分钟,标准差为0.5分的正态分布;
重车运行时间服从均值为8分钟,标准差为2分的正态分布;
空车运行时间服从均值为6分钟,标准差为1分的正态分布;
卸车时间服从均值为3分的负指数分布。
班作业时间为6小时。
为了求出合理的配车数,要求模拟计算出班总装车数,装载机和自卸式汽车的总的空闲时间。
绘制求解该问题的程序框图。
现对该问题分析如下,首先定义下列变量:
i─模拟步序;
j─汽车编号;
Cj─第j号汽车下步所处的活动状态;
Tji─第j号汽车在第i步模拟时下一个事件发生时刻;
tji─第j号汽车在第i步模拟中的活动延续时间;
k─发生最近事件的汽车号,k=j│min{Tji}。
设初始状态为各辆汽车在装载机工作点等装。
此时模拟步序i=0,Cj=5,j=1,2,3。
这时可按车号(j)最小者先处理,即取k=1。
遂进入模拟步序i=1,改C1=1,即第1号车下步装载,调用装车子程序产生装车时间,计算出装车时间假设为3分,改变装载机和汽车的子时钟值并累计装车数。
同样可按车号顺序处理2号车(k=2,i=2,装车时间t22假设为2.5分)、3号车(k=3,i=3,装车时间t33假设为3.5分)的装车活动。
这时候i=4,可开始按事件步长法的原则推进模拟,即应选取发生最近事件的汽车号先行处理,即第1号车的当前时刻最小,即k=1│min{3,5.5,9}。
改C1=2,即第1号车下步重车运行,调用重车运
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第九 系统 模拟
![提示](https://static.bdocx.com/images/bang_tan.gif)