[工学]计算机仿真课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《[工学]计算机仿真课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工学 计算机仿真 课件
- 资源描述:
-
1、第九章第九章 仿真应用技术仿真应用技术n实际应用计算机仿真技术时,还有许多问题需要考虑,本章将向读者介绍部分仿真应用技术,包括:仿真语言、一体化仿真技术、人工智能和专家系统在仿真技术中的应用、仿真建模方法学,以及仿真实验的计划指定和实施。n如果要有效地进行仿真研究,最大限度地避免工作中的盲目性,减少研究费用,缩短研究周期,必须对整个仿真研究工作进行科学而周密的组织与设计。对于从事实际应用的人员来说,仿真应用技术或仿真研究的组织方法是非常必要的知识。组织与设计工作的好坏,直接关系到仿真应用的成效。本章的最后向读者介绍这一方面的基本知识,使读者尤其是初学者重视仿真实验的组织设计和实验工作,了解有关
2、基本知识,并能应用到实际工作中去。n考虑到重点突出篇幅限制等原因,对有些问题仅仅提出,而不做深入讨论。显然,在实际应用时,所要遇到的问题是极其复杂的,需要读者在今后的工作中不断探索,不断总结。第九章第九章 仿真应用技术仿真应用技术9.1 仿真语言及其发展9.2 仿真语言的基本结构和组织9.3 一种典型的连续系统仿真语言9.4 一体化仿真技术9.5 人工智能与仿真技术9.6 数学模型和建模方法学9.7 仿真实验的计划指定和实施9.1 仿真语言及其发展仿真语言及其发展 9.1.1 连续系统的数字仿真连续系统的数字仿真n在数字计算机上进行仿真研究时,很重要的一个步骤是将研究对象的数学模型转变为能在计
3、算机上实现的仿真模型,并编制仿真程序。仿真程序的一般组成如图3.5.1所示。n传统地编写仿真程序所采用的语言是高级算法语言,如FORTRAN语言,BASIC语言,C语言等。除非有时需要高质量的程序以节省使用机器内存和缩短程序执行时间,才用汇编语言编写。在采用高级语言编写仿真程序时,用户发现,虽然基本语言不难学习,并且便于移植,不受机型限制,但如需要充分利用语言的能力与精微之处,则需要很高的熟练程度。尤其是对一些模型结构复杂模型状态变量和参数多的系统,用户不得不将许多精力和时间花费在模型参数处理仿真算法和程序的实现,以及输出数据的分析等辅助性工作上,而不能将精力集中于对系统本身的研究。因而需要一
4、种面向问题的非顺序的计算机语言。这种语言应该是足够简单,而且易于学习和使用。用户只需写入被仿真系统的模型,定义变量和必要的数据和命令,就可以进行仿真。这使得用户能摆脱程序编写中的许多细节问题,将精力集中于研究所要仿真的问题本身。这样的一种用于仿真研究的专用计算机语言,便是仿真语言。9.1.1 连续系统的数字仿真连续系统的数字仿真n仿真程序具有一定通用性的仿真程序包和仿真语言是处理不同问题常用的三种仿真工具。表9.1.1对它们进行了比较。读者可以根据问题的需求,以及软硬件的可能性进行选择使用。表9.1.1通用型编程难易程度功能程序灵活性对存储容易的要求程序执行时间仿真程序差困难弱差低短仿真程序包
5、较好较方便较弱较好较低短仿真语言好方便强好较高较长 9.1.2 仿真语言的功能仿真语言的功能n数字仿真语言是一种直接面向仿真问题的专用语言,是进行数字仿真的重要工具。其主n要功能表现为以下三点:(1)有一套完整的规定描述模型的符号语句句法及语法,并有检测用该语言所编写的源程序中错误的能力,最后能将文法上正确的源程序翻译成机器可执行码(一般是先翻译成某一种高级语言,比如FORTRAN语言,然后由计算机厂家所提供的编译程序转换成机器代码)。(2)具有设定模型实验的初始条件终止条件,以及控制并实现单次多次或迭代运行的功能。(3)具有对仿真结果的分析与显示功能。9.1.2 仿真语言的功能仿真语言的功能
6、n 由上面所介绍的仿真语言的三种功能可知:使用者使用这种语言不仅能更多地摆脱掉n对程序的熟悉与了解,而且由于它具有更强的仿真功能,因此能用来仿真比较复杂的系统,并且对系统进行更全面的实验。9.1.3 仿真语言的分类仿真语言的分类仿真语言可以按不同方式进行分类。一、按被仿真系统的特点分类 按被仿真系统的特点可将仿真语言分为三类:连续系统仿真语言;离散系统仿真语言;通用仿真语言。连续系统仿真语言所采用的模型通常是微分方程,系统的响应是按一个或几个自变量的 变化而连续发生的。而离散系统仿真语言所采用的模型通常不包括微分方程,而包括部分代数方程和逻辑关系,其系统的响应是以在一个自变量的离散点上的事件序
7、列的形式发生的。对于两类系统均适用的是通用仿真语言。本书仅介绍连续系统仿真语言。9.1.3 仿真语言的分类仿真语言的分类二、按数学模型的形式分类 连续系统仿真语言按被仿真系统的数学模型形式,可分为:面向方程的仿真语言;面向框图的仿真语言。面向方程的仿真语言采用的模型描述方式是一阶微分方程组和代数方程,即与现代控制理论中的状态空间相对应。面向框图的仿真语言中模型是通过框图的形式描述的,框图中的内容可以是加减乘除运算,逻辑运算和积分运算等基本算符,也可以是基本传递函数或其它特定函数。9.1.3 仿真语言的分类仿真语言的分类三、按运行方式分类按仿真语言在计算机上运行方式可分为:交互式仿真语言,或会话
8、式仿真语言;非交互式仿真语言,或批处理式仿真语言。交互式仿真语言在具有分时操作系统的大中型计算机或小型微型计算机上运行,通常采用图形显示终端,并以键盘或光笔作为输入设备。该方式由于采用对话形式,故可及时观察分析仿真结果,修改模型结构或参数。非交互式仿真语言在大中型机上通常采用读卡机来输入问题,在微型机上通常采用宏定义方式来描述问题和实验方法。显见这种方式只有在取得一次运行的结果后,才能分析仿真结果,并修改模型参数和实验方法。9.1.4 数字仿真语言的发展概况和性能评价数字仿真语言的发展概况和性能评价 从60年代开始,国外就已着手研制仿真语言。第一个获得广泛应用的数字仿真语言是MIMIC,它是1
9、965年研制成功的一种面向方程的仿真语言。该语言的主要部分是一个翻译器,它把用MIMIC语言书写的仿真源程序翻译成机器代码。1966年美国又推出了另一个数字仿真语言DSL/90,它也是面向方程的一种仿真语言。但它的翻译器是将仿真源程序翻译成FORTRAN语言,因此这种仿真语言可以和FORTRAN语言兼容。在这期间,美国相继推出了许多种数字仿真语言,为了促进数字仿真语言规范化,进一步普及推广数字仿真的应用,美国计算机仿真协会(SCS)软件委员会于1967年召集了许多仿真方面的专家进行了讨论,最后发表了一个数字仿真语言的标准文本CSSL。因为SCS是美国仿真学术界的中心,因此CSSL有相当的权威性
10、,在70年代初一直被广泛应用。与CSSL并列的还有一个被广泛应用的数字仿真语言CSMP,它是IBM公司推出的。由于IBM公司是美国最大的一家计算机公司,所以CSMP也拥有众多的用户。9.1.4 数字仿真语言的发展概况和性能评价数字仿真语言的发展概况和性能评价n在70年代以后,数字仿真语言在提高功能提高速度等方面有了一些新的发展。它们的代表是ACSL及DARE系列。我国从70年代后期在引进移植和研制数字仿真语言方面也做了不少工作,并已取得了可喜的成绩。80年代,我国的仿真工作者在引进与消化国外仿真语言的基础上,逐步形成了自己的语言规范。ICSL就是我国一个功能比较齐全质量较高的仿真语言。9.2
11、仿真语言的基本结构和组织仿真语言的基本结构和组织 9.2.1 对仿真语言的主要要求对仿真语言的主要要求n一个好的仿真语言应满足下列要求:n(1)被仿真的问题可以以自然的形式,方便地用仿真语言的语句描述。所谓自然的形式,是指与工程技术人员用来描述被仿真系统的数学模型相一致的形式。通常,被仿真系统的数学模型具有微分方程与代数方程组合的形式,或框图的形式,因而要求仿真语言也能以相似的形式描述系统,最好兼有两种方式描述的能力,因为有些系统的模型具有组合的形式。n(2)要求仿真语言具有并行性的特点。在被仿真的实际连续系统中,过程是并行发生的,对模拟计算机来说,它是一种并行的计算装置,即对各个变量的运算是
12、同时进行的,因而真实地体现了所仿真的连续系统中的工作状态。但数字计算机是串行计算装置,为了满足闭合回路的要求,一个变量在先前没有规定就不能出现在语句中,因而仿真语言必须有一种自动分选能力,能将规定数字仿真结构的仿真语言的语句排列成正确的计算顺序,从而使计算机按顺序计算,而从仿真语言的程序看来则如并行运算一样。9.2.1 对仿真语言的主要要求对仿真语言的主要要求n(3)仿真语言应备有多种不同的积分方法可供使用者选择。积分算法是数字仿真程序的核心。微分方程的数值解法有许多种;不同的方法具有不同的特点(精度计算速度和对计算机的要求等),适合于不同的应用场合。多种积分算法的存在为满足用户的具体应用要求
13、提供充分的选择余地。n(4)仿真语言应包含有预先编制好的输入和输出程序。输入程序可使用户方便地输入问题的模型和参数,并且便于修改模型参数。输出程序使用户可按所研究的问题的需要,选择有关的输出变量与参数,以多种输出方式输出。输出方式包括数据表格,时间响应曲线,相平面轨迹及变量与参数的交叉列表和绘图。输出设备的形式应多样化,包括宽行打印机数字绘图机图像终端等。使用者可以方便地用于准备技术报告的规格化文件。9.2.1 对仿真语言的主要要求对仿真语言的主要要求n(5)为了面向用户,仿真语言应与现有常用的有序编程语言(通常为FORTRAN,C语言等)有兼容性,使仿真语言的语句和有序语言的语句混和,从而有
14、经验的用户可以将有序语言的功能引入到仿真语言中,扩展仿真语言的能力。n(6)为了面向用户,要求仿真语言要适应不同水平用户的要求。对不太熟悉的用户,可以使用仿真语言的基本组成部分,基本结构语句(或基本算符)和代数语句,内装的程序库,完成基本的仿真研究。对熟练的或内行的用户,则要求仿真语言具有扩展能力,能将用户规定的函数和程序加入到内装程序库中。n(7)要求仿真语言配有宏函数处理器。用户可将他所研究的问题中多次重复使用的部分编写为宏函数,通过宏函数处理器可被主程序反复引用。仿真语言的宏函数不仅是一种方便的速记手段,而且可成为一种表示分系统或特殊运算的直观的有意义的语言要素。9.2.1 对仿真语言的
15、主要要求对仿真语言的主要要求(8)仿真语言不仅应便于输入和修改系统参数及初始条件,更进一步应能进行多次运行的仿真研究,对多次运行具有逻辑控制函数存储二次运行间的代数运算等能力。这种多次运行研究可用于模型参数及初始条件的“起始计算”和运行结果的“终结”处理,如求得时间历程采样的函数;按预先编定的程序或按前次运算结果确定的参数及初始条件进行多次仿真运行,做迭代仿真实验,优化或模型匹配等研究;保存多次运行的时间历程;交叉绘制或交叉列表表示参数和初始条件对解的影响;进行随机输入作用下的统计特性计算(蒙特卡罗仿真)。(9)要求具有多重速率的能力,即被仿真的模型可分成两段或多段(相应于被仿真总系统的分系统
16、或暂存部分),以便不同时间常数的子系统(如快的分系统和慢的分系统)可采用不同的积分方法或积分步长;不同子系统结构在时间推移过程中的转接。(10)具有面向问题的错误的诊断能力,使仿真研究者能在源程序的级别上很快发现和改正错误。上述要求是作为设计仿真语言的指导原则提出的,并不是所有仿真语言都能满足所有这些要求。9.2.2 仿真语言的一般结构和组织仿真语言的一般结构和组织一、仿真语言的一般结构仿真语言在结构上一般包括三个区域:初始区动态区和终止区,如图9.2.1所示。一般将仿真语言的单次运行称为仿真,同一问题的多次运行称为研究。(1)初始区:初始区包括了所有在一次仿真之前必须进行的输入/输出操作和初
17、始化步骤。那些具有更永久性特点的初始化操作(如指定具体的积分算法)应在进入这一区域之前进行。图9.2.2说明了初始区的一般结构。初始区在作用上可用三个分区域说明:解释程序初始分区和积分初始分区。9.2.2 仿真语言的一般结构和组织仿真语言的一般结构和组织 图9.2.1 图9.2.2 9.2.2 仿真语言的一般结构和组织仿真语言的一般结构和组织解释程序是一个标准的系统程序,它完成仿真分析人员和程序之间在运行时间的交互作用。仿真分析人员可通过终端或其它输入装置输入参数和系统初始化的指令,这些指令经解释程序的翻译而在运行时执行。有下述类型的指令:调整仿真中变量的值(如参数或初始条件);中间读出任何仿
18、真中变量的值;对积分算法中可调控制参数,包括自变量的间隔初值和终值及误差控制参数,进行控制;进行简单的算术运算,用以根据前一次的结果计算参数的改变量;对个别的仿真运行进行初始控制和对一组仿真运行(研究)进行终止控制。初始分区是进行初始化计算输入和仿真研究终止逻辑控制的有序编码。积分初始化程序是运行时间所用数值积分系统的一部分。9.2.2 仿真语言的一般结构和组织仿真语言的一般结构和组织(2)动态区:动态区是仿真过程中在数字计算机和外界之间起积极的交互作用中的一部 分,它表示在使用者规定的自变量的离散值上进行的所有计算和输入/输出操作。自变量的基本间隔用每次经过动态区的穿越来表示,称为仿真通讯间
19、隔。这一间隔只由 与外界通讯的准确度要求来决定。计算(积分)间隔可以比通讯间隔短。计算间隔严格按数字计算(特别是积分)的准确度要求来决定。图9.2.3所示说明了动态区的一般结构,它可用两个分区域描述:输入/输出和积分。9.2.2 仿真语言的一般结构和组织仿真语言的一般结构和组织 图9.2.3 9.2.2 仿真语言的一般结构和组织仿真语言的一般结构和组织n输入/输出分区包括了在基本自变量回路中进行的积分运算以外的作用,其中有那些不属于导数计算部分的与时间有关的代数计算和动态回路,以及程序条件实验所必需的所有数字输入。程序条件实验用于确定:是否终止仿真并将控制转移到终止区;是否要计算新的值和重新开
20、始积分。在通信间隔上输出系统变量是在这一分区上控制的。n积分分区包括了动态区内对自变量的所有积分运算。积分分区还可以分成不同的数段,以便对几组仿真的状态变量采用不同的积分速率(或算法)。某些段落也可能根本不包含积分,而可能是仿真与积分速率有不同速率的并行同步逻辑部分的程序。n包括积分的各段都有与它相关的计算被积分的状态变量导数的子程序,因为每一积分段都有这样一个子程序,故它被称为导数段。9.2.2 仿真语言的一般结构和组织仿真语言的一般结构和组织 (3)终止区:终止区接受动态区的控制,并将控制作用返回到仿真的入口处。终止区包括用以适当地终止一次单一的仿真所需要的计算和输入/输出作用。此外,制备
21、某些仿真报告的操作,如数据表和绘图输出,也在这一阶段完成。二 仿真语言的程序组织 仿真语言的程序通常由三部分组成:翻译部分运行部分和输出部分。(1)翻译部分:翻译部分的主要作用是将使用者用仿真语言编写的仿真程序翻译为中介语言或机器语言的子程序,以供和运行部分的有关程序一起编译(如果仿真语言的程序用中介语言写成)连接和加载。翻译部分还完成语句的分选和排序作用对使用者规定的输出指令的解释作用,以及输入数据(初始条件和参数)的处理。9.2.2 仿真语言的一般结构和组织仿真语言的一般结构和组织n(2)运行部分:运行部分主要包括仿真运行的控制程序各种积分算法的子程序,以及各种仿真语言的内装程序库函数。它
22、们与翻译模块输出的程序一起进行编译连接加载执行。n(3)输出部分:输出部分按使用者规定的输出指令要求将仿真运算结果进行处理。它包括处理输出指令,从有关的数据文件中抽取所需数据的子程序,在指定的输出设备上显示仿真结果的相应的子程序。9.3 一种典型的连续系统仿真语言一种典型的连续系统仿真语言nDARE-P(Differential Analyzer Replacement Portable)是由美国阿里桑那(Arizona)大学电器工程系计算机科学研究实验室研制成的一种仿真软件。它是按批处理方式设计的,适合在中型及大型计算机上运行。国内已有多家单位将它移植到微型机上。其主要特点如下:9.3.1
23、DARE-P的主要功能nDARE-P主要功能如下:1.面向方程,其模型采用一阶微分方程和代数方程组描述,其状态变量数200。2.具有自动安排各方程运算次序的能力;3.共有10种积分方法(见表9.3.1)可供选择,用户还可加入自定义的积分法则;4.有多种库函数可供调用,如延迟函数比较器饱和死区脉冲采样滞环等;5.具有多种输出方式,包括打印数据和图形,用绘图机输出图形,等等;6.在程序运行过程中,可以分阶段给出编程错误诊断信息,便于用户查错。9.3.1 DARE-P的主要功能 表9.3.1 DARE-P仿真语言的10种积分法序号 方法1龙格库塔梅森变步长法 2二阶龙格库塔 3吉尔(Gear)变步长
24、法 4四阶龙格库塔法 5二阶亚当斯(Adams)预估法(用二阶龙格库塔启动)6一阶欧拉法 7欣德马什(Hindmarch)变步长法 8四阶亚当斯莫尔顿预估校正变步长法 9隐式三阶龙格库塔法 10费尔伯格(Felberg)四(五)阶龙格库塔变步长法 9.3.2 DARE-P语言的基本结构语言的基本结构翻译系统TRNSYS(占内存约90KB)这部分共有1个主程序1个数据块26个子程序和2个函数子程序。它的主要作用是将用户用仿真语言编写的仿真题目程序翻译成FORTRAN语言,编译完后,自动与运行系统连接,一起运行。运行系统RUNSYS(占内存约170KB)运行系统中包括1个主程序5个基本子程序,以及
25、其它子程序和函数子程序等,这些子程序可分成三类:1.存放控制变量值及生成数据文件子程序;2.各种积分法则子程序;3.仿真中常用的一些函数子程序。运行系统中还分为单次仿真和多次仿真两种执行过程。两种过程的输出结果各有不同要求。9.3.2 DARE-P语言的基本结构语言的基本结构n3输出系统OUTSYS(占内存约40KB)输出系统中有1个主程序1个数据块19个子程序和2个函数子程序。它的作用是按输出指令的要求从有关数据文件中抽取所需信息,完成所要求形式的输出结果。9.3.3 DARE-P的使用方法的使用方法nDARE-P是一种模块式结构语言,模型描述初始值和参数设置,以及输出指令,都分别写在各个块
展开阅读全文