计算机仿真技术

更新时间:2024-04-24 08:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

计算机仿真技术

1. 绪论

自我介绍:张绍阳,交通信息工程系, 课程名称:系统仿真技术。

1.1. 关于教材

不进行指定,广泛的参考,大多教材都是介绍性的,应用型的可以参考具体的软件的帮助,理论性的研究大多在最新的论文中。

1.2. 导论

大家都听过的名次:仿真、模拟,已经成为一门学科。

美国国家关键技术委员会1991年确定仿真技术为影响美国安全和繁荣的22个关键技术之一。在军事、航空、航天、原子能、工程、交通、制造行业等已经具有了广泛的用途。

仿真技术种类繁多,大家听说过的matlab仿真、有限元仿真、虚拟现实仿真、离散系统仿真等都是仿真,

1、 他们之间有什么样的规律,如何认识, 2、 在进行应用时如何去选取合适的工具, 3、 如果研究仿真技术,其研究领域是什么 这些都将在本门课中进行解决。

1.3. 研究生教学的特点

本门课程是导论性的课,虽然是学位课,但是希望大家了解研究生教学的特点:研究生培养目标是独立解决问题的能力,而不是纯粹的知识或者技能,用一个例子来理解:挖金子,对于本科生培养的是认识金子、认识工具、使用工具的方法;对于研究生则是金矿的形成规律、工具的选择、方法的选择等;对于博士生,则是为什么要挖的问题了。

1.4. 系统仿真定义

从认识论角度,仿真是对现实世界的模拟,但是现实世界是庞大的,无界的,在科学研究过程中,我们经常把研究内容界定在一定的范围,这个范围我们称之为系统,在仿真研究中,我们也是对现实世界中的某个系统进行仿真。称之为:系统仿真。 定义:系统仿真是一相似原理、系统技术、信息技术及应用领域的有关专业技术为基础,以计算机、仿真器和各种专用物理效应设备为工具,利用系统模型对真实的或设

想的系统进行动态研究的多学科的综合性技术。

1.5. 基础和工具

(1)相似原理,研究事物之间相似规律及其应用的科学。 相似:是指事物之间某些共性的客观存在。

相似是相对的,在某些层面是相似的,但从其他角度来看又是不同的。 例如:男女同学,从人性来讲是相似的,从微观来讲是不同的。 计算机中的一个点和足球,从视觉来讲是不同的,从运动规律来看又是相似的。 作的不好的动画与文学巨著,从视觉来讲是相似的,但表现力方面又是不同的。 仿真是利用模型对现实世界的一种模拟,需要让人感觉到模型象是现实世界,因此,需要对相似性进行研究。 相似性的研究包括: 几何相似:将实体按比例缩小或者放大。大楼的模型和楼实体 离散相似:连续曲线和取样曲线 采样系统 等效相似:输入输出相同 风洞实验室,用来模拟风吹桥梁的效果。 感觉相似:三位虚拟现实系统,视觉、听觉、嗅觉、味觉、触觉等多方面感觉 思维相似:人工神经网络,仿真大脑的计算方法 (2)系统技术

系统的定义:系统是指具有某些特定功能,按照某些规律结合起来、互相作用、互相依

存的 所有物体的集合或总和。

系统的特征:整体性,不可分割 相关性:各物体相互有关 系统的内容:

实体:存在于系统中的每一项确定的物体。 属性:实体的每一项有效的特征 活动:导致系统状态发生变化的一个过程。 其中,实体是关键,研究系统最终应以实体来检验。

系统状态:由系统内部的实体、属性和活动组成的整体称为系统的状态。

静态系统:处于平衡状态的系统称为静态系统, 动态系统:状态随时间变化的系统称为动态系统。 系统的分类:

按生命特征:生命,非生命

按物理特征:工程系统,非工程系统

按状态变化:a)连续系统,状态变化是连续的(动力学系统、生态系统、场)

b)离散系统,b1)离散时间系统(采样系统)、b2)离散事件系统 混合系统

从技术角度,分为

连续系统(a+b1):用方程描述,研究方法为控制论。 连续系统的例子:负反馈系统

其状态是连续变化的。即器件两端的电压、电流等是连续变化的。

离散事件系统(b2):不能用方程描述,研究方法为:排队轮、运筹学等

例子:研究一个汽车加油站的服务水平,其中汽车、油泵、操作人员、收

银员等构成了一个离散系统,其状态的变化是由于汽车的来到,即受到一个离散事件的影响,所以称为离散事件系统。

系统中的关键名词:

系统环境:影响系统而不受系统控制的外界因素的集合

举例:天气、气温、突发事件,

系统边界:为了限定所研究问题涉及的范围。

举例:开发软件系统时给出的边界。Uml总体图首先对外部角色与系统的交互进行建模。

内生活动:内部发生的活动

外生活动:外部发生(边界以外、环境)的活动 开放系统:含有外生活动的系统 封闭系统:没有外生活动的系统

大系统、复杂系统:规模庞大、功能结构复杂关联信息多的系统。

注:-大系统理论专门研究 相对而言的。

(3)信息技术

主要指计算机技术。这是我们的特长。 (4)应用领域的专业知识

风洞试验室,不是把模型吹动,而是根据重量、结构等物理规律对理论进行验证。即系统中实体的运动规律要符合本专业的运动规律。

又如:挖掘机仿真,其挖掘速度要符合挖掘机的特性,不能是模型本身的速度。 这些都是专业领域的知识,同时也是我们从事仿真的瓶颈。 (5)仿真器

仿真器一般是软件或者在特定硬件平台上运行的软件。例如ARM仿真器,通常开发的程序需要在真实的环境中运行才能检验,而在仿真器里即可实现调试。

一个专用的仿真软件,用户把所建立的模型放入即可开始仿真,也可以叫做仿真器。 (6)物理效应设备

研究的热点之一,也是花钱最多的地方。其作用是产生与真实环境相似的效果。 例如风洞试验室,鼓风机,功率非常大,因为要模拟自然风,电费的问题。 振动压路机试验室,土槽,也是对真实环境的模拟。

1.6. 现代仿真的基本框架

第二次课:回顾,上节课了解了系统仿真的概念,对系统仿真的基础进行了初步认识,并将系统分为了连续系统和离散事件系统。从系统仿真的概念可知,系统仿真是以。。。为基础,使用。。。工具,利用系统模型对系统进行研究。

那么系统仿真的框架是什么呢?

1984年,Oren提出现代仿真的基本概念框架:建模----试验----分析。 同时也表达了系统仿真的流程。

那么下面我们对模型和建模的基本知识进行了解。

1.7. 模型和建模基础知识

模型是对实际系统的一种抽象,是系统本质的描述,能够准确地反映实体的主要特征和运动规律,因此优于实体。

人们认识事物也是从特殊到一般,模型符合人类认识事物的规律。 模型的分类:(1)实体模型,例如宇宙模型、大楼模型,根据相似性建立

(2)数学模型

(3)可视化模型,虚拟现实模型

一般研究的是数学模型,数学模型用来分析,而实体模型和可视化模型是看的。

静态系统:代数方程

动态系统:

从技术角度系统分为(1)离散事件系统,其对应模型有排队论模型、Petri网模型、网络计划模型(CPM、Pert、GERT),流程图;建模方法分别为:面向事件的建模方法\\面向活动的建模\\面向进程的建模;对应的仿真方法有:事件调度法、活动扫描法、进程交互法。

(2)连续系统,对应模型有

集中参数:微分方程、状态方程、传递函数;常用的仿真算法:数值积分法、离散相似法、置换法、根匹配法、增广矩阵法。

分布参数:偏微分方程(有限元);常用的仿真算法:有限差分法、线上求解法,有限元法。

系统仿真就是在模型基础上对系统进行的试验。

数学建模过程:确定模型类型、建立模型结构(方程阶次)、给定参数 建模遵循的原则:模型的详细程度与目的相适应。

建模的信息源包括:建模目的、先验知识(球是圆的,前人的研究成果)、试验数据(系统自身的表现)。

建模方法:归纳法(从被观测的行为进行总结,从特殊到一般)、演绎法(根据先验知识,如果先验知识不对,则推导是错误的,例如欧式几何的先验知识是平行公理,如果平行公理改变,则得出不同的几何)

模型分析方法:解析法和实验法

解析法求解困难,实验法即仿真的方法。

1.8. 系统仿真研究内容

(1) 相似理论

(2) 模型论:建模方法,模型的体系结构、建模工具、软件等,creator,3DMAX (3) 仿真系统理论:仿真系统的体系和构成,系统设计,研制等,例如CPN,

renew,Matlab,Simulink,

(4) 仿真方法论:根据应用领域的需求,研究仿真基本思想和方法,例如使用

定量还是定性仿真、人在回路仿真、交互仿真

(5) 仿真方法的可信性VV&A(Varification,Validation,Accredation,校核,

验证和确认)

校核:确定仿真系统是否准确地代表了开发这的概念描述和设计的过程 验证:从仿真系统的应用目的出发,确定仿真系统代表真实世界准确程度的过程。一般从统计的方法着手,例如

确认:官方正式接受仿真系统能够为专门的应用目的服务的资格认可。

(6) 仿真系统的应用

2. 连续系统仿真

定义:连续系统:系统状态变化是连续的。

2.1. 集中参数系统的建模

前面讲过:连续系统的模型集中参数、分布参数。以微分方程表示。微分方程属于数学内容,不属于本门课程范围。我们以几个例子来说明连续系统的建模。

例1:一个培养盒中有100单位细菌,已知细菌增长速度和细菌总数成正比,24小时候细菌总数量是400单位,求任意时刻t细菌总数模型N(t).

解:

dN(t)/dt = kN(t) N(0)=100 N(24)=400

例2:RLC电路,求输入和输出关系。IO

由电压定律得:Ldi(t)/dt+1/C fi(t)dt +Ri(t)=Ui(t) 消去中间变量i(t)=duo(t)/dt*C

LCdU02(t)/dt2 +RC dU0(t)/dt+U0(t)=Ui(t)

另外,速度、加速度、运动阻尼等存在变的问题等都可以用微分方程表示出来。

还有没有更复杂问题的建模?

有,例如世界经济模型、人口增长模型

2.2. 集中参数系统的仿真方法 2.2.1. 数值积分法 2.2.1.1. 简介

数值积分就是对常微分方程建立离散形式的数学模型---差分方程,并求出其数值解。 例如:dy = f(y,t), y(t0)=y0 一阶微分方程。

数值积分就是求出t0----tn一系列离散点对应的y值。 h=tn-tn-1,称为步长。 常用的积分方法: (1) 欧拉法

对方程进行积分(t0-t1),可以得到y(t1)=y0+ff(y,t)dt

当步长足够小时,用矩形面积表示积分可以得到y(t1)=y0+hf(y0,t0) 进一步可以写出一般形式。n+1,n (2) 梯形法

使用梯形面积代替矩形面积。 (3) 龙格----库塔法

使用泰勒级数展开在tn点。高阶导数不好求,用几个点上的函数值f的线性组合来确定其中的系数。实质上是将欧拉法/折线法再进一步细化。消除误差。

(4) 其他方法:亚当穆斯法,是一种线性多步法。不能自启动,需要先用其他方法计

算出k-1个点,然后才能启动k步的亚当穆斯法。根据这K-1个值,利用牛顿后插值公式近似计算f(y,t)

2.2.1.2. 数值积分法中的几个问题

(1) 变步长

在保证仿真过程满足一定精度的前提下,为使计算量尽可能小,尽可能采用较大的步长。 两个问题:误差的估计,计算量的估计。

常用的方法:对分策略,计算局部误差,如果>最大误差步长减半;如果<最小误差,步长加倍;否则不变。

另外还有:最优步长法,估计下一步的最大步长;Gear方法。 这些方法都是构造出来的方法,在数学中,构造是数学学科发展的一个重要的方法。从数的发展历史可以看出。正数(正整数、分数、正有理数)很好理解,计数的需要,负数是什么概念呢?后来,又出现了虚数,虚数的物理意义在数学界一直没有很好的解释。

众所周知,实数具有物理指称性,比如称某物质量为5千克,体积为15立方厘米等等,都是用实数作为物理指称的。一般认为,只有具有实数物理指称性的对象才可能具有可运算性、可观察性、可分性、可延性、有序性等等物理性质,因而是物理实在,否则就是非物理实在,是虚幻的乌有。因此,按照这样的观点,虚数在物理中是没有地位的,因为没有虚数的物理指称性,即虚数的物理指称性的事物是不存在,如果谁说有存在,那肯定是假的。所以,虽然虚数早在16世纪就被卡尔丹发现,但是至今仍然是卡迪尔的观点:“虚数的本意是指它是假的”在人们物质观中占统治地位。

今天,如果说虚数是具有物理指称性的,可能为时尚早,但是,说这种可能性已经初现端倪,却不是空穴来风。虽然虚数早已通过复数形式“半推半就”地进入物理学,但是被指称为虚过程(如跃迁)和虚粒子(如虚光子)事实上是越来越多了。尽管目前这些事例大多还集中在微观物理中,但是不能否认它们是具有虚数的物理指称性的事实。因此,我想难道我们就不能大胆地推进一步,设想夸克、暗能量和真空都是具有虚数的物理指称性的对象?

数的运算:加减乘除,加法交换率,乘法交换律,矩阵不满足乘法交换律。在四元数中,也不满足乘法交换律。

但是,这些数学在物理中都得到了应用。

以上的内容表明,我们也可以构造一种步长的优化策略,只要是让计算量有所减小即可。

论文:变步长龙格库塔法研究及其实现 (2) 算法误差和稳定性 误差:截断误差和舍入误差

基于泰勒展开攻势的数值计算方法都有截断能够误差

欧拉法h2>梯形法h3>4阶龙格库塔法h5>亚当穆斯法h6

每一步积分都会带来舍入误差,随着运算的进行,舍入误差有可能被放大。

例如1/9=0.11,两边同乘以9以后误差被扩大。

稳定性问题:误差的积累是否受到控制。

判断数值积分法使用试验方程,如果数值积分公式为yn?1??(h?)yn 当差分方程满足稳定条件

?(h?)?1,算法才稳定。

因此,可以得到各种算法的稳定条件。

提示:在选择步长时,应对算法的稳定性进行判断。

(3) 步长的选择

从数值计算角度,步长越小,截断误差越小,但同时步数增多,所以舍入误差增大。 因此,步长应进行合理选择。一般要小于系统的时间常数的1/10。 时间常数

(4) 算法的选择

没有一种算法是最好的,如果函数形式比较简单,则适合采用单步法,如果精度要求低,则欧拉法,否则可以采用龙格库塔法,当函数形式比较复杂时,计算量大,宜采用多步法,如亚当穆斯发,这类方法每积分一步只需计算一次函数值。 (5) 病态系统仿真

?x1?1/2x2?1/3x3?11/6????1/2x1?1/3x2?1/4x3?13/12?,如果采用近似数字代替分数,则答案为?1/3x?1/4x?1/5x?47/60?123??x1=-6.22,x2 = 38.25, x3=-33.65

而真正解x1=x2=x3=1

对于病态问题,要采用病态问题算法。

2.2.2. 离散相似法

离散相似法就是将连续系统的数学模型进行离散化处理,得到其等价的模型,对于离散化模型进行求解的仿真方法。

常用的方法是加入采样开关和零阶保持器。

离散相似法的精度和校正问题:精度是指离散相似模型与原连续系统模型等效的程度。由于加入了虚拟的采样开关和保持器,保持器不可能完整无误地将连续信号重构出来,因此,离散相似模型必然存在误差。一般来讲,采样的间隔越大,仿真的误差越大,采样频率必须满足采样定理,即fs?fm,fs为采样频率=1/T,fm为连续信号的最大频率。实际中,采样频率可按照最大频率的30-50倍进行选择。

2.3. 分布参数系统仿真算法

在时间和空间两个方面将系统离散化,进而得到一组代数方程,根据初始条件将任意时刻任意空间位置系统中的状态变量的值计算出来。

例如:一条长为l的细棒,其侧面是绝缘的,t=0时,温度分布为?(x),今将她两端接到温度为u1(t)和u2(t)的两个物体上,试计算在不同时刻,棒上各点的温度。

根据热力学原理,可以得到该问题的数学模型:

?2u(x,t)?u(x,t)K?,其中K为导温系数,与导热系数、比热、质量密度有关。 2?x?t将空间变量x和时间变量t按照一定的步长进行分隔,从而得到一系列的矩形网格,在集中参数模型中,得到的是一系列的点。

分布参数系统仿真方法就是对网格的交点求解的过程。 常用的方法有:差分法、线上求解法、有限元法 例子:

http://www.soft6.com/peraglobal/info.aspx?i=94013

集中参数建模和仿真工具---simulink介绍

PID系统简介:负反馈控制系统,积分、微分、加法, PID的仿真过程:

仿真目的:研究PID控制系统对阶跃输入的响应,确定PID的参数 数学模型:PID系统的传递函数为 扫描图3.42 PID系统结构框图 仿真模型:图3.49,给定参数

选择仿真算法,给定步长、开始结束时间等、仿真精度参数,进行仿真 结果分析,响应能够满足需求吗?不能,调整参数重新仿真。

总结:

连续系统的仿真过程:

? 确定仿真目的

? 建立数学模型,给定参数(误差、精度) ? 建立仿真模型

? 综合考虑精度、计算量等给出仿真步长,选择算法进行仿真 ? 结果分析

? 参数调整、重新仿真

3. 离散事件系统仿真

3.1. 离散事件系统定义

指受事件驱动、系统状态跳跃式变化的动态系统,系统状态的迁移发生在一串离散事件点上。

离散系统缺乏公认的、通用的数学模型,分析求解困难。

3.2. 离散事件系统的基本要素

实体:临时实体,永久实体,其中的实体包括船、闸门。

问题:开闸的人算不算实体?再问,他老婆和孩子算不算实体?

解释:第一问好像可以也好像不可以。第二问大家都可以肯定不是。其实可以不可以要跟建模目的相联系,如果我们要仿真人的行为,例如,他要去上厕所,他要喝水,他的操作水平不太熟练,她的责任心等,他就是实体了。如果我们认为他就不会出问题,永远在规定的时刻启动闸门开关,则可以不考虑他的行为。

如果我们要仿真他上下班的过程,例如,他要送小孩上学,他老婆有心脏病,那么,它老婆孩子就是实体了。

所以,实体的选择与仿真目的相联系的。

事件:引起系统状态变化的行为称为事件 例如:船只到达、开闸放船、关闸等。

活动:事件发生的过程称为活动,它是实体在两个事件间保持某一状态的操作过程。 船只到达后直到开始放行事件之间的过程,成为排队活动。

进程:由某类实体相关的事件和若干活动组成的集合,描述了这些事件的相互逻辑关系和时序关系。

船只过闸服务进程 排队活动 服务活动 船只到达事件

过闸服务开始事件 过闸服务结束事件 3.3. 离散事件系统的模型

根据是否表示时间: 时标DEDS:赋时Petri网、双子代数、排队网络、Markov链等 非时标DEDS:Petri网模型、有限状态自动机模型、过程代数、时序逻辑模型等

根据状态演变的确定/不确定性,分成确定性:Petri网

随机性:随机Petri网

根据状态演变的量化特征:定量/定性

3.4. 建模步骤

(1) 明确仿真目的

例如上述船只过闸模型,如果要考察船闸服务事件的长短对船闸利用率的影响,则是一种模型,如果考虑闸门开关的控制和动力学特性,则是另一种模型。 (2) 正确描述系统

组成成分:选择合适的实体

描述变量和参数:船只到达间隔时间,船闸服务过程事件、队列长度 相互关系:事件的发生顺序,流程图

船只到达A(t) 开始 闸室是否空闲 设置仿真起止时间 排队等候 船只到达间隔服从泊松分布λ(70) 船闸服务S(t) 闸室是否空闲 排队等候 服务完毕,离开 船闸置闲 船闸服务S(t) 服务完毕,离开 船闸置闲 退出 仿真时间结束

(3) 建立仿真模型

仅有事件表和顺序无法仿真,必须要知道确切的时间表,即仿真系统建模。例如,假设船只到达的事件间隔的随机数,服务时间随机数等。 (4) 输出函数的确定

根据仿真目的统计反映系统性能的数据。例如平均等待时间、最大队列长度等。

离散事件系统中的关键在于系统参数的随机性,随机一般使用分布来表达,请问:

如果一个事件的发生服从正态分布,在计算机中到底什么时候发生呢?如何进行仿真?

3.5. 补充知识(概率和分布)

离散分布

如果随机变量只能取有限的或无限但可以数下去的数值,则这种随机变量取值的概率规律称为离散分布。这类分布往往将随机试验的所有结果及其相应的概率一一列出来以表示分布规律。

例1:抛置硬币这一随机试验可以用如下一些方式来表示其分布规律: ①记A={正面向上},B={反面向上},则P(A)=0.5,P(B)=0.5。

②令出现正面向上用1表示,反面向上用0表示,则P(ξ=1)=0.5,P(ξ=0)=0.5 ③用图形来表示:

④用表格表示: 随机事件 概率 正面向上 0.5 反面向上 0.5 ⑤令出现正面向上用1表示,反面向上用0表示,则可以用表格表示如下:

K P(ξ=k) 1 0.5 0 0.5 连续分布

如果随机变量可以取连续的数值,则这种随机变量取值的概率规律称为连续分布。对于连续分布,我们不能列出所有取值及其对应的概率。以身高为例,可能取值

为:?160,161,162,?,168,169,170,?(单位cm),或者介于其中的任意数值,如168.328cm。对于连续随机变量,我们只能求出介于某一范围的人数、频率以及概率,因此连续分布的表示方法有别于离散分布,一般采用概率密度函数来表示。

当样本的容量及分组逐渐增加时,次数分布图将趋近于一条稳定而连续的曲线,这条曲线就称为连续随机变量的概率密度函数,一般记为f(x)。下面的动画演示的就是给从一正态总体中抽取的数据制作次数分布时,随着分组的增加,分布图越来越趋近于正态分布。

在任何分布形态中(如正态分布、T分布,F分布),密度函数f(x)与横坐标所围的面积都是1,这正如离散分布中所有事件的概率之和为1一样,都是用来表示所有可能之和为100%。连续分布中表示某一范围的概率就是用在这两点之间,密度函数与横坐标所围成的面积的大小来反映,如下图所示:

学过高等数学中微积分的同学们会知道,曲线与横坐标所围成的面积用定积分来计算,正如图中的数学式。没学过积分的学员只要能理解连续分布中要表示一个范围的概率只要求出概率密度函数与横坐标之间的面积即可,而至于如何计算这个面积这不是我们学习统计时应该关心的,因为我们可以通过查表来获得这些结果。而对于每一个分布的概率密度函数是怎么样的也不要求我们去掌握,我们只要知道它是一条表示连续分布的规律的曲线即可。 辨析:

离散型分布用随机变量某一点的取值概率分布来表示,其取值即为该随机事件在该点的发生概率,但是连续型分布某一点的取值概率不能用某一点的取值表示,该点的取值表

示事件发生的密度,即同单位时间内发生的次数,可以简单地理解为发生的频次。 在某一点发生的概率几乎都是零。 发生概率讲的是某一个区间内的发生可能性。

分布函数:

3.6. 随机变量的抽样方法

在仿真中,说某个事件的发生服从某个分布,但是计算机不知如何处理该分布,只知道在某个确定的时刻让该事件发生,这个确定的时刻如何设定,才可以让所有时刻的取值服从该分布呢?即如何实现事件的抽样。让样本符合分布。

例如:轮船到达时间服从均值为10,方差为2的正态分布,如何在计算机中产生随机时间,让轮船到达?

3.6.1. 变换抽样法

我们知道,所有事件的发生概率和为1。由分布函数的定义可知,F(X1)表示X<=x1

的发生概率,则?F表示对应的?x的发生概率,曲线陡对应的?x出现的概率高,平缓部分对应的事件出现的概率低,概率高低正好满足该分布。如果u是在F(x)上的均匀分布,则u是随机的,因此,F(u)对应的值出现的概率满足F分布。因此,用u作为自变量的F的反函数取值样本能够代表事件发生的分布。

即设一随机变量的概率密度为f(x),则其抽样方法为: 首先求其分布函数F(x) 求其反函数x?F(u),

令u为[0,1]范围内的随机数,则x的抽样值服从 f(x)分布。 (1) 均匀分布随机变量

?1?1?1,a?x?b?, f(x)??b?a??0,其他则F(x)??xadux?a??u,可得x?a?(b?a)u b?ab?a(2) 指数分布随机变量

x??e??x,x?0 f(x)??,则F(x?)??e??udu??1e??x?u,可得

0?0,x?0x?1?L(n?1u。 )3.6.2. 离散型分布的直接取样法

当X是离散型随机变量时,设pi?P{X?xi},给定一个随机数r?(0,1],当

?pi?1k?1i?r??pi时,x?xk。

i?1k例如,设X

服从泊松分布P(?),其抽样方法是,

当?k?0n?1?kk!?re???k?0n?k时,x?n

k!。

(1) 产生(0,1)均匀随机数uI (2) 读入累计概率分布函数F(I)

(3) 将uI与F(I)由小到大顺次比较,当F(I?1)?uI?F(I),则X=I (4) 重复1-3步骤,则可得到X的抽样值。

直接抽样法的特点是直观、方便。但由于许多随机变量的累积分布函数无法用解析函数给出,有些随机变量的累积分布函数的反函数不存在或难以求出,即使反函数存在,但计算困难,因此在实际中直接抽样法受到很大的限制。

3.6.3. 舍选法

L为f(x)的最大值,取u2和Lu1两个随机数,如果,Lu1〈f(u2),则抽样成功,否

则舍弃,即Lu1落在分布曲线的下面,用u2和Lu1的取值概率来表示其密度,如果在u2的密度高,则其取值的成功可能性就大,因此,其能够代表该随机变量的分布密度。

如图P126所示。

3.6.4. 随机数的产生

乘同余法:即xi?1?axi?[axi]?m m[] 表示取整操作。 m的取值:取m=2j,j是某个整数,一般m选择在机器所能表示数的范围内,同时,还要考虑公式计算得到的伪随机数序列的周期为m/4,它应大于试验的持续期。例如产生8000个数的序列,则m应接近32000.

a的取值:a?2最接近而又满足a?8k?3的那个数,其中k为任意整数,p为机器字长。

p23.7. 仿真方法及策略 3.7.1. 仿真时间

定义 自然时间,指以经典物理学中的时间,即人类在日常生活中使用的公元纪年时间。时间格式为:yyyy-mm-dd hh:mm:ss。其中,yyyy四位整数表示年,mm为1-12的整数表示月,dd为1到31的整数表示日期。hh为0-23两位整数,表示小时,mm表示分钟为0-59的整数,ss表示秒为0-59整数。

定义 仿真时间,指虚拟时间或仿真模型时间,即仿真模型运行时由仿真系统产生的仿真世界的时间。仿真过程中的一个特定时间称为仿真时刻。两个仿真时刻之间的时间差称为仿真时间段,仿真时间段使用从0开始的连续的整数表示。

3.7.2. 仿真时间推进方法

(1) 时间步长法

与连续系统仿真类似,把仿真过程分为许多相等的时间间隔,在每个时刻,系统对所有实体、属性和活动扫描,进行分析、计算记录。

缺点:对仿真精度有影响,当事件的发生没有在步长前进的时刻时,则其发生时刻存在误差。

优点:实现简单 (2) 事件步长法

类似于变步长,以事件发生的时间为增量,按照事件的进展,一步一步地对系统的行为

进行仿真,直到预定的仿真时间结束。 其方法为:

CPN tools仿真时钟

Simulated time could tick forward continually, as real time does, but that would be a very inefficient way to do things: the clock would frequently waste real time counting off intervals of simulated time during which the model remains unchanged. Such counting would accomplish nothing. It is more efficient in such a case to jump the simulated clock immediately to the next time when some change is possible, and proceed with executing the net.

Therefore the simulated clock does not move at a steady rate. Instead it remains at its current value as long as there are any enabled transitions. When there are no enabled tranistions left, the clock jumps forward by the smallest amount necessary for at least one transition to become enabled. This implies that time will never move forward in a net that always has enabled transitions independently of time.

Simulated time passes when and only when the clock is incremented. Everything that happens while the clock remains at a particular setting is both simultaneous and instantaneous in simulated time.

This is conventient when a system contains an event that happens at a particular moment, but that is sufficiently complex that modeling it by firing a sequence of simple transitions, rather than one complex transition, is most conventient. Leaving the clock unincremented during such a

sequence lets us model the event as a manageable series of small changes, while preserving the instantaneity of the event's effect on the state of the model.

优点:对精度影响小

选择:当判断比较的数目较大或事件变化呈周期性特点时,用时间步长法可以节省用机事件,而当两个事件出现的平均间隔较长时,更适宜于用事件步长法。

方法:常用事件表法,将所有事件放入一个表,每处理完成一个,就去掉,如果当前时间没有事件发生,则可以将时钟向前推进到最近的一个事件。对于同时出现的事件,可以采用LILO,FIFO、随机等方法进行处理。

3.7.3. 仿真策略:

根据仿真控制粒度,分为事件调度法、活动描述法、进程交互法。 其基本思想是每次处理一个事件/活动/进程。

排队系统是一种最常见的系统:例如加油、老师辅导、交电话费,买早餐,只要存在资源竞争的问题,就存在排队问题。

所幸的是,在这个世界上,总是存在资源竞争,因为资源的匮乏,也因为我们与生俱来的贪得无厌的欲望,物质欲、权利欲。因此,排队系统大有用武之地。

3.7.4. 排队系统的组成:

(1) 到达模式,指临时实体按照怎样的规律到达,一般用到达间隔的统计特征来描

关键概念:

平均到达间隔时间Ta,在总时间T中,到达了n个实体,则Ta?T/n 平均到达速率:λ=1/Ta

到达时间分布函数A0(t),即到达间隔时间大于t的概率,A0(t)?1?F(t) ,F(t)为到达时间间隔小于t的概率。

到达时间变化系数:到达间隔时间的标准差Sa与平均到达间隔时间的比值Sa/Ta,变化系数是个无量纲的值,描述了数据围绕平均值的分散程度。

(2) 服务机构,指同一时刻有多少个服务台可以提供服务,他们的服务时间? 平均服务时间Ts 平均服务速率:μ

S0(t)服务时间大于t的概率

服务台可以是并行的,也可以是串行的

(3) 排队规则:即服务台完成当前的服务后,选择下一个实体的规则 FiFO LIFO 随机规则 优先权服务

3.7.5. 排队系统的类型

排队模型的分类:针对单对多服务台且按FIFO规则服务的情形,将其表示为

X/Y/Z

X表示到达间隔时间的分布 Y服务时间的分布 Z服务台的数量

分布通常是:M---负指数分布,D确定性,G一般随机分布,Ek,k阶爱尔朗分布 GI一般相互独立的随机分布

常见的M/M/1、M/M/2

3.7.6. 排队系统的主要统计性能

稳态平均排队时间d?limn???D/n, i=1,n,D 为第i个实体排队的时间。

inii?1实体通过系统的稳态平均滞留时间:??limn???W/n?lim?(D?S)/n,S为

ii?1n??iinnii?1实体接受服务时间。 稳态平均对长:Q?limT??0?T(Q(t)?S(t))dt/T, 积分的含义,Q(t)为t时刻的队列

长度

稳态平均实体数:队列实体+服务实体

排队系统仿真程序,流程图见图4.16,P138 作业:编程实现

3.8. 库存系统仿真

库存系统是一种常见的离散事件系统。国内外大企业正在推行的一种JIT管理模式,Just in time,精细化管理、零库存管理,日本丰田汽车能够实现零库存管理,在丰田工厂周围,分布着其零件供应商。丰田精细的计算着自己的需求,但没有仓库。降低成本,加速企业资金流动,规避市场风险。库存仿真系统是对企业进行研究的一种方式。 除了传统的企业仓库,还有银行的储备金、技术人才储备(教育战略研究)、超市上货等也属于库存系统。 库存系统:

(1) 需求:是库存系统的输出,由于需求,使库存量不断减少。需求有确定性

和随机性两种。

(2) 订货:库存系统的输入。由于订货,使库存增加。订货有滞后时间。因此,

需要提前订货,成为提前时间。包括随机和确定两种。库存 库存系统中的费用包括: (1) 保管费 (2) 订货费 (3) 缺货费

库存系统可以使用解析法来求解,对于复杂的库存系统,需要使用仿真的方法。 库存系统仿真: 扫描流程图

3.9. Petri网简介

Petri网(Petri net,PN)的概念最初由联邦德国的Carl Adam Petri于1962年在其博士论文《用自动机通信》中提出,后经过Peterson J L 和 Hack M 等人的不断研究,逐渐发展成为一种可并发的状态变迁模型。 PN 是一套兼具图形与数学理论基础的流程分析工具。由于完备的数学理论基础,使得PN很快成为用来描述与分析系统的同步与互斥行为的工具。随着系统难度增加,基本的PN也延伸出许多高级PN理论,用来加强对系统建模的能力。

在20世纪80年代取得了突破性进展,它非常适合于定义和分析复杂过程。

3.9.1. 基本Petri网 3.9.1.1. 简介

定义2.1 Petri网,一个基本Petri网系统是一个五元组, PN=(P,T,F,W,M0)

其中P={p1,p2,…,pm}为有限非空库所(place)集,集合元素在网中以圆圈(circles)表示,表示状态,例如:挖土机是否准备好。库所中包含的黑点称为资源(token)。

T={t1,t2,…,tn}为有限非空变迁(transition)集,集合元素在网中以方框(squares)表示,表示状态的改变。例如:挖土机挖土的过程可以使用一个变迁表示。

F ?(P×T)∪(T×P)是有向弧(arc)集,使用有向箭头(directed arcs)表示,表示资源的流动方向。

W为弧上的权重集。

M0表示网的初始情态集。M0(p)表示在初始状态下p库所中包含的资源(token)数量。

其中由(P,T,F)组成的有向图称为Petri网,记作?。在本文中,为了简便,在不特别说明的情况下,文中的“Petri网”均为Petri网系统。

3.9.1.2. 变迁“点火”规则

系统的行为可以用系统的状态和状态的改变来描述,为了仿真所研究系统的动态行为,Petri网的状态(也称为情态Marking,记作M)的改变依赖于下面变迁的发生规则(也称为点火规则,firing rules):

(1) 如果变迁t的输入库所p包含有至少W(p,t)个资源,则变迁t是“使能”的,其中,W (p,t)是从库所p到变迁t弧上的权重。

(2) 一个使能的变迁可以发生也可以不发生(依赖于变迁所代表的事件实际是否发生)。

(3) 一个使能变迁t的发生从其每个输入库所p中移走W (p,t)个资源,并给每个输出库所p增加W (t,p)个资源,其中W (t,p)为变迁t到输出库所p弧上的权重。

3.9.1.3. 例子

基本Petri网发生过程演示 Pnet_1_2.rar

3.9.2. Petri网建模

图2.1基本过程普遍存在的结构Petri网表示方法

错误!未定义书签。

图2.1 施工过程普遍存在的结构Petri网表示方法

图2.1(1)顺序结构。t2变迁只能在t1变迁完成后发生,顺序结构类似于网络图中的紧前紧后工序,也可以用来表示有因果关系的施工作业,例如,钢筋没有放入,则水泥浇筑不能开始。

图2.1(2)冲突结构。t1、t2、t3处与冲突之中,所有的变迁都处于使能状态,但其中一个的发生将使得其他的变迁不能发生。当多个施工作业共享一个资源时,这种情况便可能发生。例如,摊铺机前的运输车队列,每个运输车都可以卸载混合料,但当一个运输车卸载时,其他的车必须等待。

图2.1(3)并发结构。t1、t2、t3处于并发状态,他们都处于使能状态,变迁的点火

也互不干扰。这种结构可以用来表示互不影响的施工作业。

图2.1(4)同步结构。p1、p2、p3必须同时包含资源t1才能发生。这可以用来表示一个施工作业需要多个资源的状况。例如,只有拌和楼工作正常并且装载队列中有空车存在时,才可以进行装载作业。

图2.1(5)合并结构。用来表示在同一个作业中使用的几种材料到达时的过程。例如,水泥混凝土所需的水泥、沙子、水等运送到水泥搅拌车处的过程。

图2.1(6)混惑结构。在冲突和并发同时存在的时候,便产生混惑。施工过程中,当资源共享时,这种结构有时会出现。网论指出,混惑存在的地方,就是环境对系统可以施加影响的地方,也就是人们的决策对系统施加影响、消除不确定性的地方,在工程中,可以通过增加设备、改变施工方法等进行消除。这种对系统进行局部改造,也就是用到局部设计的思想,通过局部性能的改善提高整个组织的效率。

图1典型PN

由于业务系统的不断扩大,典型PN延伸出很多高级PN,以便更好地对复杂系统进行建模和分析。 高级PN:

1、谓词/变迁网(predicate/transition net) 2、着色PN(colored PN,CPN)

3、面向对象PN(object-oriented PN,OPN) 4、模糊PN(fuzzy PN,FPN)

5、微分PN(differential PN,DPN) 6、混合PN(hybrid PN,HPN)

7、变结构PN(PN with changeable structure,PN-CS) 8、timed CPN(TCPN)

9、随机CPN(stochastic CPN,SCPN) 10、timed OPN(TOPN)

3.9.3. Petri网分析

Petri网的经典介绍:

Murata_petri.pdf (1) (2) (3)

a) b) c) d) e) f) g) h) (4)

a)

introduction

transition enabling and Firing modeling example finite state machine parallel activities dataflow compute

communication protocol synchronization control

带优先权的生产---消费系统 形式语言 多处理系统

Behavior properities Reachablity

c) liveness

无穷多次

(5) Analysis method

a) The coverability tree

b) 关联矩阵

根据关联矩阵,可以得到状态方程:

Petri网的变种:赋时Petri网及其分析方法

随机Petri网

3.9.4. Petri网工具简介

http://www.petri.net

主页:www.daimi.au.dk/CPnets 介绍文档:CPN.pdf

介绍作者,kurt Jensen http://www.daimi.au.dk/~kjensen/

介绍软件:CPN,打开软件,介绍界面,菜单,打开方法,binder,页面,帮助系统

PPT:CPN.ppt

3.9.5. CPN实现排队网络

调出排队网络的图

打开帮助文件,首先介绍排队网络C:\\Program Files\\CPN Tools\\help\\queue_system.html 对排队网络进行仿真 提出问题:如何进行分析 方法:CPN monitor策略 三种:数据收集

Data collection Write file in User define

C:\\Program Files\\CPN Tools\\help\\introduction_to_monitors.html

介绍排队网络的数据收集,介绍delay

运行排队网络,对排队网络的数据收集结果进行察看

作业:

(1) 研究一种多服务台、多队列的电话费缴费系统,对客户达到时间和服务时间进行假设,研究平均队长,客户的平均等待时间等参数,并为领导决策提供建议? 可能的建议:增加服务台(在什么情况下) 提高业务的处理速度?

开源代码renew www.renew.de

4. 虚拟现实仿真

4.1. 虚拟现实介绍

Hipihi 软件

虚拟现实课件.ppt

工具软件:建模mutigen creator, 仿真Vega Web 语言:vrml, x3d

4.2. 图形学基础知识:

4.3. 基础图形编程技术OpenGL

OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口的规格,它用于生成二维、三维图象。这个接口由近三百五十个不同的函数调用组成,用来从简单的图元绘制复杂的三维景象。而另一种编程接口系统是仅用于

Microsoft Windows上的Direct3D。OpenGL常用于CAD、虚拟实境、科学视觉化

程式和电子游戏开发。

OpenGL的高效实现(利用了图形加速硬件)存在于Windows,很多UNIX平台和MacOS。这些实现一般由显示设备厂商提供,而且非常依赖于该厂商提供的硬件。开放源代码库Mesa是一个纯基于软件的图形API,它的代码兼容于OpenGL。但是,由于许可证的原因,它只声称是一个“非常相似”的API。

OpenGL规范由1992年成立的OpenGL架构评审委员会(ARB)维护。ARB由一些特别兴趣于建立一个统一的普遍可用的API的公司组成。根据OpenGL官方网站,2002年6月的ARB投票成员包括3Dlabs、Apple Computer、ATI Technologies、Dell Computer、Evans & Sutherland、Hewlett-Packard、IBM、Intel、Matrox、NVIDIA、SGI和Sun Microsystems(Microsoft曾是创立成员之一,但已于2003年3月退出)。 4.4. 扩展

当独立厂商建立一种新技术时,OpenGL标准允许它们通过“扩展”的方法提供所扩展的功能。然后一个扩展就分成两部分发布:包含扩展函数原型的头文件和作为厂商的设备驱动。每个厂商有一个用于命名它们的新函数和常量的字母缩写。例如,NVIDIA的缩写(“NV”)用于定义它们的专有函数“glCombinerParameterfvNV()”和它们的常量“GL_NORMAL_MAP_NV”。如果多于一个厂商同意实现相同的扩展功能,那么就用缩写“EXT”。进一步,架构评审委员会可能“祝福”这个扩展,那么这就被称为一个“标准扩展”,使用缩写“ARB”。第一个ARB扩展是GL_ARB_multitexture。根据官方扩展提升路径,多纹理不再是可选实现的ARB扩展,它已经是OpenGL 1.4以后的核心API的一部分。

几个库建立在OpenGL之上,提供了OpenGL本身没有的功能:

? GLU ? GLUT ? GLUI ? GLEW ? GLEE 特别是,OpenGL Performer库——由SGI开发并可以在IRIX、Linux和Microsoft Windows的一些版本上使用,构建于OpenGL,可以建立实时可视化仿真程序。

当开发者需要使用最新的OpenGL扩展时,他们往往需要使用GLEW或者是GLEE库提供的功能,可以在程序的运行期判断当前硬件是否支持相关的扩展,防止程序崩溃甚至造成硬件损坏。 4.5. 绑定

为了加强它的多语言和多平台特性,已经用很多语言开发了OpenGL的各种绑定和移植。最值得注意的是,Java3D库已经可以利用OpenGL(另一个选择可能是DirectX)作为它的硬件加速了。OpenGL官方网页[1]列出了用于Java、Fortran 90、Perl、Pike、Python、Ada和Visual Basic的多个绑定。 4.6. 高级功能

OpenGL被设计为只有输出的,所以它只提供渲染功能。核心API没有窗口系统、音频、打印、键盘/鼠标或其他输入设备的概念。虽然这一开始看起来像是一种限制,但它允许进行渲染的代码完全独立于他运行的操作系统,允许跨平台开发。然而,有些整合于原生窗口系统的东西需要允许和宿主系统交互。这通过下列附加API实现:

? GLX - X11(包括透明的网络) ? WGL - Microsoft Windows 另外,GLUT库能够以可移植的方式提供基本的窗口功能。 4.7. 历史

OpenGL进化自(而且风格很相似)SGI的早期3D接口IRIS GL。IRIS GL的一个限制是它只能访问底层硬件提供的特性。如果图形硬件不支持例如纹理映射这样的功能,那么应用程序就不能使用它。OpenGL通过在软件上对硬件不支持的特性提供支持的方法克服了这个问题,允许应用程序在相对低配置的系统上使用高级的图形特性。

Fahrenheit项目是Microsoft和SGI之间的联合行动,为了统一OpenGL和Direct3D接口的目的。它一开始提出了一些把规则带给交互3D计算机图形API世界的承诺,但因为SGI的财政限制,这个项目后来被放弃了。

本文来源:https://www.bwwdw.com/article/wgrp.html

Top