资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,数学建模与数学实验,后勤工程学院数学教研室,计算机模拟,实验目的,实验内容,学习计算机模拟的基本过程与方法。,1、模拟的概念。,4、实验作业,。,3、计算机模拟实例。,2、产生随机数的计算机命令。,连续系统模拟实例:,追逐问题,离散系统模拟实例:,排队问题,用蒙特卡洛法解非线性规划问题,返回,计算机模拟实例,模拟的概念,模拟,就是利用物理的、数学的模型来类比、模仿现实系统及其演变过程,以寻求过程规律的一种方法。,模拟的基本思想,是建立一个试验模型,这个模型包含所研究系统的主要特点通过对这个实验模型的运行,获得所要研究系统的必要信息,模拟的方法,1、物理模拟:,对实际系统及其过程用功能相似的实物系统去模仿。,例如,军事演习、船艇实验、沙盘作业等。,物理模拟通常花费较大、周期较长,且在物理模型上改变系统结构和系数都较困难。而且,许多系统无法进行物理模拟,如社会经济系统、生态系统等。,在实际问题中,面对一些带随机因素的复杂系统,用分析方法建模常常需要作许多简化假设,与面临的实际问题可能相差甚远,以致解答根本无法应用。,这时,计算机模拟几乎成为唯一的选择。,在一定的假设条件下,运用数学运算模拟系统的运行,称为数学模拟。现代的数学模拟都是在计算机上进行的,称为计算机模拟。,2、数学模拟,计算机模拟可以反复进行,改变系统的结构和系数都比较容易。,蒙特卡洛(,Monte Carlo),方法,是一种应用随机数来进行计算机模拟的方法此方法对研究的系统进行随机观察抽样,通过对样本值的观察统计,求得所研究系统的某些参数,例1,在我方某前沿防守地域,敌人以一个炮排(含两门火炮)为单位对我方进行干扰和破坏为躲避我方打击,敌方对其阵地进行了伪装并经常变换射击地点,经过长期观察发现,我方指挥所对敌方目标的指示有50是准确的,而我方火力单位,在指示正确时,有1/3的射击效果能毁伤敌人一门火炮,有1/6的射击效果能全部消灭敌人,现在希望能用某种方式把我方将要对敌人实施的20次打击结果显现出来,确定有效射击的比率及毁伤敌方火炮的平均值。,分析,:,这是一个概率问题,可以通过理论计算得到相应的概率和期望值.但这样只能给出作战行动的最终静态结果,而显示不出作战行动的动态过程.,为了能显示我方20次射击的过程,现采用模拟的方式。,需要模拟出以下两件事:,1.问题分析,2 当指示正确时,我方火力单位的射击结果情况,1 观察所对目标的指示正确与否,模拟试验有两种结果,每一种结果出现的概率都是1/2,因此,,可用,投掷一枚硬币,的方式予以确定,,当硬币出现正面时为指示正确,反之为不正确,模拟试验有三种结果:毁伤一门火炮的可能性为1/3(即2/6),毁伤两门的可能性为1/6,没能毁伤敌火炮的可能性为1/2(即3/6),这时,可用投掷骰子的方法来确定,:,如果出现的是、三个点:则认为没能击中敌人;,如果出现的是、点:则认为毁伤敌人一门火炮;,若出现的是点:则认为毁伤敌人两门火炮,2.符号假设,i:,要模拟的打击次数;,k,1,:,没击中敌人火炮的射击总数;,k,2,:,击中敌人一门火炮的射击总数;,k,3,:,击中敌人两门火炮的射击总数,E:,有效射击比率;,E,1,:20,次射击平均每次毁伤敌人的火炮数,3.模拟框图,初始化:,i=0,k,1,=0,k,2,=0,k,3,=0,i=i+1,骰子,点数?,k,1,=k,1,+1,k,2,=k,2,+1,k,3,=k,3,+1,k,1,=k,1,+1,i20?,E=(k,2,+k,3,)/20 E,1,=0*k,1,/20+1*k,2,/20+2*k,3,/20,停止,硬币正面?,Y,N,N,Y,1,2,3,4,5,6,4.模拟结果,5.理论计算,6.结果比较,返回,虽然模拟结果与理论计算不完全一致,但它却能更加真实地表达实际战斗动态过程,用蒙特卡洛方法进行计算机模拟的步骤,:,1 设计一个逻辑框图,即模拟模型这个框图要正确反映系统各部分运行时的逻辑关系。,2 模拟随机现象可通过具有各种概率分布的模拟随机数来模拟随机现象,产生模拟随机数的计算机命令,在,Matlab,软件中,可以直接产生满足各种分布的随机数,命令如下:,2,产生,m,n,阶,均匀分布的随机数矩阵:,rand,(m,n),产生一个,均匀分布的随机数:,rand,1,产生,m,n,阶,a,b,均匀分布,U(a,b),的随机数矩阵:,unifrnd,(a,b,m,n),产生一个,a,b,均匀分布的随机数:,unifrnd,(a,b),当只知道一个随机变量取值在(,a,b),内,但不知道(也没理由假设)它在何处取值的概率大,在何处取值的概率小,就只好用,U(a,b),来模拟它。,例 1的计算机模拟,To,Matlab,(,rnd,),当研究对象视为大量相互独立的随机变量之和,且其中每一种变量对总和的影响都很小时,可以认为该对象服从正态分布。,机械加工得到的零件尺寸的偏差、射击命中点与目标的偏差、各种测量误差、人的身高、体重等,都可近似看成服从正态分布。,若连续型随机变量,X,的概率密度函数为,其中 0为常数,则称,X,服从,参数,为 的,指数分布,。,指数分布的期望值为,排队服务系统中顾客到达率为常数时的到达间隔、故障率为常数时零件的寿命都服从指数分布。,指数分布在排队论、可靠性分析中有广泛应用。,注意:,Matlab,中,产生,参数,为 的指数分布的命令为,exprnd,(),例,顾客到达某商店的间隔时间服从参数为0.1的指数分布,指数分布的均值为1/0.1=10。,指两个顾客到达商店的平均间隔时间是10个单位时间.即平均10个单位时间到达1个顾客.顾客到达的间隔时间可用,exprnd,(10),模拟。,设离散型随机变量,X,的所有可能取值为0,1,2,且取各个值的概率为,其中 0为常数,则称,X,服从参数为 的,帕松分布,。,帕松分布在排队系统、产品检验、天文、物理等领域有广泛应用。,帕松分布的期望值为,如相继两个事件出现的间隔时间服从参数为 的指数分布,则在单位时间间隔内事件出现的次数服从参数为 的泊松分布即单位时间内该事件出现,k,次的概率为:,反之亦然。,指数分布与帕松分布的关系:,(1)指两个顾客到达商店的平均间隔时间是10个单位时间.即平均10个单位时间到达1个顾客.,(2)指一个单位时间内平均到达0.1个顾客,例,(1)顾客到达某商店的间隔时间服从参数为0.1的指数分布,(2)该商店在单位时间内到达的顾客数服从参数为0.1的帕松分布,返回,例2,敌坦克分队对我方阵地实施突袭,其到达规律服从泊松分布,平均每分钟到达辆(1)模拟敌坦克在分钟内到达目标区的数量,以及在第、分钟内各到达几辆坦克(2)模拟在3分钟内每辆敌坦克的到达时刻。,(1)用,poissrnd,(4),进行模拟。,To,Matlab,(,poiss,),(,2)坦克到达的间隔时间应服从参数为4的负指数分布,用,exprnd,(1/4),模拟。,To,Matlab,(time),连续系统模拟实例:,追逐问题,状态随时间连续变化的系统称为,连续系统,。对连续系统的计算机模拟只能是近似的,只要这种近似达到一定的精度,也就可以满足要求。,例,追逐问题:,如图,正方形,ABCD,的四个顶点各有一人.在某一时刻,四人同时出发以匀速,v=1,米/秒按顺时针方向追逐下一人,如果他们始终保持对准目标,则最终按螺旋状曲线于中心点,O.,试求出这种情况下每个人的行进轨迹.,O,B,C,D,A,1.建立平面直角坐标系:,A(x,1,y,1,),B(x,2,y,2,),C(x,3,y,3,),D(x,4,y,4,).,2.取时间间隔为,t,计算每一点在各个时刻的坐标.,4.对每一个点,连接它在各时刻的位置,即得所求运动轨迹.,求解过程:,To,Matlab,(chase),返回,v=1;,dt,=0.05;,x=0 0 10 10;,y=0 10 10 0;,for,i=1:4,plot(x(i),y(i),.,),hold on,end,d=20;,while,(d0.1),x(5)=x(1);y(5)=y(1);,for,i=1:4,d=,sqrt,(x(i+1)-x(i)2+(y(i+1)-y(i)2);,x(i)=x(i)+v*,dt,*(x(i+1)-x(i)/d;,y(i)=y(i)+v*,dt,*(y(i+1)-y(i)/d;,plot(x(i),y(i),.,),hold on,end,end,计算程序:,To,Matlab,(chase),返回,离散系统模拟实例:排队问题,排队论,主要研究随机服务系统的工作过程。,在排队系统中,服务对象的到达时间和服务时间都是随机的。排队论通过对每个个别的随机服务现象的统计研究,找出反映这些随机现象平均特性的规律,从而为设计新的服务系统和改进现有服务系统的工作提供依据。,对于排队服务系统,顾客常常注意排队的人是否太多,等候的时间是否长,而服务员则关心他空闲的时间是否太短.于是人们常用排队的长度、等待的时间及服务利用率等指标来衡量系统的性能.,1 系统的假设:,(1)顾客源是无穷的;,(2)排队的长度没有限制;,(3)到达系统的顾客按先后顺序依次进入服务,即,“,先到先服务,”,。,单服务员的排队模型,:,在某商店有一个售货员,顾客陆续来到,售货员逐个地接待顾客当到来的顾客较多时,一部分顾客便须排队等待,被接待后的顾客便离开商店设:,1顾客到来间隔时间服从参数为0.1的指数分布,对顾客的服务时间服从,上的均匀分布,排队按先到先服务规则,队长无限制,假定一个工作日为8小时,时间以分钟为单位。,1模拟一个工作日内完成服务的个数及顾客平均等待时间,t,2,模拟100个工作日,求出平均每日完成服务的个数及每日顾客的平均等待时间。,2 符号说明,w:,总等待时间;,c,i,:,第,i,个顾客的到达时刻;,b,i,:,第,i,个顾客开始服务时刻;,e,i,:,第,i,个顾客服务结束时刻,x,i,:,第,i-1,个顾客与第,i,个顾客之间到达的间隔时间,y,i,:,对第,i,个顾客的服务时间,c,1,b,1,c,3,c,4,c,5,c,2,e,1,b,2,e,2,b,3,e,3,b,4,e,4,b,5,c,i,=,c,i,-1,+,x,i,e,i,=,b,i,+,y,i,b,i,=max(,c,i,e,i,-1,),t,3 模拟框图,初始化:令,i=1,,e,i,-1,=0,w=0,产生间隔时间随机数,x,i,参数为0.1的指数分布,c,i,=,x,i,b,i,=,x,i,产生服务时间随机数,y,i,4,15,的均匀分布,e,i,=,b,i,+,y,i,累计等待时间:,w=w+,b,i,-,c,i,准备下一次服务:,i=i+1,产生间隔时间随机数,x,i,参数为0.1的指数分布,c,i,=,c,i,-1,+,x,i,确定开始服务时间:,b,i,=max(,c,i,e,i,-1,),b,i,480?,Y,N,i=i-1,t=w/i,输出结果:完成服务个数:,m=i,平均等待时间:,t,停止,1,模拟一日,To,Matlab,(simu1),2,模拟100日,To,Matlab,(simu2),返回,用蒙特卡洛法解非线性规划问题,基本假设,试验点的第,j,个分量,x,j,服从,a,j,b,j,内的均匀分布,符号假设,求解过程,先产生一个随机数作为初始试验点,以后则将上一个试验点的第,j,个分量随机产生,其它分量不变而产生一新的试验点这样,每产生一个新试验点只需一个新的随机数分量当,KMAXK,或,PMAXP,时停止迭代,框 图,初始化:给定,MAXK,MAXP;k=0,p=0,Q:,大整数,x,j,=,a,j,+R(,b,j,-,a,j,)j=1,2,n,j=0,j=j+1,p=p+1,PMAXP?,Y,N,x,j,=,a,j,+R(,b,j,-,a,j,),g,i,(X)0?,i=1
展开阅读全文