1 / 157

第九章 仿真应用技术

第九章 仿真应用技术. 实际应用计算机仿真技术时,还有许多问题需要考虑,本章将向读者介绍部分仿真应用技术,包括:仿真语言、一体化仿真技术、人工智能和专家系统在仿真技术中的应用、仿真建模方法学,以及仿真实验的计划指定和实施。

urania
Download Presentation

第九章 仿真应用技术

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第九章 仿真应用技术 • 实际应用计算机仿真技术时,还有许多问题需要考虑,本章将向读者介绍部分仿真应用技术,包括:仿真语言、一体化仿真技术、人工智能和专家系统在仿真技术中的应用、仿真建模方法学,以及仿真实验的计划指定和实施。 • 如果要有效地进行仿真研究,最大限度地避免工作中的盲目性,减少研究费用,缩短研究周期,必须对整个仿真研究工作进行科学而周密的组织与设计。对于从事实际应用的人员来说,仿真应用技术或仿真研究的组织方法是非常必要的知识。组织与设计工作的好坏,直接关系到仿真应用的成效。本章的最后向读者介绍这一方面的基本知识,使读者尤其是初学者重视仿真实验的组织﹑设计和实验工作,了解有关基本知识,并能应用到实际工作中去。 • 考虑到重点突出﹑篇幅限制等原因,对有些问题仅仅提出,而不做深入讨论。显然,在实际应用时,所要遇到的问题是极其复杂的,需要读者在今后的工作中不断探索,不断总结。

  2. 第九章 仿真应用技术 9.1 仿真语言及其发展 9.2 仿真语言的基本结构和组织 9.3 一种典型的连续系统仿真语言 9.4 一体化仿真技术 9.5 人工智能与仿真技术 9.6 数学模型和建模方法学 9.7 仿真实验的计划指定和实施

  3. 9.1 仿真语言及其发展9.1.1 连续系统的数字仿真 • 在数字计算机上进行仿真研究时,很重要的一个步骤是将研究对象的数学模型转变为能在计算机上实现的仿真模型,并编制仿真程序。仿真程序的一般组成如图3.5.1所示。 • 传统地编写仿真程序所采用的语言是高级算法语言,如FORTRAN语言,BASIC语言,C语言等。除非有时需要高质量的程序以节省使用机器内存和缩短程序执行时间,才用汇编语言编写。在采用高级语言编写仿真程序时,用户发现,虽然基本语言不难学习,并且便于移植,不受机型限制,但如需要充分利用语言的能力与精微之处,则需要很高的熟练程度。尤其是对一些模型结构复杂﹑模型状态变量和参数多的系统,用户不得不将许多精力和时间花费在模型参数处理﹑仿真算法和程序的实现,以及输出数据的分析等辅助性工作上,而不能将精力集中于对系统本身的研究。因而需要一种面向问题的非顺序的计算机语言。这种语言应该是足够简单,而且易于学习和使用。用户只需写入被仿真系统的模型,定义变量和必要的数据和命令,就可以进行仿真。这使得用户能摆脱程序编写中的许多细节问题,将精力集中于研究所要仿真的问题本身。这样的一种用于仿真研究的专用计算机语言,便是仿真语言。

  4. 9.1.1 连续系统的数字仿真 • 仿真程序﹑具有一定通用性的仿真程序包和仿真语言是处理不同问题常用的三种仿真工具。表9.1.1对它们进行了比较。读者可以根据问题的需求,以及软﹑硬件的可能性进行选择使用。 表9.1.1

  5. 9.1.2 仿真语言的功能 • 数字仿真语言是一种直接面向仿真问题的专用语言,是进行数字仿真的重要工具。其主 • 要功能表现为以下三点: (1) 有一套完整的规定描述模型的符号﹑语句﹑句法及语法,并有检测用该语言所 编写的源程序中错误的能力,最后能将文法上正确的源程序翻译成机器可执行码(一般是先翻译成某一种高级语言,比如FORTRAN语言,然后由计算机厂家所提供的编译程序转换成机器代码)。 (2) 具有设定模型实验的初始条件﹑终止条件,以及控制并实现单次﹑多次或迭代 运行的功能。 (3) 具有对仿真结果的分析与显示功能。

  6. 9.1.2 仿真语言的功能 • 由上面所介绍的仿真语言的三种功能可知:使用者使用这种语言不仅能更多地摆脱掉 • 对程序的熟悉与了解,而且由于它具有更强的仿真功能,因此能用来仿真比较复杂的系统,并且对系统进行更全面的实验。

  7. 9.1.3 仿真语言的分类 仿真语言可以按不同方式进行分类。 一、按被仿真系统的特点分类 按被仿真系统的特点可将仿真语言分为三类:  连续系统仿真语言;  离散系统仿真语言;  通用仿真语言。 连续系统仿真语言所采用的模型通常是微分方程,系统的响应是按一个或几个自变量的 变化而连续发生的。而离散系统仿真语言所采用的模型通常不包括微分方程,而包括部分代数方程和逻辑关系,其系统的响应是以在一个自变量的离散点上的事件序列的形式发生的。对于两类系统均适用的是通用仿真语言。本书仅介绍连续系统仿真语言。

  8. 9.1.3 仿真语言的分类 二、按数学模型的形式分类 连续系统仿真语言按被仿真系统的数学模型形式,可分为:  面向方程的仿真语言;  面向框图的仿真语言。 面向方程的仿真语言采用的模型描述方式是一阶微分方程组和代数方程,即与现代控制 理论中的状态空间相对应。面向框图的仿真语言中模型是通过框图的形式描述的,框图中的内容可以是加﹑减﹑乘﹑除运算,逻辑运算和积分运算等基本算符,也可以是基本传递函数或其它特定函数。

  9. 9.1.3 仿真语言的分类 三、按运行方式分类 按仿真语言在计算机上运行方式可分为:  交互式仿真语言,或会话式仿真语言;  非交互式仿真语言,或批处理式仿真语言。 交互式仿真语言在具有分时操作系统的大﹑中型计算机或小型﹑微型计算机上运行,通 常采用图形显示终端,并以键盘或光笔作为输入设备。该方式由于采用对话形式,故可及时观察分析仿真结果,修改模型结构或参数。非交互式仿真语言在大﹑中型机上通常采用读卡机来输入问题,在微型机上通常采用宏定义方式来描述问题和实验方法。显见这种方式只有在取得一次运行的结果后,才能分析仿真结果,并修改模型参数和实验方法。

  10. 9.1.4 数字仿真语言的发展概况和性能评价 从60年代开始,国外就已着手研制仿真语言。第一个获得广泛应用的数字仿真语言是MIMIC,它是1965年研制成功的一种面向方程的仿真语言。该语言的主要部分是一个翻译器,它把用MIMIC语言书写的仿真源程序翻译成机器代码。1966年美国又推出了另一个数字仿真语言-DSL/90,它也是面向方程的一种仿真语言。但它的翻译器是将仿真源程序翻译成FORTRAN语言,因此这种仿真语言可以和FORTRAN语言兼容。在这期间,美国相继推出了许多种数字仿真语言,为了促进数字仿真语言规范化,进一步普及推广数字仿真的应用,美国计算机仿真协会(SCS)软件委员会于1967年召集了许多仿真方面的专家进行了讨论,最后发表了一个数字仿真语言的标准文本-CSSL。因为SCS是美国仿真学术界的中心,因此CSSL有相当的权威性,在70年代初一直被广泛应用。与CSSL并列的还有一个被广泛应用的数字仿真语言-CSMP,它是IBM公司推出的。由于IBM公司是美国最大的一家计算机公司,所以CSMP也拥有众多的用户。

  11. 9.1.4 数字仿真语言的发展概况和性能评价 • 在70年代以后,数字仿真语言在提高功能﹑提高速度等方面有了一些新的发展。它们的代表是ACSL及DARE系列。我国从70年代后期在引进﹑移植和研制数字仿真语言方面也做了不少工作,并已取得了可喜的成绩。80年代,我国的仿真工作者在引进与消化国外仿真语言的基础上,逐步形成了自己的语言规范。ICSL就是我国一个功能比较齐全﹑质量较高的仿真语言。

  12. 9.2 仿真语言的基本结构和组织9.2.1 对仿真语言的主要要求 • 一个好的仿真语言应满足下列要求: • (1) 被仿真的问题可以以自然的形式,方便地用仿真语言的语句描述。所谓自然的形式,是指与工程技术人员用来描述被仿真系统的数学模型相一致的形式。通常,被仿真系统的数学模型具有微分方程与代数方程组合的形式,或框图的形式,因而要求仿真语言也能以相似的形式描述系统,最好兼有两种方式描述的能力,因为有些系统的模型具有组合的形式。 • (2) 要求仿真语言具有并行性的特点。在被仿真的实际连续系统中,过程是并行发生的,对模拟计算机来说,它是一种并行的计算装置,即对各个变量的运算是同时进行的,因而真实地体现了所仿真的连续系统中的工作状态。但数字计算机是串行计算装置,为了满足闭合回路的要求,一个变量在先前没有规定就不能出现在语句中,因而仿真语言必须有一种自动分选能力,能将规定数字仿真结构的仿真语言的语句排列成正确的计算顺序,从而使计算机按顺序计算,而从仿真语言的程序看来则如并行运算一样。

  13. 9.2.1 对仿真语言的主要要求 • (3) 仿真语言应备有多种不同的积分方法可供使用者选择。积分算法是数字仿真程序的核心。微分方程的数值解法有许多种;不同的方法具有不同的特点(精度﹑计算速度和对计算机的要求等),适合于不同的应用场合。多种积分算法的存在为满足用户的具体应用要求提供充分的选择余地。 • (4) 仿真语言应包含有预先编制好的输入和输出程序。输入程序可使用户方便地输入问题的模型和参数,并且便于修改模型参数。输出程序使用户可按所研究的问题的需要,选择有关的输出变量与参数,以多种输出方式输出。输出方式包括数据表格,时间响应曲线,相平面轨迹及变量与参数的交叉列表和绘图。输出设备的形式应多样化,包括宽行打印机﹑数字绘图机﹑图像终端等。使用者可以方便地用于准备技术报告的规格化文件。

  14. 9.2.1 对仿真语言的主要要求 • (5) 为了面向用户,仿真语言应与现有常用的有序编程语言(通常为FORTRAN,C语言等)有兼容性,使仿真语言的语句和有序语言的语句混和,从而有经验的用户可以将有序语言的功能引入到仿真语言中,扩展仿真语言的能力。 • (6) 为了面向用户,要求仿真语言要适应不同水平用户的要求。对不太熟悉的用户,可以使用仿真语言的基本组成部分,基本结构语句(或基本算符)和代数语句,内装的程序库,完成基本的仿真研究。对熟练的或内行的用户,则要求仿真语言具有扩展能力,能将用户规定的函数和程序加入到内装程序库中。 • (7) 要求仿真语言配有宏函数处理器。用户可将他所研究的问题中多次重复使用的部分编写为宏函数,通过宏函数处理器可被主程序反复引用。仿真语言的宏函数不仅是一种方便的速记手段,而且可成为一种表示分系统或特殊运算的直观的﹑有意义的语言要素。

  15. 9.2.1 对仿真语言的主要要求 (8) 仿真语言不仅应便于输入和修改系统参数及初始条件,更进一步应能进行多次运行的仿真研究,对多次运行具有逻辑控制﹑函数存储﹑二次运行间的代数运算等能力。这种多次运行研究可用于①模型参数及初始条件的“起始计算”和运行结果的“终结”处理,如求得时间历程采样的函数;②按预先编定的程序或按前次运算结果确定的参数及初始条件进行多次仿真运行,做迭代仿真实验,优化或模型匹配等研究;③保存多次运行的时间历程;④交叉绘制或交叉列表表示参数和初始条件对解的影响;⑤进行随机输入作用下的统计特性计算(蒙特卡罗仿真)。 (9) 要求具有多重速率的能力,即被仿真的模型可分成两段或多段(相应于被仿真总系统的分系统或暂存部分),以便①不同时间常数的子系统(如快的分系统和慢的分系统)可采用不同的积分方法或积分步长;②不同子系统结构在时间推移过程中的转接。 (10) 具有面向问题的错误的诊断能力,使仿真研究者能在源程序的级别上很快发现和改正错误。 上述要求是作为设计仿真语言的指导原则提出的,并不是所有仿真语言都能满足所有这些要求。

  16. 9.2.2 仿真语言的一般结构和组织 一、仿真语言的一般结构 仿真语言在结构上一般包括三个区域:初始区﹑动态区和终止区,如图9.2.1所示。 一般将仿真语言的单次运行称为仿真,同一问题的多次运行称为研究。 (1) 初始区:初始区包括了所有在一次仿真之前必须进行的输入/输出操作和初始化步骤。那些具有更永久性特点的初始化操作(如指定具体的积分算法)应在进入这一区域之前进行。 图9.2.2说明了初始区的一般结构。初始区在作用上可用三个分区域说明:解释程序﹑初始分区和积分初始分区。

  17. 9.2.2 仿真语言的一般结构和组织 图9.2.1 图9.2.2

  18. 9.2.2 仿真语言的一般结构和组织 解释程序是一个标准的系统程序,它完成仿真分析人员和程序之间在运行时间的交互作用。仿真分析人员可通过终端或其它输入装置输入参数和系统初始化的指令,这些指令经解释程序的翻译而在运行时执行。有下述类型的指令: 调整仿真中变量的值(如参数或初始条件); 中间读出任何仿真中变量的值; 对积分算法中可调控制参数,包括自变量的间隔﹑初值和终值及误差控制参数,进行控制; 进行简单的算术运算,用以根据前一次的结果计算参数的改变量; 对个别的仿真运行进行初始控制和对一组仿真运行(研究)进行终止控制。 初始分区是进行初始化计算﹑输入和仿真研究终止逻辑控制的有序编码。 积分初始化程序是运行时间所用数值积分系统的一部分。

  19. 9.2.2 仿真语言的一般结构和组织 (2) 动态区:动态区是仿真过程中在数字计算机和外界之间起积极的交互作用中的一部 分,它表示在使用者规定的自变量的离散值上进行的所有计算和输入/输出操作。 自变量的基本间隔用每次经过动态区的穿越来表示,称为仿真通讯间隔。这一间隔只由 与外界通讯的准确度要求来决定。计算(积分)间隔可以比通讯间隔短。计算间隔严格按数字计算(特别是积分)的准确度要求来决定。 图9.2.3所示说明了动态区的一般结构,它可用两个分区域描述:输入/输出和积分。

  20. 9.2.2 仿真语言的一般结构和组织 图9.2.3

  21. 9.2.2 仿真语言的一般结构和组织 • 输入/输出分区包括了在基本自变量回路中进行的积分运算以外的作用,其中有那些不属于导数计算部分的﹑与时间有关的代数计算和动态回路,以及程序条件实验所必需的所有数字输入。程序条件实验用于确定:①是否终止仿真并将控制转移到终止区;②是否要计算新的值和重新开始积分。在通信间隔上输出系统变量是在这一分区上控制的。 • 积分分区包括了动态区内对自变量的所有积分运算。积分分区还可以分成不同的数段,以便对几组仿真的状态变量采用不同的积分速率(或算法)。某些段落也可能根本不包含积分,而可能是仿真与积分速率有不同速率的并行同步逻辑部分的程序。 • 包括积分的各段都有与它相关的﹑计算被积分的状态变量导数的子程序,因为每一积分段都有这样一个子程序,故它被称为导数段。

  22. 9.2.2 仿真语言的一般结构和组织 (3) 终止区:终止区接受动态区的控制,并将控制作用返回到仿真的入口处。终止区包括用以适当地终止一次单一的仿真所需要的计算和输入/输出作用。此外,制备某些仿真报告的操作,如数据表和绘图输出,也在这一阶段完成。 二 仿真语言的程序组织 仿真语言的程序通常由三部分组成:翻译部分﹑运行部分和输出部分。 (1) 翻译部分:翻译部分的主要作用是将使用者用仿真语言编写的仿真程序翻译为中介语言或机器语言的子程序,以供和运行部分的有关程序一起编译(如果仿真语言的程序用中介语言写成)﹑连接和加载。翻译部分还完成语句的分选和排序作用﹑对使用者规定的输出指令的解释作用,以及输入数据(初始条件和参数)的处理。

  23. 9.2.2 仿真语言的一般结构和组织 • (2) 运行部分:运行部分主要包括仿真运行的控制程序﹑各种积分算法的子程序,以及各种仿真语言的内装程序库函数。它们与翻译模块输出的程序一起进行编译﹑连接﹑加载执行。 • (3) 输出部分:输出部分按使用者规定的输出指令要求将仿真运算结果进行处理。它包括处理输出指令,从有关的数据文件中抽取所需数据的子程序,在指定的输出设备上显示仿真结果的相应的子程序。

  24. 9.3 一种典型的连续系统仿真语言 • DARE-P(Differential Analyzer Replacement Portable)是由美国阿里桑那(Arizona)大学电器工程系计算机科学研究实验室研制成的一种仿真软件。它是按批处理方式设计的,适合在中型及大型计算机上运行。国内已有多家单位将它移植到微型机上。其主要特点如下:

  25. 9.3.1 DARE-P的主要功能 • DARE-P主要功能如下: • 面向方程,其模型采用一阶微分方程和代数方程组描述,其状态变量数≤200。 • 具有自动安排各方程运算次序的能力; • 共有10种积分方法(见表9.3.1)可供选择,用户还可加入自定义的积分法则; • 有多种库函数可供调用,如延迟函数﹑比较器﹑饱和﹑死区﹑脉冲采样﹑滞环等; • 具有多种输出方式,包括打印数据和图形,用绘图机输出图形,等等; • 在程序运行过程中,可以分阶段给出编程错误诊断信息,便于用户查错。

  26. 9.3.1 DARE-P的主要功能 表9.3.1 DARE-P仿真语言的10种积分法

  27. 9.3.2 DARE-P语言的基本结构 翻译系统TRNSYS(占内存约90KB) 这部分共有1个主程序﹑1个数据块﹑26个子程序和2个函数子程序。它的主要作用是将用户用仿真语言编写的仿真题目程序翻译成FORTRAN语言,编译完后,自动与运行系统连接,一起运行。 运行系统RUNSYS(占内存约170KB) 运行系统中包括1个主程序﹑5个基本子程序,以及其它子程序和函数子程序等,这些子程序可分成三类: • 存放控制变量值及生成数据文件子程序; • 各种积分法则子程序; • 仿真中常用的一些函数子程序。 运行系统中还分为单次仿真和多次仿真两种执行过程。两种过程的输出结果各有不同要求。

  28. 9.3.2 DARE-P语言的基本结构 • 3.输出系统OUTSYS(占内存约40KB) 输出系统中有1个主程序﹑1个数据块﹑19个子程序和2个函数子程序。它的作用是按输出指令的要求从有关数据文件中抽取所需信息,完成所要求形式的输出结果。

  29. 9.3.3 DARE-P的使用方法 • DARE-P是一种模块式结构语言,模型描述﹑初始值和参数设置,以及输出指令,都分别写在各个块中。每一种模块都有一定的识别符号(第2列上写有$符号,其后再接1或2个字符)。各模块名称及其内容见表9.3.2。

  30. 9.3.3 DARE-P的使用方法 • 下面分别说明各模块内容及有关子程序。 • (1) 导数块($D1和$D2) • 本块主要用于写入状态方程和所定义的变量方程。其状态变量导数用变量名加一圆点号(.)表示。例如: • 一阶微分方程为 其书写格式为 方程可以按任意顺序写入,翻译程序会自动将方程组整理出运算顺序。但是表达式中必须避免代数环出现,即要求用显式表示,而不能用隐式表示。例如,以下两式就构成了代数环: Q=P-X P=Y+Q • 因为上式中的变量Q需从两方程中解出,故构成了代数环。

  31. 9.3.3 DARE-P的使用方法 导数块中可以包含以下程序及变量:  过程段:它用于定义一组变量,其格式为 PROCED P,Q,…,=X,Y, … ENDPRO 被定义变量  控制仿真运行终止语句:其格式为 TERMINATE 算术表达式 当表达式小于或等于零时,仿真运行立即停止。例如: TERMINATE X+30.0 当X≤-30.0时,仿真运行停止。  存储变量的语句:其格式为 STORE A,B,… 其中 A,B, …为要存储的变量名称。

  32. 9.3.3 DARE-P的使用方法 重复段:当有些算式需要重复运算时,可用重复段语句,例如: REPEAT 3 FI$.=(V$(-1)-V$)/FL V$.=(FI$-FI$(+1))/C ENDREP 即实现以下运算: FI1.=(V-V1)/FL FI2.=(V1-V2)/FL F3.=(V2-V3)/FL V1.=(FI1-FI2)/C V2.=(FI2-FI3)/C V3.=(FI3-FI4)/C 导数块$D1和$D2都是用于书写模型方程及变量表达式的,一般只用一块$D1就够了。如果需要分开两组写(当采用不同的积分方法时),则可再用$D2导数块。

  33. 9.3.3 DARE-P的使用方法 (2) 逻辑块($L) 这块主要用于控制多次仿真运行。控制方式是重新设置变量值,并调用仿真运行程序RUN等。若是单次时不需要逻辑块。 本块中除调用运行子程序RUN完成从T=0到TMAX的一次仿真运行外,还调用以下子程序: RESET 用于将状态变量等设置到初始值,但不对外部定义变量(参数)重新设置。仿真参数如DT,DTMAX,DTMIN等也不重新设置。 CROSS 用于将输出变量随时间变化过程写于磁盘文件CROSS中,其作用与STORE(存储)子程序相似。 SAVE 用于将输出变量随时间变化过程写于磁盘文件SAVE中。如不用SAVE,则输出变量将写在磁盘文件TIME中,但TIME文件只保留多次运行中的最后一次结果。 STROF 用于阻止TIME文件的数据输出到SAVE文件中。因为有时只对多次运行中的最后一次解感兴趣,故这时可调用这一子程序。 STRON 用于恢复TIME文件向SAVE文件的输出。

  34. 9.3.3 DARE-P的使用方法 (3) FORTRAN块($F)和自编块($O) (4)表格块($T) 用于设置一维和二维任意非线形函数自变量和函数值的数据表格,以及相应的线性内插查表函数。以一维函数为例,其格式如下: $T EXAMPLE OF ONE-DIMENSIONAL TABLE NAME,4 3.0,1.0 4.0,5.0 8.0,3.0 9.0,2.0 以上表格规定了一个单变量函数NAME(X),有4个数据点,自变量值3.0,4.0,8.0,9.0自小到大排列。 (5) 方法块($M) 主要用于调用各种积分法则子程序。 (6) 打印控制块($P) 用于阻止打印。 (7) 模型结束(END) 写于第1~3列上的END字符表示模型结束。另外,73~80列作为识别区,语句内容不能写入。

  35. 9.3.4 应用例子 设二阶系统的微分方程为 状态方程为 在应用DARE-P仿真语言时,用户只需书写以下程序即可 $D1 * SECOND ORDER SYSTEM Y.=YDOT YDOT.=-D*YDOT-Y+1.0 END TMAX=50.0,DT=0.1 END LIST,Y,YDOT PLOT,Y PLOTXY,Y,YDOT END

  36. 9.4 一体化仿真技术 • 50年代最热门的仿真领域是火炮控制和飞行控制系统,60年代是火箭(导弹)控制系统,70年代是航天﹑能源和经济管理系统,80年代是计算机集成制造系统(CIMS),而90年代最热门的仿真领域是仿真技术本身的革命,即仿真理论的发展和仿真开发系统的革新。这主要是因为各种技术﹑工程所面临的系统愈来愈庞大和复杂。要对这类系统进行符合相似程度的仿真实验,传统的仿真理论与仿真方法难以适应,只有发展新型的仿真技术才能提高仿真效率,改善仿真环境。

  37. 9.4 一体化仿真技术 • 一体化仿真技术起源于80年代中期,由于当时仿真应用在广度及深度方面已达到一个相当的地步;已有的各种仿真软件常常不能方便而协调地支持仿真研究的全过程;而且不同的用户或者不同的仿真任务对仿真环境均有不同的要求。此外更重要的是仿真工程师已经意识到,仿真不是单纯的对模型的实验,而是应当包括从建模到实验再到结果分析的全过程。换言之,仿真软件不再只是由仿真程序组成的简单系统,而是定义了一个建模﹑分析和设计全过程仿真的环境。在这个环境中,嵌入了一个仿真运行系统。特别重要的是,这个环境支持仿真研究的全过程,包括模型描述﹑实验框架描述﹑实验运行﹑统计分析﹑输出报告﹑图形显示,以及对与各种仿真关联的资源(如:模型﹑参数集﹑实验框架﹑算法和实验结果)的存储和管理。

  38. 9.4 一体化仿真技术 • 一体化仿真环境的定义是:一体化仿真环境是一个软件工具的集合,它包括设计﹑编制及检验模型;编写及证实仿真程序;准备模型输入数据;分析模型输出数据;设计及执行模型实验大纲。由此也可以认为,所谓一体化仿真环境就是将若干个具有不同功能的软件集成为一个包含有多种功能的软件系统,使仿真模型能根据仿真任务的需求进行分解和拼合,并能对仿真资源一体化在集成的程度上可以不同。比如:可以仅仅实现功能上的一体化,或仅仅实现资源管理上的一体化(线集成);也可以实现功能与资源,或功能与模型的一体化(面集成);还可以对功能﹑模型处理及资源管理全面实现一体化(体集成),如图9.4.1所示。

  39. 9.4 一体化仿真技术 图9.4.1 一体化仿真模型 显见,这样的一体化仿 软件必须以工程数据库为核心,使操作系统﹑编译系统﹑仿真语言﹑数据库管理系统﹑统计分析和图形生成软件形成一个整体。基本的一体化仿真环境如图9.4.2所示,各部分的主要功能如下所述。

  40. 9.4 一体化仿真技术 图9.4.2 一体化仿真环境

  41. 9.4 一体化仿真技术 一、一体化语言 一体化语言部分的模块主要由一体化语言命令集和一体化语言预编译器所组成。命令集解释系统并接受用户的命令,对该命令进行语法检查。若命令合法,则调用完成该命令的有关模块,将接收到的参数传给相应的模块,并完成命令所要求完成的功能。若命令不合法,则打印错误信息,并能给出正确的语法格式。一体化语言预编译器则是处理用户命令,并将命令翻译成仿真语言的格式写入仿真语言程序。仿真工程师按一体化语言格式写成仿真程序。预编译器的功能就是读取用户仿真程序,区别程序语句和命令语句,并完成命令语句功能。在一体化仿真语言的支持下,用户可以用简练的命令集构成的仿真程序,完成从建模﹑运行到优化和结果分析一系列复杂的仿真过程。

  42. 9.4 一体化仿真技术 二 数据库管理系统 数据库管理系统用关系数据库RDB实现,常用的有ORACLE,FOXPRO,DBASE等关系数据库 语言。各种仿真关联资源:模型﹑参数集﹑实验框架和实验数据等都存储在这里。数据库管理系统通过对这些资源的存储和管理,以实现不同的仿真目的。 数据库管理系统的存在是一体化仿真环境与传统仿真工具之间最大差别的原因之一,也正是由于数据库管理系统能够在仿真全过程中对仿真资源实行同一管理,因此也有学者认为:一体化仿真环境是以仿真数据库为核心的软件系统。

  43. 9.4 一体化仿真技术 三、实验运行系统 实验运行系统包括辨识﹑仿真﹑优化和分析等支撑服务软件,其主要功能应包括:  辨识软件的主要功能是根据用户要求和实验数据完成仿真模型的建立,参数辨识和模型验证,采用的算法有最小二乘法﹑极大似然法和随机寻优法等。  仿真部分应包括各种数值积分算法,如亚当斯多步法﹑龙格-库塔法,以及解刚性系统的雷纳尔法,半隐式龙格库塔法等。  优化包括参数寻优和函数寻优等功能,以实现系统参数优化和控制设计,其算法应包括梯度法﹑单纯形法﹑随机搜索寻优等方法。  分析软件至少应有数据输出和存放,图形和曲线生成功能,对于较强的软件还应有对仿真结果的统计﹑分析﹑列表等功能,甚至能达到将仿真实验阶段的分析结果反馈到建模阶段,以实现闭环仿真。

  44. 9.4 一体化仿真技术 • 目前一体化仿真软件的实现,公认最好的是由美国学者研制成的TESS(The Extended Simulation System)。TESS由七部分构成: • TESS语言; • 数据库管理系统; • 图形产生器; • 形式处理器; • 图形网络建立器; • FORTRAN子程序库; • 与仿真语言的接口。

  45. 整个系统以一个关系数据库为核心,通过TESS语言关系,存储﹑检查数据库的数据,如图9.4.3所示。关系数据库管理的数据包括:描述模型的数据﹑仿真模型的输入数据﹑仿真实验结果﹑输入/输出显示的参数。整个系统以一个关系数据库为核心,通过TESS语言关系,存储﹑检查数据库的数据,如图9.4.3所示。关系数据库管理的数据包括:描述模型的数据﹑仿真模型的输入数据﹑仿真实验结果﹑输入/输出显示的参数。 用户使用TESS可以做到建模﹑仿真﹑分析结果处理的一体化以及数据和参数格式的标准化。 图9.4.3 9.4 一体化仿真技术

  46. 9.5 人工智能与仿真技术9.5.1 概述 • 在过去的几十年时间里,作为研究智能本质,并试图建立实用系统的人工智能学科,在知识获取﹑知识表示﹑问题解答﹑定理证明﹑程序自动设计﹑自然语言理解﹑计算机视觉﹑多媒体技术﹑机器人学﹑机器学习和专家系统等方面,已取得了令人鼓舞的成果与广泛的应用。各种用途的专家系统正在不断涌现,相应地理论和关键技术也已取得突破,并日益发展和完善。由于人工智能(AI)不仅在人类探索智能本质方面具有重大的科学价值,而且在帮助人们解决某些专门领域中的问题时具有重大的经济价值,因此,众多的学科和技术正在不断地受着人工智能的影响。 • 将人工智能﹑专家系统嵌入到仿真环境是减少仿真中的人力消耗,提高仿真自动化程度和仿真精度,拓宽一体化仿真规模的不可缺少的技术,也是仿真技术本身变革的外在动力之一。仿真工程师们普遍关注人工智能﹑专家系统学科的发展,并期望引入人工智能技术增强系统仿真﹑建模的能力,其主要表现在:

  47. 9.5.1 概述 • 引入知识表达及处理技术以扩大仿真模型的知识描述能力; • 在建模﹑仿真实验设计和仿真结果分析等阶段中,引入专家知识﹑自动推理和解释机制,以辅助领域工程师做各种决策; • 辅助模型的修正和维护; • 实现友好的人机界面(可视化技术﹑自然语言理解﹑多媒体技术); • 建立智能化数据库以及辅助数据的管理维护。 • AI技术在仿真中的应用,最近几年已有相当的发展,许多理论问题和技术难点已获得突破。随着计算机软﹑硬件的发展,具有智能化的仿真环境已成功地应用于许多领域。限于篇幅,在此仅介绍人工智能在仿真技术中的应用,以及讨论某些相关的问题,而不去研究具有智能化仿真环境在具体领域中的应用问题。有兴趣的读者可以参看相关的文献。

  48. 9.5.2 人工智能在仿真技术中的主要应用 • 图9.5.1是目前经常用来描述人工智能与仿真技术在学科上的交叉图,它涉及仿真领域的各方面,在此仅讨论几个主要方面。 图9.5.1

  49. 9.5.2 人工智能在仿真技术中的主要应用 一 知识库用于系统的建模与模型验证 人类的科学知识从低级﹑特殊到高级﹑一般有层次地积累起来,用脑力来完成这些与科学理论构造有关的知识的组织过程是困难的,这需要付出巨大的代价。对物理系统的建模就属于这样的工作,它不仅需要一定的数学﹑物理等知识,而且需要相当的实际经验,即领域知识,才能做好工作。但利用计算机适当地组织来自世界系统的信息,不仅对人机紧密结合的发展有所帮助,而且对建立一个能彻底支持建模活动的信息库起了极大的作用。在这样一个建模活动中,知识库扮演着一个重要的角色。知识库用于建模与模型验证的基本课题是:在仿真研究的各个不同阶段上借助专家知识库辅助仿真工程师对仿真模型的建立﹑验证和综合进行咨询服务和决策。其主要应用项目是建模顾问专家系统。它用在建模过程中应用模型库选择模型元素并合成适当的模型,其中心问题是能够根据人类的经验用规范的形式来综合描述物理过程。

  50. 9.5.2 人工智能在仿真技术中的主要应用 二、仿真技术与人工智能技术的结合 在仿真与AI结合方面,一个重要的领域是AI对于大系统的计算机仿真,特别是用于决策系统的仿真。这时,要在一个信息不充分﹑不确定,甚至不正确的情况下去进行计划﹑调度和做出各种方案的假设。在这类系统的仿真研究中,AI技术是十分适用的。由于这类系统的某些子过程主要表现为启发式或符号运算式,因此用一个专家系统来建模是很合适的。对于另一些子过程,它们具有确定的和连续的性质(如物理过程),因此可以按照一般动态系统建模方法来建模。 另一方面,仿真可用于评估一个知识系统。知识库系统的一个重要应用是控制生产过程,类似人在控制过程中所起的分析和支持作用。为了测试这样一个智能控制系统,有必要建立系统仿真模型。

More Related