1、计 算 机 仿 真,1.系统仿真概论 2. 时间步长法 3. 事件表法 4. Monte Carlo 方法,计算机仿真是利用计算机对一个实际系统的结构和行为进行动态演示,以评价或预测该系统的行为效果。它是解决较复杂的实际问题的一条有效途径。计算机仿真在航空、机电、冶金等工业部门及社会经济、交通运输、生态系统等方面有着广泛的应用,已成为分析、研究和设计各种系统的重要手段。,一.什么是计算机仿真,绪 论,二. 为什么要进行计算机仿真,1)在一个实际系统还没有建立起来之前,要对系统的行为或结果进行分析研究时,计算机仿真是一种行之有效的方法。2)在有些真实系统上做实验会影响系统的正常运行,如在生产中任
2、意改变工艺参数可能会导致废品,在经济活动中随意将一个决策付诸行动可能会引起经济混乱。3)当人是系统的一部分时,他的行为往往会影响实验的效果,这时最好对系统进行仿真研究。,4)在实际系统上做实验时,很难保证每次操作的条件相同,因而对实验结果的好坏很难作出正确的判断。5)在实际系统上做实验可能会花费很长的时间,费用太高或者有危险,使得实验不易进行。6)有些系统一旦建立起来之后就无法复原。例如要投资建立一个大型企业,要分析它建成之后的经济效益和社会效益,不能用建立起来试试看的办法,因为建成后就无法回到原来的状态了。,1)难以用数学公式描述的系统,或者没有求解的有效数学方法; 2)虽然可以用解析方法解
3、决问题,但数学的分析与计算过于复杂,这时计算机仿真可能提供简单可行的求解方法; 3)希望能在较短的时间内观察到系统发展的全过程,以估计参数对系统行为的影响; 4)难以在实际环境中进行实验和观察时,计算机仿真是唯一可行的方法,例如太空飞行的研究; 5)需要对系统或过程进行长期运行的比较,从大量方案中寻找最优方案。,三. 适合用计算机仿真解决的问题,计算机仿真应用早期局限在国防科技和军工部门(如航天,航空,核能等), 而如今深入到科学研究,工程设计,辅助决策,系统优化等各个方面, 使人们的许多传统观念和方法产生了重大变革。计算机仿真技术被称为继科学理论和实验研究后的第三种认识和改造世界的工具,计算
4、机技术的发展,计算数学的成熟, 使计算机仿真技术成为一种工程领域必不可少的重要设计手段,它的应用可以大大地缩短产品的开发周期和降低产品开发的成本, 从而提高产品的竞争力。,1. 系统仿真概论,1.1 系统 1) 系统一些具有特定的功能、相互之间以一定的规律联系的对象所组成的总体。 2) 系统边界 每个系统都存在于一定的环境中, 系统与环境之间的分界称为边界. 边界确定了系统的范围,边界以外对系统的作用称为系统的输入,系统对边界以外环境的作用称为系统的输出.,3) 系统的三要素 实体:系统内的对象,系统的组成元素.实体确定了系统的构成,也确定了系统边界。 如 属性:系统内实体的有效特征,它可以是
5、文字型、数 字型或逻辑型.属性也称为描述变量,描述每一实体的特征。 如 活动:系统内部发生的任何变化过程。活动定义了系统内部实体之间的相互作用,从而确定了系统内部发生的变化过程。 如.,4)系统状态 系统的状态是指在某一时间点上,实体及其属性值的集合。在任意给定的时间,对系统所有实体、属性和活动的情况,都用系统状态加以描述。,随机型活动通常用概率分布加以描述,如电路系统中的噪声、电话系统中通话时间的长短等,属于随机系统。,若系统中的某项活动结果受随机变化的影响,系统输入可能得到各种各样的结果,则称为随机系统。,5) 系统类型,若执行系统中某项活动的结果,其输出完全可以用输入加以描述,则为确定型
6、系统,按活动是否具有随机性分,5) 系统类型,按状态是否随时间连续变化分,系统S= 时间基;输入集;内部状态集;状态转移函数;输出集;输出函数 时间基是描述系统变化的时间坐标;,1.2 模型模型实际系统本质的抽象与简化 物理模型采用一定的比例按真实系统的“样子”制作数学模型用数学表达式形式来描述系统的内在规律系统模型水平模型描述的详细程度,物理仿真:在没有计算机以前,仿真都是利用实物或者它的模型来进行研究的,又称物理仿真。 优点:直接、形象、易信 缺点:模型受限、易破坏、难以重用。 数学仿真:对实际系统进行抽象,并将其特性用数 学关系加以描述而得到系统的数学模型,对数学模型进行实验的过程称为数
7、学仿真。 优点:方便、灵活、经济 缺点:受限于系统建模技术,即系统数学模型不易建立。 计算机技术的发展为数学仿真创造了环境。,1.3 仿真,计算机仿真 在研究系统过程中,根据相似原理,利用计算机来逼真模仿研究对象。研究对象可以是真实的系统,也可以是设想中的系统。 计算机仿真是将研究对象进行数学描述,建模编程,且在计算机中运行实现它不怕破坏、易修改、可重用。 计算机仿真可以用于研制产品或设计系统的全过程中,包括方案论证、技术指标确定、设计分析、生产制造、试验测试、维护训练、故障处理等各个阶段。 仿真算法 仿真算法是将系统模型转换成仿真模型的一类算法,在数字仿真模型中起核心和关键作用。 ,仿真步骤
8、及流程,1 系 统 分 析,2 模 型 构 造,3 运 行 与 改 进,4 输 出 结 果,2 时间步长法,2.1 仿真时钟在进行系统仿真时,可以把整个仿真过程分为许多相等的时间间隔,时间间隔的长度可根据实际问题分别取作秒、分、小时、天、周、月、年等。程序中按此间隔前进的虚拟时钟就是仿真的时钟,此时间间隔称为仿真时钟的步长。选取系统的一个初始状态作为仿真时钟的零点,仿真时钟每步进一次,就对系统的所有实体、属性和活动进行一次前面的扫描考察,按照预定的计划和目标进行分析、计算和记录系统状态的变化,这个过程一直进行到仿真时钟结束为止。此即为时间步长仿真法。,2.2 流程图,2.3 时钟步长法特点1)
9、 仿真时钟以等步长前进;2) 在一个步长内,认为系统的状态不变;3) 时钟每步进一次,就要对系统进行一次全面的考察,即使状态无变化也要扫描。,例1 池水含盐问题,要使池中盐水的浓度达到0.2kg/ m3,需经过多长时间?,1 )系统分析实体:盐水 属性:体积,含盐量,含盐率 活动:注入,流出,2.4 实例分析,在这个问题中,系统的状态随时间连续变化,要对这样一个连续系统进行仿真,必需在一系列离散时间点上进行考察,一般取等间隔时间点,设间隔为t (即仿真时钟步长)。,取T=0作为系统仿真的初始时刻, 当池水中盐的浓度达到0.2kg/m3时 仿真结束。,注水速度:6, 排水速度:4 每分钟水的体积
10、增加,642 注入水的含盐率:0.5, 每分钟向池内注入盐 60.53 最终含盐率:SF=0.2,t时刻 水的体积 VT 水的含盐量 ST 水的含盐率 SR 每分钟向池外流出盐 4SR 每分钟池内盐增加 3 4SR,2) 模型构造 收集、整理、分析数据,当前时刻t 水的体积 VT 水的含盐量 ST 水的含盐率 SR 下一时刻 t + t 水的体积: VT VT + 2 t 水的含盐量: ST ST + (3 - 4 SR) t 水的含盐率 : ST/ VT,系统的状态用 VT, ST,SR 表示,分析系统的状态更新规则,初 始 化: VT=2000,ST=2,SR=0.001,t=0, t=1
11、,T=0, 仿 真 流 程,在这个问题中,系统的状态随时间连续变化,系统离散化后,仿真结果与离散化的时间间隔即仿真时钟步长有关,显然步长越小,结果越精确。但步长越小,计算量越大。 本例中可取 t = 5 min t = 1 mint = 0.1 min 等进行计算,并与解析结果比较。,3) 运行与改进,4) 设计格式,输出仿真结果,t = 1 min的结果,追击问题的计算机模拟,练习,如图,正方形ABCD的四个顶点各有一个人,在某一时刻,四人同时出发以匀速v走向顺时针的下一个人,如果他们的方向始终保持对准目标,则最终将按螺旋状曲线汇合于中心点A, 1) 求出每个人的轨迹; 2) 若四个人的速度
12、不全相等,结果如何?,A,A,B,C,D,例2 库存问题,注意; P Q,其它已知条件1)从发出订货单到收到货物隔3天; 2)每辆自行车每天的保管费为0.75元; 3)每辆自行车每天的缺货费为1.8元; 4)每次的订货费为75元; 5)原始库存为115辆,并假设第一天没有发出订货单; 6)自行车每天的需求量服从099之间的均匀分布。,1 )系统分析实体1:自行车 属性:保管费,缺货费,库存量,需求量 活动:进货,销售实体2:订单 属性:从发出订货单到收到货物间隔,订货费 活动:发出订单,收到订货这是一个随机离散系统的仿真问题。,2) 模型建立,输入参数 订货点 P ;订货量 Q 注意 P Q
13、输入常量 从发出订货单到收到货物见隔d=3天 每辆自行车每天的保管费为c1=0.75元 每辆自行车每天的缺货费c2=1.8元 每次的订货费c3=75元 原始库存s=115辆 仿真总时间 T150天 变量 到货日期D,需求量R,日期t,预定到货量q 输出参数 总费用 C,数据整理与分析,系统状态系统状态变量:需求量,库存量,总费用有关费用的计算1) 发出订货单需要计算订货费;2)当需求量小于库存量时需计算保管费;3)当需求量大于库存量时需计算缺货费;,初 始 化: c1=0.75,c2=1.8,c3=75,s=115,T=150,d=3,D=0,q=0, C=0, t=1,s sQ, q=0,C
14、 C(R-s) c2,D = t + 3, q=Q C Cc3,初, 仿 真 程 序 流 程,输入参变量 P,Q,上述仿真过程做了如下假设仿真开始前没有订货;在上次订货到达前,如果缺货再订货;显然,假设2实际上是一种订货管理策略,可修改。,3) 程序运行、分析,4) 设计格式,输出仿真结果,比较这五种方案仿真得到的总费用,可以看出,方案4最好,即仓库管理员应取最低订货点为175辆,每次订250辆自行车的方案,这时在150天的总费用为26094元。,五种方案各运行100次的平均结果,3 事件表法,3.1 事件表事件表好像一本记事本,干完一件事后就把它从记事本中勾销,而把新的要完成的工作再登记到记
15、事本中。事件表法的主要思想是:将系统的仿真过程看成一个事件序列,根据事件出现的时序,用事件表来调度事件执行的顺序,以此使得系统的仿真过程有条不紊地进行下去。这种方法要求对系统的各种事件进行详细的描述,因此,当事件之间没有太多的相互作用和事件数目不是太多时,应用事件表法比较有效。,初 始 化,3.2 仿真流程,事件表,3.3 事件表法特点1) 仿真时钟每次前进的步长取决于事件之间的间隔;2) 在一个步长内,系统的状态不变;3) 只有在有事件发生时,才对系统进行一次全面的考察。,3.4 实例分析,例1 排队系统 (考虑一个收款台的排队系统),某杂货店只有一个收款台,顾客到达收款台的间隔服从均值为4
16、.5的指数分布,每个顾客的服务时间服从均值为3.2、标准差为0.6的正态分布。时间的单位为分,服务时间不取负值。 试对100个顾客去收款台缴款排队过程进行仿真,并估计系统的以下特征: 1)顾客的平均等待时间,最大队长。 2)出纳员的工作强度。,1 )系统分析实体1:顾客C 属性:到达时刻CA,服务时间CS,离开时刻CL 活动:到达,离开实体2:出纳员S 属性:忙S=1,闲S=0 活动:忙,闲实体3:队列Q 属性:队列长度QL这是一个随机离散系统的仿真问题。,2) 模型建立,输入常量 指数分布的参数 =4.5 正态分布的参数3.2,=0.6 顾客总数N=100 变量 顾客到达时刻CA,服务时间C
17、S, 离开时刻CL 出纳员忙闲S,出纳员累计工作时间ST, 队列长度QL,顾客的总等待时间CT 输出参数 顾客的平均等待时间CM,最大队长QM, 出纳员的工作强度SR,数据整理与分析,系统状态系统状态变量:顾客总等待时间CT,出纳员总工作时间ST,队长QL 事件类型E :顾客到达E=1,顾客离开E=2有关量的计算1)顾客到达2)顾客离开3)出纳员累计工作时间, 队长;,相关表格,事件表格式,顾客表格式, 仿 真 程 序 流 程,顾客到达子程序框图,顾客离开子程序框图,上述仿真过程做了如下假设先到先服务;顾客不会因排队时间太长而离开;注意:假设2可修改。,3) 程序运行、分析,4) 设计格式,输
18、出仿真结果,为了了解仿真过程,需要输出一些中间过程变量及参量的值,可按事件处理的顺序来列表:,输出参数 顾客的平均等待时间CMCT/N 最大队长QM 在程序中记录 出纳员的工作强度 SRN个顾客的总服务时间/仿真结束时间,4 Monte Carlo 方法,4.1 Monte Carlo 方法Monte Carlo 是世界著名赌城摩洛哥的蒙特卡罗,在二次世界大战中,美国军方将一项绝密研究计划的代号命名为Monte Carlo ,其目的是研究铀裂变过程中链式反应的能量计算问题。Monte Carlo 方法是随机模型的计算机仿真方法,在用传统方法难以解决的问题中,有很大一部分可以用概率模型描述,由于
19、这类问题含有不确定的随机因素,难以用定量分析法得到解析结果,在这种情况下 Monte Carlo 方法是非常有效。,Monte Carlo 方法的历史可追溯到1777年法国科学家浦丰(Buffon)提出的一种计算圆周率的随机实验方法随机投针法,通过计算可知针与平行线相交的概率为: p = 2 l /d 其中 d 为平行线间距离 l 为针的长度, l d 将针投n次,若有m次与平行线相交,则可用m/n作为p的近似值,由此可计算出的近似值为,2nl / md,Monte Carlo 方法的步骤,4.2 Monte Carlo 方法的步骤和数学原理,Monte Carlo 方法的数学原理,1)解的稳
20、定性问题:设 x1, x2 xn是服从同一分布的随机变量,且有有限的数学期望和方差2,根据大数定律, x1, x2 xn的算术平均当n时以概率1收敛到,即,2)收敛速度,由中心极限定理,4.3 随机数的生成方法,用Monte Carlo 方法解题时,需要根据随机变量的分布生成随机变量的若干个具体的取值,叫做抽样。随机变量的抽样方法很多,不同的分布采用的抽样方法不尽相同。 0, 1 区间上的均匀分布随机变量的抽样是其中最基本的问题,在计算机上,其他分布的随机数都是在此基础上产生的。 目前计算机上常用的高级语言都有产生均匀分布随机数的系统函数,我们可以直接使用而不必关心其实现原理。,仿真对随机数的
21、要求,1)准确性:即生成的随机数准确的服从要求的分布 2)快速性:有些随机仿真问题中,需要生成几万甚至几十万个随机数,这样就要求生成随机数的速度要快。这一速度极大的影响仿真的速度。下面介绍几种从均匀分布随机数产生非均匀分布随机数的方法。用 r, r1, r2 , r3 , 代表独立的0, 1均匀分布的随机数。,设连续型随机变量X的分布函数为F(x),若F(x)存在反函数F1(x),则随机数 x = F1( r ) 是X的一个样本。例 指数分布随机数的生成F(x)1e-x, x0 , F1(x)= - ln(1-x)/ 抽样方法为:x = - ln(1-r)/,1)分布函数抽样法,生成均匀分布随
22、机变数 r (0,1) 若 Fk1 r Fk 则随机数 x = xk 是X的一个样本。,设离散型随机变量X的分布率为,其中Fk = p1 + p2 + + pk 显然有 F1 F2 .Fn Fn+1.1 令 F0 =0,有些随机变量的分布函数很难求出其反函数, F1(x),若能推倒出其近似表达式G 1(x), 则随机数 x = G1( r ) 是X的一个近似样本。 例 标准正态分布随机数的生成 可用以下两种近似方法,2)近似抽样法,对反函数F1(x)作逼近 可得抽样方法为,其中,方法2,由中心极限定理可知:当较大时,近似服从标准正态分布,可得抽样方法为,实际中常取n=12,得,4.4 实例分析
23、,计算二重积分,1) 建立待计算积分的概率模型。设二维随机变量 r = (X, Y) 服从区域上的均匀分布,则随机变量u(X, Y)的数学期望为,E u(X, Y) =,例1 用Monte Carlo 方法计算积分,2)抽样计算生成二维均匀分布随机数 r1, r2, r3, ,rn, 计算u( ri ) i = 1,2, n,I的近似值为,1) 建立概率模型。当粒子在某内点B时,统计与其相连的临点数k,并将临点依次用1到k编号,然后从1到k中等概率地任选一个数,则粒子移到对应此编号的点。若此点为边界点,则游动结束,记录边界吸收的能量,然后开始下一轮游动。,例2 二维随机游动问题,2)抽样计算在第m轮游动中,当粒子游动到某内点B时,生成均匀分布随机数 r,若与B其相连的临点数为k,则将区间(0,1) 分成k个小区间,若r落在第i个小区间,则粒子游动到B的第i个临点,如此继续,直至粒子被某边界点A i吸收,则本轮游动结束,记录边界吸收的能量Em = f i,然后开始下一轮游动。,则由Q点出发的粒子被边界吸收的能量的近似值为,本讲结束 !,