8SIMULINK仿真基础之离散时间系统分析课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《8SIMULINK仿真基础之离散时间系统分析课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SIMULINK 仿真 基础 离散 时间 系统分析 课件
- 资源描述:
-
1、Chap 8 离散事件系统仿真离散事件系统仿真前面讨论的系统,其状态变量的取值是连续变化的(时间上可以连续也可以离散),这类系统的仿真称为连续系统仿真。现开始讨论另一类性质完全不同的系统,其状态只是在离散时间点上发生变化,且这些离散时间点一般是不确定的,称为离散事件系统离散事件系统仿真仿真。例如单人理发馆系统,设上午9点开门,晚上11点关门,顾客的到达时间一般是随机的,为每个顾客服务的时间长度也是随机的。描述该系统的状态是服务台的状态(忙或闲)、顾客排队等待的队长。显然这些状态变量的变化也只能在离散的随机时间点上发生。类似的如订票系统、库存系统、加工制造系统、交通控制系统、计算机系统等。由于离
2、散事件系统固有的随机性,对这类系统的研究往往十分困难,经典的概率及数理统计理论、随机过程理论虽然为研究这类系统提供了理论基础,并能对一些简单系统提供解析解,但对工程实际中的大量系统,惟有依靠计算机仿真才能提供较为完整的结果。8.1 基本概念基本概念1、实体实体 实体是描述系统的三个基本要素之一,在离散事件系统中的实体可分为两大类:临时实体及永久实体。在系统中只存在一段时间的实体叫临时实体。永久驻留在系统中的实体称为永久实体。临时实体按一定规律不断地到达(产生),在永久实体作用下通过系统,最后离开系统,整个系统呈现出动态过程。2、事件事件 事件是引起系统状态发生变化的行为。从某种意义上讲,离散系
3、统是由事件来驱动的。如,理发馆系统中,可以定义“顾客到达”为一类事件,由于顾客的到达,系统的状态将发生变化服务员可能从闲变忙(如果无人排队),或排队的队长会增加。类似的,可以定义服务开始事件、服务结束事件。在一个系统中,往往有许多类事件,而事件的发生一般与某一类实体相联系,有些事件的发生还可能引起别的事件的发生,或是另一类事件发生的条件。为了实现对系统中事件进行管理,仿真模型中必须建立事件表,表中记录每一发生了的或将要发生的事件的类型和发生时间,以及与该事件相联的实体的有关属性等等。3、活动活动 离散事件系统中的活动,通常用于表示两个可以区分的事件之间的过程,它标志着系统状态的转移。如前例中,
4、顾客的到达事件与该顾客开始接受服务事件之间可以称为一个活动(排队活动),该活动使系统的状态(队长)发生变化。4、进程进程 进程是由若干个有序的事件及若干有序活动组成,一个进程描述了它所包括的事件及活动间的相互逻辑关系及时序关系。如顾客到达、经过排队、接受服务、服务完毕后离去可称为一个进程。进程排队活动服务活动顾客到达事件服务开始事件服务结束事件5、仿真钟仿真钟 仿真钟用于表示仿真时间的变化。在连续系统仿真中,将连续模型进行离散化而成为仿真模型时,仿真时间的变化基于仿真步长的确定,可以是定步长也可以是变步长,称为时间步长法。对于离散事件系统而言,其状态本来就只在离散时间点上发生变化,因而不需要进
5、行离散化处理。但是由于引起状态变化的事件发生时间的随机性,仿真钟的推进步长则完全是随机的,所以说仿真模型中时间控制部件必不可少,应按一定规律来控制仿真钟的推进。8、统计计数器统计计数器 连续系统仿真的目的是要得到状态变量的动态变化过程并由此分析系统的性能。离散事件系统的状态随事件的不断发生也呈现出动态变化的过程,但仿真的目的主要不是要得到这些状态是如何变化的。由于状态的变化是随机的,某一次仿真运行得到的状态变化过程只不过是随机过程的一次取样。如果进行另一次独立的仿真运行所得到的状态变化过程可能完全是另一种情况。所以它们只有在统计意义下才有参考价值。在前例中,由于顾客到达的时间间隔具有随机性,服
6、务员为每个顾客服务的时间长度也是随机的,因而在某一时刻,顾客排队的队长或服务台的忙闲情况完全是不确定的,在分析该系统时,感兴趣的是系统的平均队长、顾客的平均等待时间或服务员的利用率等。所以在仿真模型中,需要有一个统计计数部件,以便统计系统中的有关变量。8.2 仿真钟的推进仿真钟的推进 离散事件系统仿真的仿真钟推进方法有两种:一种是按下一最早发生事件的发生时间推进,称为事件调度法,亦称为事件步长法;另一种是固定增量推进法。事件步长法事件步长法事件步长法是以事件发生的时间为增量,按照事件发生的时间顺序,一步一步地对系统的行为进行仿真,直到预定的时间结束为止。在多数随机系统中,可以有多种性质的事件发
7、生,通常按照发生时间的先后顺序逐个处理,换句话说,首先处理发生时刻距初始时刻最短的事件,这种处理方法称为是最短时间的事件步长法。事件步长法事件步长法初始状态事件步长加1在当前步长内,考察分析,计算和记录系统的活动仿真时间到否?仿真结束输出结果是否事件步长法事件步长法事件步长法与时间步长法的主要区别是:(1)事件步长法与时间步长法都是以时间为增量来考察系统状态的变化但在时间步长法中,仿真时钟以等步长前进,而在事件步长法中,仿真时钟的步长取决于事件之间的间隔(2)时间步长法在一个步长内,认为系统所处的状态相同,因而所选步长的大小将影响仿真的精度而在事件步长法中,每个事件的发生均有确切的时刻,不需要
8、人为地选取步长,步长的大小对仿真精度影响较小事件步长法事件步长法(3)时间步长法每前进一个步长就要对整个系统进行一次全面考察,即使状态没有发生变化时也要扫描,而事件步长法只是在某一事件点上判断和比较事件是否出现因此,一般地讲,当判断比较的数目较大时,用时间步长法可以节省用机时间,而当相继两个事件出现的平均间隔较长时,更适合于用事件步长法事件步长法事件步长法事件表法的基本思路事件表法的主要思路是将系统的仿真过程看成一个事事件点序列件点序列,根据事件出现的时序,用一个称之为事件表的表格来调度事件执行的顺序对于那些当前需处理的事件,列入事件表中,从中取出最接近的事件进行处理,处理完毕后自动退出事件表
9、在处理当前事件的过程中,往往又会产生一个后继事件,因此,必须预测出这一后继事件的出现时间,并将它列入事件表中事件步长法事件步长法-例子例子例例1收款台前的排队过程的仿真。收款台前的排队过程的仿真。考虑一个收款台的排队系统。某个杂货店只有一个收款台,顾客的到达时间时服从均值为4.5的负指数分布,每一个顾客的服务时间服从均值为3.2,方差为0.8的正态分布。这里时间的单位是分钟,且服务的时间不取负值.试对收款台前的排队过程进行仿真。事件步长法事件步长法-例子例子收款排队系统主控程序图事件步长法事件步长法-例子例子负指数分布的随机数的产生:负指数分布的随机数的产生:x=-4.5ln(u),u为均匀分
10、布的随机数正态分布的随机数的产生正态分布的随机数的产生:y=3.2+0.8v,v为标准正态分布的随机数。假设假设:开始时服务台前无顾客,顾客在服务台前不离去;要求要求:对100个顾客到收款台缴款排队过程进行仿真关心的问题关心的问题:每个顾客的平均等待时间atime,最大队长maxl,服务员的工作效率work,;事件步长法事件步长法-例子例子实体实体:服务员(忙1,闲0),顾客(到达时刻ca,服务时间cs,等待 时间ct)队列(长度lq);事件事件event:顾客到达事件1(交款,排队)服务结束事件2(闲忙)事件表事件表:序号 事件类型(1、2)发生时刻t事件步长法事件步长法-例子例子顾客到达子
11、程序图事件步长法事件步长法-例子例子服务结束子程序图事件步长法事件步长法-例子例子例:机器修理系统仿真有m台机器,由c个工人共同负责修理,并设:各台机器质量相同,机器的连续运转时间相互独立且服从同一负指数分布,平均寿命为1/v(v0)。每个工人技术相同,且修理时间相互独立并服从同一负指数分布,平均修理时间为1/u(u0).修复后的机器其寿命分布不变。机器停止运转每单位时间的损失费为c1元,工人单位时间的产值为c2元。若机器的等待时间为E E,工人总的空闲时间为F F,则系统总的损失费为 S S=c1E E+c2 2F F试求当机器数m固定时,为使系统的总损失费最小,应配备多少工人为最优?事件步
12、长法事件步长法-例子例子解:采用最短时间事件步长法进行仿真,首先要确定一个初始状态。不妨假定开始时所有的机器都正常运转,工人处于空闲状态。设T为仿真终止时间。依次仿真计算修理工人数C分别取1、2、3、时的系统损失费。最后根据系统损失费S的极小值来确定最优工人数。根据以上思想并采用最短时间事件步长法仿真。事事件件步步长长法法-例例子子输入原始数据c1,c2,U,V,m,T给出m台机器的指数寿命B(H)=1?结束F=F+x-KP=T3/T输出C,SC=1E=0 F=0初始状态:B(i)=1,i=1,2,m;D(j)=0,j=1,2,.,c选取寿命最短的机器i:H=i,K=A(i)选取最早释放时刻的
13、工人j:y=j,x=D(j)xK?F=F+x-K改变第y个人工的释放时刻:D(y)=A(H)机器由故障释放改为正常:B(H)=1机器由正常改为故障:B(H)=0C=C+1KT?选取寿命最短的机器i:H=i,K=A(i)给出机器修复时间仿真时钟前进一个步长A(H)=K-1/vLOG(RND(1)给出机器正常运行时间仿真时钟前进一个步长A(H)=K-1/vLOG(RND(1)是否否是是否事件步长法事件步长法-例子例子框图中各标识符号含义如下:T:仿真终止时间m:机器数c:工人数B(i):第i台机器所处状态A(i):第i台机器现在状态的当前时刻D(j):第j个工人修复机器的释放时刻c1:一个工人单位
14、时间的产值c2:一台机器单位故障时间的损失费B(i)=1 机器正常运转0 机器发生故障事件步长法事件步长法-例子例子U:一个工人单位时间平均能修复的机器数V:一台机器在单位运转时间内发生故障的平均次数S:总损失费用E:机器故障时间累计F:工人空闲时间累计K:最短时间机器的当前时刻H:最短时间机器对应的机器号L:工人修完机器的释放时刻x:最短释放时间工人的当前时刻y:最短释放时间对应的工人序号事件步长法事件步长法-例子例子下表列出了当 m=86,1/V=500小时,1/U=34小时,c1=3.46元/小时,c23.2元/小时时的仿真结果,其中每次预定仿真时间为一万个小时,连续仿真五次取其平均值作
15、为仿真结果。由仿真结果可知当工人数c10时,最优工人数为7工人数C2345878910每小时平均损失E 183.0 128.9 76.0 37.624.59.09.410.2 15.2应用举例应用举例-可靠性问题例:一设备上三个相同的轴承,每个轴承正常工作寿命为随机变量,其概率分布如表所示寿命h1000110012001300140015001600170018001900概率0.100.130.250.130.090.120.020.060.050.05任何一个轴承损坏都可以使设备停止工作,从有轴承损坏,设备停止工作,到检修工到达开始更换部件为止,称为一个延迟时间延迟时间也是随机变量,其概率
16、分布如下表所示延迟时间min51015概率0.60.30.1应用举例应用举例-可靠性问题设备停工时每分钟损失5元,检修工每小时工时费12元,轴承每个成本 16元更换一个轴承需要 20 min,同时更换两个轴承需要30min,同时更换三个轴承需要40min现在有两种方案:方案一是损坏一个更换一个;方案二是一旦有轴承损坏就全部更换试通过计算机仿真对这两种方案做出评价在这一问题中,轴承寿命在1000到1900h之间,而延迟在5到 15min之间,故若用时间步长法时,步长选取有些困难步长小浪费很大,步长大又不精确,所以采用事件步长法在事件发生时再考虑系统状态的变化情况,这就比较合理应用举例应用举例-可
17、靠性问题为了进行仿真,首先对轴承寿命和延迟时间与随机数对应,对应规则分别如下两个表轴承寿命h频率随机数区间10000.10(0,0.10)11000.130.10,0.23)12000.250.23,0.48)13000.130.48,0.61)14000.090.61,0.70)15000.120.70,0.82)16000.020.82,0.84)17000.060.84,0.90)18000.050.90,0.95)19000.050.95,1.00)延迟时间频率随机数区间50.60(0,0.6)100.300.6,0.9)150.100.9,1.0)轴承寿命随机数延迟时间随机数应用举例
18、应用举例-可靠性问题由于在这一问题中各个轴承的寿命完全决定了系统的运行状态,也即决定了两个方案的费用大小,故我们选择轴承发生故障作为事件,这三个轴承发生故障的事件分别记为A、B、C(1)方案一的仿真 产生初始事件表事件类型发生时刻延迟时间A1400h5minB1500h15minC1500h15min应用举例应用举例-可靠性问题仿真时钟步进,计算费用,产生下一个事件由表上看出,最早发生的事件是A,所以t 1400hcost(5+20)54116145元,下一个A事件发生的时刻为第2 400小时25分钟(随机产生轴承寿命为1000h),刷新事件表,即删去老的A事件,产生新的A事件刷新后的事件表如
19、下表事件类型发生时刻延迟时间A2400h25min5minB1500h15minC1500h15min应用举例应用举例-可靠性问题寻找事件表中的最早事件进行处理由上表看出,B、C事件同时发生在第1500 h,故同时处理时钟步进为 t 1500 h,再根据费用的计算方法得:cost=145(15+30)5 6216408元 最后利用随机数产生新事件B和C,刷新事件表,得到的新事件表:事件类型发生时刻延迟时间A2400h25min5minB2700h45min10minC2900h45min5min应用举例应用举例-可靠性问题重复,t=2400 h 25 min,cost=408(5+20)5 4
20、 116=553元事件类型发生时刻延迟时间A3700h50min5minB2700h45min10minC2900h45min5min重复这一过程,一直需要的时间结束即可得到方案的费用应用举例应用举例-可靠性问题(2)方案二的仿真方案二与方案一的区别就是一旦故障发生,就更换3个轴承设初始事件表仍为方案一初始表表中最早的事件是A,处理事件A时要考虑延时,更换3个轴承的时间和费用事件类型发生时刻延迟时间A1400h5minB1500h15minC1500h15min cost=(5+40)58316281元应用举例应用举例-可靠性问题根据下一次三个轴承发生故障的时刻刷新后的事件表:事件类型发生时刻
21、延迟时间A2400h45min5minB2600h45min10minC2800h45min5min再重复上述过程,累加费用,即可得到方案二的总费用最后比较两种方案的费用大小即可确定选取那一种应用举例应用举例-可靠性问题程序运行结果:T=100000h方案一:cost=32705元方案二:cost=24429元从而得出方案二较方案一优。应应用用举举例例-可靠性问题/可靠性问题#include#include#include#define TIMES 100000 struct table float begin;int delay;int make;struct table tab3;floa
22、t cost=0;int sort3;int make_event1(void)int first=0,sum;sort0=sort1=sort2=-1;float b=tab0.begin;if(btab1.begin)first=1,b=tab1.begin;if(btab2.begin)first=2,b=tab2.begin;int i=0;应应用用举举例例-可靠性问题 if(first=0)sorti+=0;if(tab1.begin=tab0.begin)sorti+=1;if(tab2.begin=tab0.begin)sorti+=2;else if(first=1)sorti
23、+=1;if(tab2.begin=tab1.begin)sorti+=2;else if(first=2)sorti+=2;for(sum=0,i=0;i=0)sum+;switch(sum)case 1:tabsort0.make=20;cost+=(20+tabsort0.delay)*5+4+16;break;case 2:tabsort0.make=30;cost+=(30+tabsort0.delay)*5+6+32;break;case 3:tabsort0.make=40;cost+=(40+tabsort0.delay)*5+8+48;break;return sum;应应用
24、用举举例例-可靠性问题int make_event2(void)int first=0,sum;sort0=sort1=sort2=-1;float b=tab0.begin;if(btab1.begin)first=1,b=tab1.begin;if(btab2.begin)first=2,b=tab2.begin;int i=0;if(first=0)sorti+=0;if(tab1.begin=tab0.begin)sorti+=1;if(tab2.begin=tab0.begin)sorti+=2;else if(first=1)sorti+=1;if(tab2.begin=tab1.
25、begin)sorti+=2;else if(first=2)sorti+=2;tabsort0.make=40;cost+=(40+tabsort0.delay)*5+8+48;return sum;应应用用举举例例-可靠性问题 void create_event1(struct table*t)float x,y;struct table*t1;x=random(1000);x/=1000;t-begin+=(t-delay+t-make)/80.0;if(xbegin+=1000;else if(xbegin+=1200;else if(xbegin+=1300;else if(xbeg
展开阅读全文