计算机仿真、随机模拟基本内容:1、计算机仿真的基本概念2、随机数的产生3、时间步长法4、事件步长法6、实验作业5、MonteCarlo方法一、计算机仿真的基本概念仿真:就是将所研究的对象用其它手段加以模仿的一种活动。{实物仿真非实物仿真如曹冲称象、军事演习、风洞试验等计算机仿真:是一种非实物仿真方法,通过建立数学模型、编制计算机程序实现对真实系统的模拟。从而了解系统随时间变化的行为或特性,以评价或预测一个系统的行为效果,为决策提供信息的一种方法.它是解决较复杂的实际问题的一条有效途径。鼠疫的检测和预报,三峡的安全、生态,公交车的调度,航空管理,经营投资,道路的修建,通信网络服务,电梯系统服务等等。计算机仿真举例:•难以用数学公式表示的系统,或者没有建立和求解数学模型的有效方法.•虽然可以用解析的方法解决问题,但数学的分析与计算过于复杂,这时计算机仿真可能提供简单可行的求解方法.•希望能在较短的时间内观察到系统发展的全过程,以估计某些参数对系统行为的影响.•难以在实际环境中进行实验和观察时,计算机仿真是唯一可行的方法,例如太空飞行的研究.•需要对系统或过程进行长期运行比较,从大量方案中寻找最优方案.适用计算机仿真解决的问题:•便于重复进行试验,便于控制参数,时间短,代价小;计算机仿真的优点:•可以在真实系统建立起来之前,预测其行为效果,从而可以从不同结构或不同参数的模型的结果比较之中,选择最佳模型;•对于缺少解析表示的系统,或虽有解析表示但无法精确求解的系统,可以通过仿真获得系统运行的数值结果;•对于随机性系统,可以通过大量的重复试验,获得其平均意义上的特性指标。仿真常用术语:系统:一些具有特定功能相互之间以一定的规律联系着的物体所组成的总体.系统的对象、系统的组成元素都可以称为实体.实体:属性是对实体特征的描述,可以是文字型、数字型或逻辑型.属性:实体在一段时间内持续进行的操作或活动.活动:例如:银行系统,销存系统改变系统状态的瞬间变化的事情.事件:为了限制所研究问题涉及的范围,用系统边界把所研究的系统与影响系统的环境区分开来.系统边界:事件表一般是一个有序的记录列,每个记录包括事件发生时间、事件类型等一些内容.事件表:系统的状态是指在某一时刻实体及其属性值的集合.状态:表示仿真时间的变量.仿真时钟:仿真研究步骤问题的阐述设置目标及完整的项目研究计划建立模型收集数据编程序程序验证模型确认试验设计运行与分析进一步运行仿真结束输出结果是是是是否否否否系统分析模型构造模型运行输出结果明确问题和提出总体方案:把被仿真系统的内容表达清楚;弄清仿真的目的、系统的边界;确定问题的目标函数和可控变量;找出系统的实体、属性和活动等。系统分析建立模型;选择合适的仿真方法(如时间步长法、事件表法等);确定系统的初始状态;设计整个系统的仿真流程图。收集数据;编写程序、程序验证;模型确认。模型构造运行:确定具体的运行方案,如初始条件、参数、步长、重复次数等,然后输入数据,运行程序。改进:将得出的仿真结果与实际系统比较,进一步分析和改进模型,直到符合实际系统的要求及精度为止。模型的运行与改进设计出结构清晰的仿真结果输出。包括提供文件的清单,记录重要的中间结果等。输出格式要有利于用户了解整个仿真过程,分析和使用仿真结果.设计格式输出仿真结果(库存问题)某电动车行的仓库管理人员采取一种简单的订货策略,当库存量降低到P辆电动车时就向厂家订货,每次订货Q辆,如果某一天的需求量超过了库存量,商店就有销售损失和信誉损失,但如果库存量过多,会导致资金积压和保管费增加。若现在已有如下表所示的两种库存策略,试比较选择一种策略以使总费用最少。计算机仿真举例:重新订货点P辆重新订货量Q辆方案1125150方案2150250这个问题的已知条件是:(1)从发出订货到收到货物需隔3天。(2)每辆电动车保管费为0.50元/天,每辆电动车的缺货损失为1.60元/天,每次的订货费为75元。(3)每天电动车需求量是0到99之间均匀分布的随机数。(4)原始库存为110辆,并假设第一天没有发出订货。分析:这一问题用解析法讨论比较麻烦,但用计算机按天仿真仓库货物的变动情况却很方便。我们以30天为例,依次对这两种方案进行仿真,最后比较各方案的总费用,从而就可以做出决策。计算机仿真时的工作流程是早上到货、全天销售、晚上订货,以一天为时间步长进行仿真。首先检查这一天是否为预定到货日期,如果是,则原有库存量加Q,并把预定到货量清为零;如果不是,则库存量不变。(程序附后)接着仿真随机需求量,这可用计算机语言中的随机函数得到。若库存量大于需求量,则新的库存量减去需求量;反之,则新库存量变为零,并且要在总费用上加缺货损失。然后检查实际库存量加上预定到货量是否小于重新订货点P,如果是,则需要重新订货,这时就加一次订货费。如此重复运行30天,即可得所需费用总值。由此比较这两种方案的总费用,可以得到最好的方案。1.均匀分布的随机数及其产生对随机现象进行模拟,实质上是要给出随机变量的模拟.也就是说利用计算机随机地产生一系列数值,它们的出现服从一定的概率分布,则称这些数值为随机数。最常用的是在(0,1)区间内均匀分布的随机数,也就是我们得到的这组数值可以看作是(0,l)区间内均匀分布的随机变量的一组独立的样本值.其它分布的随机数可利用均匀分布的随机数产生.二、随机数的产生产生模拟随机数的计算机命令在Matlab软件中,可以直接产生满足各种分布的随机数,命令如下:1、产生m*n阶(0,1)均匀分布的随机数矩阵:rand(m,n)产生一个(0,1)均匀分布的随机数:rand2、产生m*n阶(a,b)均匀分布U(a,b)的随机数矩阵:unifrnd(a,b,m,n)产生一个(a,b)均匀分布的随机数:unifrnd(a,b)randn(m,n):m*n阶N(0,1)标准正态分布随机数矩阵3、正态分布m*n阶均值为,标准差为的正态分布的随机数矩阵:)n,m,,(normrnd:ToMatlab(rnd)均值为,标准差为的正态分布的随机数),(normrnd:4.指数分布•若连续型随机变量X的概率密度函数为其中0为常数,则称X服从参数为的指数分布。000xxe)x(fx•指数分布的期望值为1•电子元件的寿命,电话的通话时间,微生物的寿命,随机服务系统中的服务时间都服从指数分布。•指数分布在排队论、可靠性分析中有广泛应用。)n,m,(exprnd:m*n阶期望值为的指数分布的随机数矩阵注意:Matlab中,产生参数为的指数分布的命令为exprnd().1例顾客到达某商店的间隔时间服从参数为0.1的指数分布指数分布的均值为1/0.1=10。指两个顾客到达商店的平均间隔时间是10个单位时间.即平均10个单位时间到达1个顾客.顾客到达的间隔时间可用exprnd(10)模拟。•设离散型随机变量X的所有可能取值为0,1,2,…,且取各个值的概率为其中0为常数,则称X服从参数为的泊松分布。,,2,1,0k,!ke)kX(Pk5.泊松分布•容器内的细菌数,十字路口的交通事故,寻呼台的寻呼次数及每天到商店购买商品的顾客数等都服从泊松分布。•泊松分布的期望值为),,(poissrnd:nmm*n阶参数为的泊松分布的随机数矩阵•如相继两个事件出现的间隔时间服从参数为的指数分布,则在单位时间间隔内事件出现的次数服从参数为的泊松分布.即单位时间内该事件出现k次的概率为:,,2,1,0k,!ke)kX(Pk反之亦然。指数分布与泊松分布的关系:(1)指两个顾客到达商店的平均间隔时间是10个单位时间.即平均10个单位时间到达1个顾客.(2)指一个单位时间内平均到达0.1个顾客例(1)顾客到达某商店的间隔时间服从参数为0.1的指数分布(2)该商店在单位时间内到达的顾客数服从参数为0.1的泊松分布例2敌坦克分队对我方阵地实施突袭,其到达规律服从泊松分布,平均每分钟到达4辆.(1)模拟敌坦克在3分钟内到达目标区的数量,以及在第1、2、3分钟内各到达几辆坦克.(2)模拟在3分钟内每辆敌坦克的到达时刻。(1)用poissrnd(4)进行模拟ToMatlab(poiss)(2)坦克到达的间隔时间应服从参数为4的指数分布,用exprnd(1/4)模拟。ToMatlab(time)2.随机变量的模拟利用均匀分布的随机数可以产生具有任意分布的随机变量的样本,从而可以对随机变量的取值情况进行模拟.(1)离散型随机变量的模拟设随机变量X的分布律为P(X=xi)=pi,i=1,2,…,令p(0)=0,p(n)=∑pi,n=1,2,…,将p(n)作为分点,把区间(0,1)分为一系列小区间(p(n-1),p(n)).对于均匀的随机变量R~U(0,l),则有P(p(n-1)R≤p(n))=p(n)-p(n-1)=pn,n=1,2,…,由此可知,事件(p(n-1)R≤p(n))和事件(X=xn)有相同的发生的概率.因此我们可以用随机变量R落在小区间内的情况来模拟离散的随机变量X的取值情况.具体执行的过程是:每产生一个(0,1)上均匀分布的随机数r,若p(n-1)r≤p(n)则理解为发生事件“X=xn”.例3随机变量x={0,1,2}表示每分钟到达超市收款台的人数,有分布列xk012pk0.40.30.3模拟十分钟内顾客到达收款台的状况.ToMatlab(paidui)仿真分为静态仿真和动态仿真。动态仿真可分为连续系统仿真和离散系统仿真。离散系统是指状态变量只在某个离散时间点集合上发生变化的系统。例如:电梯系统服务,排队系统,通信网络服务的仿真等。连续系统是指状态变量随时间连续改变的系统。例如:传染病的检测和预报等。为了仿真系统必须设置一个仿真时钟将时间从一个时刻向另一个时刻推进,并且可随时反映系统时间的当前值。模拟时间推进方式有两种:时间步长法和事件步长法。模拟离散系统常用事件步长法。连续系统常用时间步长法(也称固定增量推进法或步进式推进)。三、时间步长法时间步长法:按照时间流逝的顺序,一步一步地对系统的活动进行仿真。在整个仿真过程中,时间步长固定不变。基本思想:在进行系统仿真的过程中,可以把整个过程分成许多相等的时间间隔,时间步长的长度可以根据实际问题分别取作秒,分,小时,天等。程序中按照这个步长前进的时钟就是仿真的时钟。基本步骤:首先选取对象系统的一个初始起点作为仿真时钟的零点,然后根据实际问题的需要,选定一个时间步长。于是从仿真时钟的零点开始,每推进一个时间步长就对系统的活动和状态按照预定的规则和目的进行考察、分析、计算和记录,直到预定仿真结束时刻为止。时间步长法初始状态时间步长加1在当前步长内,考察分析,计算和记录系统的活动仿真时间到否?结束输出结果是否应用举例-池水含盐量问题例6:池水含盐量问题某水池有2000m3水,其中含盐2kg,以每分钟6m3的速率向水池内注入含盐率为0.5kg/m3的盐水,同时又以每分钟4m3的速率从水池流出搅拌均匀的盐水.试用计算机仿真该水池内盐水的变化过程,并每隔10min计算水池中水的体积、含盐量和含盐率.欲使池中盐水的含盐率达到0.2kg/m3,需经过多少时间?池水含盐量随时间变化的示意图分析:系统中,实体是水,属性是水的体积、含盐量和含盐率,活动是水的注入与流出,由于注入和流出活动的作用,池中水的体积与含盐量、含盐率均随时间变化,初始时刻含盐率为0.001kg/m3,以后每分钟注入含盐率为0.5kg/m3的水6m3,流出混合均匀的盐水4m3,当池中水的含盐率达到0.2kg/m3时,结束仿真过程.为了能定量地考察系统在任一时刻的属性,引入下列记号:注水速度:WI=6m3/min排水速度:WO=4m3/min注入水的含盐率:SI=0.5kg/m3最终含盐率:SF=0.2kg/m3T时刻水的体积:VTm3T时刻水的含盐量:STkgT时刻水的含盐率:SR=ST/VTkg/m3对于这样一个连续系统仿真时,必须在一系列离散时间点t0t1t