从认识论角度,仿真是对现实世界的模拟,但是现实世界是庞大的,无界的,在科学研究过程中,我们经常把研究内容界定在一定的范围,这个范围我们称之为系统,在仿真研究中,我们也是对现实世界中的某个系统进行仿真。称之为:系统仿真。现对各个系统仿真方法作一简单介绍:
1.连续系统仿真
定义:连续系统:系统状态变化是连续的。 1.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)
另外,速度、加速度、运动阻尼等存在变的问题等都可以用微分方程表示出来。另外还有例如世界经济模型、人口增长模型等。 1.2集中参数系统的仿真方法 1.2.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)。
数值积分法中的几个问题: (1)变步长
在保证仿真过程满足一定精度的前提下,为使计算量尽可能小,尽可能采用较大的步长。 两个问题:误差的估计,计算量的估计。
常用的方法:对分策略,计算局部误差,如果>最大误差步长减半;如果<最小误差,
步长加倍;否则不变。另外还有:最优步长法,估计下一步的最大步长;Gear方法。 这些方法都是构造出来的方法,在数学中,构造是数学学科发展的一个重要的方法。从数的发展历史可以看出。正数(正整数、分数、正有理数)很好理解,计数的需要,负数是什么概念呢?后来,又出现了虚数,虚数的物理意义在数学界一直没有很好的解释 (2)算法误差和稳定性
误差:截断误差和舍入误差
基于泰勒展开攻势的数值计算方法都有截断能够误差
欧拉法h2>梯形法h3>4阶龙格库塔法h5>亚当穆斯法h6 每一步积分都会带来舍入误差,随着运算的进行,舍入误差有可能被放大。例如1/9=0.11,两边同乘以9以后误差被扩大。
稳定性问题:误差的积累是否受到控制。
判断数值积分法使用试验方程,如果数值积分公式为yn1(h)yn 当差分方程满足稳定条件(h)1,算法才稳定。
因此,可以得到各种算法的稳定条件。
提示:在选择步长时,应对算法的稳定性进行判断。
(3)步长的选择
从数值计算角度,步长越小,截断误差越小,但同时步数增多,所以舍入误差增大。 因此,步长应进行合理选择。一般要小于系统的时间常数的1/10。
时间常数
(4)算法的选择
没有一种算法是最好的,如果函数形式比较简单,则适合采用单步法,如果精度要求低,则欧拉法,否则可以采用龙格库塔法,当函数形式比较复杂时,计算量大,宜采用多步法,如亚当穆斯发,这类方法每积分一步只需计算一次函数值。 (5)病态系统仿真
x11/2x21/3x311/61/2x1/3x1/4x13/12,如果采用近似数字代替分数,则答案为x1=-6.22,1231/3x11/4x21/5x347/60x2 = 38.25, x3=-33.65 而真正解x1=x2=x3=1 1.2.2离散相似方
离散相似法就是将连续系统的数学模型进行离散化处理,得到其等价的模型,对于离散化模型进行求解的仿真方法。常用的方法是加入采样开关和零阶保持器。
离散相似法的精度和校正问题:精度是指离散相似模型与原连续系统模型等效的程度。由于加入了虚拟的采样开关和保持器,保持器不可能完整无误地将连续信号重构出来,因此,离散相似模型必然存在误差。一般来讲,采样的间隔越大,仿真的误差越大,采样频率必须满足采样定理,即fsfm,fs为采样频率=1/T,fm为连续信号的最大频率。实际中,采样频率可按照最大频率的30-50倍进行选择。
2.离散事件系统仿真
指受事件驱动、系统状态跳跃式变化的动态系统,系统状态的迁移发生在一串离散事件点上。离散系统缺乏公认的、通用的数学模型,分析求解困难。 2.1离散事件系统的基本要素
实体:临时实体,永久实体,其中的实体包括船、闸门。
问题:开闸的人算不算实体?再问,他老婆和孩子算不算实体?
解释:第一问好像可以也好像不可以。第二问大家都可以肯定不是。其实可以不可以
要跟建模目的相联系,如果我们要仿真人的行为,例如,他要去上厕所,他要喝水,他的操作水平不太熟练,她的责任心等,他就是实体了。如果我们认为他就不会出问题,永远在规定的时刻启动闸门开关,则可以不考虑他的行为。
如果我们要仿真他上下班的过程,例如,他要送小孩上学,他老婆有心脏病,那么,
它老婆孩子就是实体了。所以,实体的选择与仿真目的相联系的。
事件:引起系统状态变化的行为称为事件。例如:船只到达、开闸放船、关闸等。 活动:事件发生的过程称为活动,它是实体在两个事件间保持某一状态的操作过程。船只到达后直到开始放行事件之间的过程,成为排队活动。
进程:由某类实体相关的事件和若干活动组成的集合,描述了这些事件的相互逻辑关系和时序关系。
船只过闸服务进程 排队活动 服务活动 船只到达事2.2建模步骤
过闸服务开始事件 过闸服务结束事 (1) 明确仿真目的 例如上述船只过闸模型,如果要考察船闸服务事件的长短对船闸利用率的影响,则是一种模型,如果考虑闸门开关的控制和动力学特性,则是另一种模型。 (2) 正确描述系统
组成成分:选择合适的实体
描述变量和参数:船只到达间隔时间,船闸服务过程事件、队列长度 相互关系:事件的发生顺序,流程图
(3) 建立仿真模型
仅有事件表和顺序无法仿真,必须要知道确切的时间表,即仿真系统建模。例如,假设船只到达的事件间隔的随机数,服务时间随机数等。
(4) 输出函数的确定
根据仿真目的统计反映系统性能的数据。例如平均等待时间、最大队列长度等。 离散事件系统中的关键在于系统参数的随机性,随机一般使用分布来表达。 2.3随机变量的抽样方法
在仿真中,说某个事件的发生服从某个分布,但是计算机不知如何处理该分布,只知道在某个确定的时刻让该事件发生,这个确定的时刻如何设定,才可以让所有时刻的取值服从该分布呢?即如何实现事件的抽样。让样本符合分布。
例如:轮船到达时间服从均值为10,方差为2的正态分布,如何在计算机中产生随机时间,让轮船到达? 2.3.1变换抽样法
我们知道,所有事件的发生概率和为1。由分布函数的定义可知,F(X1)表示X<=x1的发生概率,则F表示对应的x的发生概率,曲线陡对应的x出现的概率高,平缓部分对应的事件出现的概率低,概率高低正好满足该分布。如果u是在F(x)上的均匀分布,则u是随机的,因此,F1(u)对应的值出现的概率满足F分布。因此,用u作为自变量的F的反函数取值样本能够代表事件发生的分布。
即设一随机变量的概率密度为f(x),则其抽样方法为: 首先求其分布函数F(x) 求其反函数xF1(u),
令u为[0,1]范围内的随机数,则x的抽样值服从 f(x)分布。 (1) 均匀分布随机变量
1,axbf(x)ba,
0,其他则F(x)xadubaxabau,可得xa(ba)u
(2) 指数分布随机变量 ex,x0 f(x)0,x0,则
F(x)e0xudue1xu,可得
x1L(1n。 )u2.3.2离散型分布的直接取样法
当X是离散型随机变量时,设piP{Xxi},给定一个随机数r(0,1],当
k1ki1piri1pi时,xxk。
n1例如,设X服从泊松分布P(),其抽样方法是,当k0knk!rek0kk!时,xn 。
(1) 产生(0,1)均匀随机数uI (2) 读入累计概率分布函数F(I)
(3) 将uI与F(I)由小到大顺次比较,当F(I1)uIF(I),则X=I (4) 重复1-3步骤,则可得到X的抽样值。
直接抽样法的特点是直观、方便。但由于许多随机变量的累积分布函数无法用解析函数给出,有些随机变量的累积分布函数的反函数不存在或难以求出,即使反函数存在,但计算困难,因此在实际中直接抽样法受到很大的限制。 2.3.3舍选法
L为f(x)的最大值,取u2和Lu1两个随机数,如果,Lu1〈f(u2),则抽样成功,否则舍弃,即Lu1落在分布曲线的下面,用u2和Lu1的取值概率来表示其密度,如果在u2的密度高,则其取值的成功可能性就大,因此,其能够代表该随机变量的分布密度。 2.3.4随机数的产生
乘同余法:即xi1axi[[] 表示取整操作。
m的取值:取m=2,j是某个整数,一般m选择在机器所能表示数的范围内,同时,还要考虑公式计算得到的伪随机数序列的周期为m/4,它应大于试验的持续期。例如产生8000个数的序列,则m应接近32000.
paxim]m
j
a的取值:a22最接近而又满足a8k3的那个数,其中k为任意整数,p为机器字长。
2.4库存系统仿真
库存系统是一种常见的离散事件系统。国内外大企业正在推行的一种JIT管理模式,Just in time,精细化管理、零库存管理,日本丰田汽车能够实现零库存管理,在丰田工厂周围,分布着其零件供应商。丰田精细的计算着自己的需求,但没有仓库。降低成本,加速企业资金流动,规避市场风险。库存仿真系统是对企业进行研究的一种方式。 除了传统的企业仓库,还有银行的储备金、技术人才储备(教育战略研究)、超市上货等也属于库存系统。 库存系统:
需求:是库存系统的输出,由于需求,使库存量不断减少。需求有确定性和随机性两种。 订货:库存系统的输入。由于订货,使库存增加。订货有滞后时间。因此,需要提前订货,成为提前时间。包括随机和确定两种。库存库存系统中的费用包括:保管费、订货费、缺货费。
库存系统可以使用解析法来求解,对于复杂的库存系统,需要使用仿真的方法。
3.发展趋势
近年来, 由于问题域的扩展和仿真支持技术[ 18, 19 ]的发展, 系统仿真方法学致力于更自然
地抽取事物的属性特征, 寻求使模型研究者更自然地参与仿真活动的方法, 等等。在这些探索
的推动下, 生长了一批新的研究热点:
( 1) 面向对象仿真(Object oriented Simulation OOS) [ 11 ]: 从人类认识世界模式出发, 使
问题空间和求解空间相一致, 提供更自然直观, 且具可维护性和可重用性的系统仿真框架。 (2) 定性仿真(Q ualitatuve Simulation Q S) [ 20 ]: 用于复杂系统的研究, 由于传统的定量数
字仿真的局限, 仿真领域引入定性研究方法将拓展其应用。定性仿真力求非数字化, 以非数字
手段处理信息输入、建模、行为分析和结果输出, 通过定性模型推导系统定性行为描述。 (3) 智能仿真( Intelligence Simulation IS) [ 21 ]: 是以知识为核心和人类思维行为作背景的
智能技术, 引入整个建模与仿真过程, 构造各处基本知识的仿真系统(Know ledge Based Simu2
lation System KBSS) , 即智能仿真平台。智能仿真技术的开发途径是人工智能(如专家系统、
知识工程、模式识别、神经网络等) 与仿真技术(如仿真模型、仿真算法、仿真语言、仿真软
© 1994-2007 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net 78 计算技术与自动化2002 年12 月
件等) 的集成化。因此, 近年来各种智能算法, 如模糊算法、神经算法、遗传算法的探索也形成了
智能建模与仿真中的一些研究热点。
(4) 分布交互仿真(D istributed Interactive Simulation D IS ([ 11 ]: 是通过计算机网络将分散
在各地的仿真设备互连, 构成时间与空间互相偶合的虚拟仿真环境。实现分布交互仿真的关键
技术是: 网络技术、支撑环境技术、组织和管理。其中: 网络技术是实现分布交互仿真的基础, 支
撑环境技术是分布交互仿真的核心, 组织和管理是完善分布交互仿真的信号。
(5) 可视化仿真(V isual Simulation V S) [ 23 ]: 用以为数值仿真过程及结果增加文本提示、
图形、图象、动画表现, 使仿真过程更加直观, 结果更容易理解, 并能验证仿真过程是否正确。近
年来还提出了动画仿真(A nimated Simulation A S) , 主要用于系统仿真模型建立之后动画显
示, 所以原则上仍属于可视化仿真。
( 6) 多媒体仿真(M ultimedia Simulation M S) [ 22 ]: 它是在可视化仿真的基础上再加入声
音, 就可以得到视觉和听觉媒体组合的多媒体仿真。
(7) 虚拟现实仿真(V irtual Reality Simulation VRS) [ 23 ]: 是在多媒体仿真的基础上强调三
维动画、交互功能, 支持触、嗅、味知觉, 就得到了VR 仿真系统。
因篇幅问题不能全部显示,请点此查看更多更全内容