- 542.08 KB
- 2022-08-30 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
第九章仿真应用技术实际应用计算机仿真技术时,还有许多问题需要考虑,本章将向读者介绍部分仿真应用技术,包括:仿真语言、一体化仿真技术、人工智能和专家系统在仿真技术中的应用、仿真建模方法学,以及仿真实验的计划指定和实施。如果要有效地进行仿真研究,最大限度地避免工作中的盲目性,减少研究费用,缩短研究周期,必须对整个仿真研究工作进行科学而周密的组织与设计。对于从事实际应用的人员来说,仿真应用技术或仿真研究的组织方法是非常必要的知识。组织与设计工作的好坏,直接关系到仿真应用的成效。本章的最后向读者介绍这一方面的基本知识,使读者尤其是初学者重视仿真实验的组织﹑设计和实验工作,了解有关基本知识,并能应用到实际工作中去。考虑到重点突出﹑篇幅限制等原因,对有些问题仅仅提出,而不做深入讨论。显然,在实际应用时,所要遇到的问题是极其复杂的,需要读者在今后的工作中不断探索,不断总结。\n第九章仿真应用技术9.1仿真语言及其发展9.2仿真语言的基本结构和组织9.3一种典型的连续系统仿真语言9.4一体化仿真技术9.5人工智能与仿真技术9.6数学模型和建模方法学9.7仿真实验的计划指定和实施\n9.1仿真语言及其发展9.1.1连续系统的数字仿真在数字计算机上进行仿真研究时,很重要的一个步骤是将研究对象的数学模型转变为能在计算机上实现的仿真模型,并编制仿真程序。仿真程序的一般组成如图3.5.1所示。传统地编写仿真程序所采用的语言是高级算法语言,如FORTRAN语言,BASIC语言,C语言等。除非有时需要高质量的程序以节省使用机器内存和缩短程序执行时间,才用汇编语言编写。在采用高级语言编写仿真程序时,用户发现,虽然基本语言不难学习,并且便于移植,不受机型限制,但如需要充分利用语言的能力与精微之处,则需要很高的熟练程度。尤其是对一些模型结构复杂﹑模型状态变量和参数多的系统,用户不得不将许多精力和时间花费在模型参数处理﹑仿真算法和程序的实现,以及输出数据的分析等辅助性工作上,而不能将精力集中于对系统本身的研究。因而需要一种面向问题的非顺序的计算机语言。这种语言应该是足够简单,而且易于学习和使用。用户只需写入被仿真系统的模型,定义变量和必要的数据和命令,就可以进行仿真。这使得用户能摆脱程序编写中的许多细节问题,将精力集中于研究所要仿真的问题本身。这样的一种用于仿真研究的专用计算机语言,便是仿真语言。\n9.1.1连续系统的数字仿真仿真程序﹑具有一定通用性的仿真程序包和仿真语言是处理不同问题常用的三种仿真工具。表9.1.1对它们进行了比较。读者可以根据问题的需求,以及软﹑硬件的可能性进行选择使用。表9.1.1通用型编程难易程度功能程序灵活性对存储容易的要求程序执行时间仿真程序差困难弱差低短仿真程序包较好较方便较弱较好较低短仿真语言好方便强好较高较长\n9.1.2仿真语言的功能数字仿真语言是一种直接面向仿真问题的专用语言,是进行数字仿真的重要工具。其主要功能表现为以下三点:(1)有一套完整的规定描述模型的符号﹑语句﹑句法及语法,并有检测用该语言所编写的源程序中错误的能力,最后能将文法上正确的源程序翻译成机器可执行码(一般是先翻译成某一种高级语言,比如FORTRAN语言,然后由计算机厂家所提供的编译程序转换成机器代码)。(2)具有设定模型实验的初始条件﹑终止条件,以及控制并实现单次﹑多次或迭代运行的功能。(3)具有对仿真结果的分析与显示功能。\n9.1.2仿真语言的功能由上面所介绍的仿真语言的三种功能可知:使用者使用这种语言不仅能更多地摆脱掉对程序的熟悉与了解,而且由于它具有更强的仿真功能,因此能用来仿真比较复杂的系统,并且对系统进行更全面的实验。\n9.1.3仿真语言的分类仿真语言可以按不同方式进行分类。一、按被仿真系统的特点分类按被仿真系统的特点可将仿真语言分为三类:连续系统仿真语言;离散系统仿真语言;通用仿真语言。连续系统仿真语言所采用的模型通常是微分方程,系统的响应是按一个或几个自变量的变化而连续发生的。而离散系统仿真语言所采用的模型通常不包括微分方程,而包括部分代数方程和逻辑关系,其系统的响应是以在一个自变量的离散点上的事件序列的形式发生的。对于两类系统均适用的是通用仿真语言。本书仅介绍连续系统仿真语言。\n9.1.3仿真语言的分类二、按数学模型的形式分类连续系统仿真语言按被仿真系统的数学模型形式,可分为:面向方程的仿真语言;面向框图的仿真语言。面向方程的仿真语言采用的模型描述方式是一阶微分方程组和代数方程,即与现代控制理论中的状态空间相对应。面向框图的仿真语言中模型是通过框图的形式描述的,框图中的内容可以是加﹑减﹑乘﹑除运算,逻辑运算和积分运算等基本算符,也可以是基本传递函数或其它特定函数。\n9.1.3仿真语言的分类三、按运行方式分类按仿真语言在计算机上运行方式可分为:交互式仿真语言,或会话式仿真语言;非交互式仿真语言,或批处理式仿真语言。交互式仿真语言在具有分时操作系统的大﹑中型计算机或小型﹑微型计算机上运行,通常采用图形显示终端,并以键盘或光笔作为输入设备。该方式由于采用对话形式,故可及时观察分析仿真结果,修改模型结构或参数。非交互式仿真语言在大﹑中型机上通常采用读卡机来输入问题,在微型机上通常采用宏定义方式来描述问题和实验方法。显见这种方式只有在取得一次运行的结果后,才能分析仿真结果,并修改模型参数和实验方法。\n9.1.4数字仿真语言的发展概况和性能评价从60年代开始,国外就已着手研制仿真语言。第一个获得广泛应用的数字仿真语言是MIMIC,它是1965年研制成功的一种面向方程的仿真语言。该语言的主要部分是一个翻译器,它把用MIMIC语言书写的仿真源程序翻译成机器代码。1966年美国又推出了另一个数字仿真语言-DSL/90,它也是面向方程的一种仿真语言。但它的翻译器是将仿真源程序翻译成FORTRAN语言,因此这种仿真语言可以和FORTRAN语言兼容。在这期间,美国相继推出了许多种数字仿真语言,为了促进数字仿真语言规范化,进一步普及推广数字仿真的应用,美国计算机仿真协会(SCS)软件委员会于1967年召集了许多仿真方面的专家进行了讨论,最后发表了一个数字仿真语言的标准文本-CSSL。因为SCS是美国仿真学术界的中心,因此CSSL有相当的权威性,在70年代初一直被广泛应用。与CSSL并列的还有一个被广泛应用的数字仿真语言-CSMP,它是IBM公司推出的。由于IBM公司是美国最大的一家计算机公司,所以CSMP也拥有众多的用户。\n9.1.4数字仿真语言的发展概况和性能评价在70年代以后,数字仿真语言在提高功能﹑提高速度等方面有了一些新的发展。它们的代表是ACSL及DARE系列。我国从70年代后期在引进﹑移植和研制数字仿真语言方面也做了不少工作,并已取得了可喜的成绩。80年代,我国的仿真工作者在引进与消化国外仿真语言的基础上,逐步形成了自己的语言规范。ICSL就是我国一个功能比较齐全﹑质量较高的仿真语言。\n9.2仿真语言的基本结构和组织9.2.1对仿真语言的主要要求一个好的仿真语言应满足下列要求:(1)被仿真的问题可以以自然的形式,方便地用仿真语言的语句描述。所谓自然的形式,是指与工程技术人员用来描述被仿真系统的数学模型相一致的形式。通常,被仿真系统的数学模型具有微分方程与代数方程组合的形式,或框图的形式,因而要求仿真语言也能以相似的形式描述系统,最好兼有两种方式描述的能力,因为有些系统的模型具有组合的形式。(2)要求仿真语言具有并行性的特点。在被仿真的实际连续系统中,过程是并行发生的,对模拟计算机来说,它是一种并行的计算装置,即对各个变量的运算是同时进行的,因而真实地体现了所仿真的连续系统中的工作状态。但数字计算机是串行计算装置,为了满足闭合回路的要求,一个变量在先前没有规定就不能出现在语句中,因而仿真语言必须有一种自动分选能力,能将规定数字仿真结构的仿真语言的语句排列成正确的计算顺序,从而使计算机按顺序计算,而从仿真语言的程序看来则如并行运算一样。\n9.2.1对仿真语言的主要要求(3)仿真语言应备有多种不同的积分方法可供使用者选择。积分算法是数字仿真程序的核心。微分方程的数值解法有许多种;不同的方法具有不同的特点(精度﹑计算速度和对计算机的要求等),适合于不同的应用场合。多种积分算法的存在为满足用户的具体应用要求提供充分的选择余地。(4)仿真语言应包含有预先编制好的输入和输出程序。输入程序可使用户方便地输入问题的模型和参数,并且便于修改模型参数。输出程序使用户可按所研究的问题的需要,选择有关的输出变量与参数,以多种输出方式输出。输出方式包括数据表格,时间响应曲线,相平面轨迹及变量与参数的交叉列表和绘图。输出设备的形式应多样化,包括宽行打印机﹑数字绘图机﹑图像终端等。使用者可以方便地用于准备技术报告的规格化文件。\n9.2.1对仿真语言的主要要求(5)为了面向用户,仿真语言应与现有常用的有序编程语言(通常为FORTRAN,C语言等)有兼容性,使仿真语言的语句和有序语言的语句混和,从而有经验的用户可以将有序语言的功能引入到仿真语言中,扩展仿真语言的能力。(6)为了面向用户,要求仿真语言要适应不同水平用户的要求。对不太熟悉的用户,可以使用仿真语言的基本组成部分,基本结构语句(或基本算符)和代数语句,内装的程序库,完成基本的仿真研究。对熟练的或内行的用户,则要求仿真语言具有扩展能力,能将用户规定的函数和程序加入到内装程序库中。(7)要求仿真语言配有宏函数处理器。用户可将他所研究的问题中多次重复使用的部分编写为宏函数,通过宏函数处理器可被主程序反复引用。仿真语言的宏函数不仅是一种方便的速记手段,而且可成为一种表示分系统或特殊运算的直观的﹑有意义的语言要素。\n9.2.1对仿真语言的主要要求(8)仿真语言不仅应便于输入和修改系统参数及初始条件,更进一步应能进行多次运行的仿真研究,对多次运行具有逻辑控制﹑函数存储﹑二次运行间的代数运算等能力。这种多次运行研究可用于①模型参数及初始条件的“起始计算”和运行结果的“终结”处理,如求得时间历程采样的函数;②按预先编定的程序或按前次运算结果确定的参数及初始条件进行多次仿真运行,做迭代仿真实验,优化或模型匹配等研究;③保存多次运行的时间历程;④交叉绘制或交叉列表表示参数和初始条件对解的影响;⑤进行随机输入作用下的统计特性计算(蒙特卡罗仿真)。(9)要求具有多重速率的能力,即被仿真的模型可分成两段或多段(相应于被仿真总系统的分系统或暂存部分),以便①不同时间常数的子系统(如快的分系统和慢的分系统)可采用不同的积分方法或积分步长;②不同子系统结构在时间推移过程中的转接。(10)具有面向问题的错误的诊断能力,使仿真研究者能在源程序的级别上很快发现和改正错误。上述要求是作为设计仿真语言的指导原则提出的,并不是所有仿真语言都能满足所有这些要求。\n9.2.2仿真语言的一般结构和组织一、仿真语言的一般结构仿真语言在结构上一般包括三个区域:初始区﹑动态区和终止区,如图9.2.1所示。一般将仿真语言的单次运行称为仿真,同一问题的多次运行称为研究。(1)初始区:初始区包括了所有在一次仿真之前必须进行的输入/输出操作和初始化步骤。那些具有更永久性特点的初始化操作(如指定具体的积分算法)应在进入这一区域之前进行。图9.2.2说明了初始区的一般结构。初始区在作用上可用三个分区域说明:解释程序﹑初始分区和积分初始分区。\n9.2.2仿真语言的一般结构和组织图9.2.1图9.2.2\n9.2.2仿真语言的一般结构和组织解释程序是一个标准的系统程序,它完成仿真分析人员和程序之间在运行时间的交互作用。仿真分析人员可通过终端或其它输入装置输入参数和系统初始化的指令,这些指令经解释程序的翻译而在运行时执行。有下述类型的指令:调整仿真中变量的值(如参数或初始条件);中间读出任何仿真中变量的值;对积分算法中可调控制参数,包括自变量的间隔﹑初值和终值及误差控制参数,进行控制;进行简单的算术运算,用以根据前一次的结果计算参数的改变量;对个别的仿真运行进行初始控制和对一组仿真运行(研究)进行终止控制。初始分区是进行初始化计算﹑输入和仿真研究终止逻辑控制的有序编码。积分初始化程序是运行时间所用数值积分系统的一部分。\n9.2.2仿真语言的一般结构和组织(2)动态区:动态区是仿真过程中在数字计算机和外界之间起积极的交互作用中的一部分,它表示在使用者规定的自变量的离散值上进行的所有计算和输入/输出操作。自变量的基本间隔用每次经过动态区的穿越来表示,称为仿真通讯间隔。这一间隔只由与外界通讯的准确度要求来决定。计算(积分)间隔可以比通讯间隔短。计算间隔严格按数字计算(特别是积分)的准确度要求来决定。图9.2.3所示说明了动态区的一般结构,它可用两个分区域描述:输入/输出和积分。\n9.2.2仿真语言的一般结构和组织图9.2.3\n9.2.2仿真语言的一般结构和组织输入/输出分区包括了在基本自变量回路中进行的积分运算以外的作用,其中有那些不属于导数计算部分的﹑与时间有关的代数计算和动态回路,以及程序条件实验所必需的所有数字输入。程序条件实验用于确定:①是否终止仿真并将控制转移到终止区;②是否要计算新的值和重新开始积分。在通信间隔上输出系统变量是在这一分区上控制的。积分分区包括了动态区内对自变量的所有积分运算。积分分区还可以分成不同的数段,以便对几组仿真的状态变量采用不同的积分速率(或算法)。某些段落也可能根本不包含积分,而可能是仿真与积分速率有不同速率的并行同步逻辑部分的程序。包括积分的各段都有与它相关的﹑计算被积分的状态变量导数的子程序,因为每一积分段都有这样一个子程序,故它被称为导数段。\n9.2.2仿真语言的一般结构和组织(3)终止区:终止区接受动态区的控制,并将控制作用返回到仿真的入口处。终止区包括用以适当地终止一次单一的仿真所需要的计算和输入/输出作用。此外,制备某些仿真报告的操作,如数据表和绘图输出,也在这一阶段完成。二仿真语言的程序组织仿真语言的程序通常由三部分组成:翻译部分﹑运行部分和输出部分。(1)翻译部分:翻译部分的主要作用是将使用者用仿真语言编写的仿真程序翻译为中介语言或机器语言的子程序,以供和运行部分的有关程序一起编译(如果仿真语言的程序用中介语言写成)﹑连接和加载。翻译部分还完成语句的分选和排序作用﹑对使用者规定的输出指令的解释作用,以及输入数据(初始条件和参数)的处理。\n9.2.2仿真语言的一般结构和组织(2)运行部分:运行部分主要包括仿真运行的控制程序﹑各种积分算法的子程序,以及各种仿真语言的内装程序库函数。它们与翻译模块输出的程序一起进行编译﹑连接﹑加载执行。(3)输出部分:输出部分按使用者规定的输出指令要求将仿真运算结果进行处理。它包括处理输出指令,从有关的数据文件中抽取所需数据的子程序,在指定的输出设备上显示仿真结果的相应的子程序。\n9.3一种典型的连续系统仿真语言DARE-P(DifferentialAnalyzerReplacementPortable)是由美国阿里桑那(Arizona)大学电器工程系计算机科学研究实验室研制成的一种仿真软件。它是按批处理方式设计的,适合在中型及大型计算机上运行。国内已有多家单位将它移植到微型机上。其主要特点如下:\n9.3.1DARE-P的主要功能DARE-P主要功能如下:面向方程,其模型采用一阶微分方程和代数方程组描述,其状态变量数≤200。具有自动安排各方程运算次序的能力;共有10种积分方法(见表9.3.1)可供选择,用户还可加入自定义的积分法则;有多种库函数可供调用,如延迟函数﹑比较器﹑饱和﹑死区﹑脉冲采样﹑滞环等;具有多种输出方式,包括打印数据和图形,用绘图机输出图形,等等;在程序运行过程中,可以分阶段给出编程错误诊断信息,便于用户查错。\n9.3.1DARE-P的主要功能表9.3.1DARE-P仿真语言的10种积分法序号方法1龙格-库塔-梅森变步长法2二阶龙格-库塔3吉尔(Gear)变步长法4四阶龙格-库塔法5二阶亚当斯(Adams)预估法(用二阶龙格-库塔启动)6一阶欧拉法7欣德马什(Hindmarch)变步长法8四阶亚当斯-莫尔顿预估-校正变步长法9隐式三阶龙格-库塔法10费尔伯格(Felberg)四(五)阶龙格-库塔变步长法\n9.3.2DARE-P语言的基本结构翻译系统TRNSYS(占内存约90KB)这部分共有1个主程序﹑1个数据块﹑26个子程序和2个函数子程序。它的主要作用是将用户用仿真语言编写的仿真题目程序翻译成FORTRAN语言,编译完后,自动与运行系统连接,一起运行。运行系统RUNSYS(占内存约170KB)运行系统中包括1个主程序﹑5个基本子程序,以及其它子程序和函数子程序等,这些子程序可分成三类:存放控制变量值及生成数据文件子程序;各种积分法则子程序;仿真中常用的一些函数子程序。运行系统中还分为单次仿真和多次仿真两种执行过程。两种过程的输出结果各有不同要求。\n9.3.2DARE-P语言的基本结构3.输出系统OUTSYS(占内存约40KB)输出系统中有1个主程序﹑1个数据块﹑19个子程序和2个函数子程序。它的作用是按输出指令的要求从有关数据文件中抽取所需信息,完成所要求形式的输出结果。\n9.3.3DARE-P的使用方法DARE-P是一种模块式结构语言,模型描述﹑初始值和参数设置,以及输出指令,都分别写在各个块中。每一种模块都有一定的识别符号(第2列上写有$符号,其后再接1或2个字符)。各模块名称及其内容见表9.3.2。名称识别符内容导数块1$D1描述导数块1中所有的系统模型方程导数块2$D2描述导数块2中所有的系统模型方程逻辑块$L控制仿真运行中的FORTRAN码表格块$T以表格形式规定的函数函数块$FFORTRAN函数或函数子程序方法块$Mn所选用的积分法则号数为n自编块$O用户自己提供的积分法则子程序打印控制块$P控制打印输出\n9.3.3DARE-P的使用方法下面分别说明各模块内容及有关子程序。(1)导数块($D1和$D2)本块主要用于写入状态方程和所定义的变量方程。其状态变量导数用变量名加一圆点号(.)表示。例如:一阶微分方程为其书写格式为方程可以按任意顺序写入,翻译程序会自动将方程组整理出运算顺序。但是表达式中必须避免代数环出现,即要求用显式表示,而不能用隐式表示。例如,以下两式就构成了代数环:Q=P-XP=Y+Q因为上式中的变量Q需从两方程中解出,故构成了代数环。\n9.3.3DARE-P的使用方法导数块中可以包含以下程序及变量:过程段:它用于定义一组变量,其格式为PROCEDP,Q,…,=X,Y,…ENDPRO被定义变量控制仿真运行终止语句:其格式为TERMINATE算术表达式当表达式小于或等于零时,仿真运行立即停止。例如:TERMINATEX+30.0当X≤-30.0时,仿真运行停止。存储变量的语句:其格式为STOREA,B,…其中A,B,…为要存储的变量名称。\n9.3.3DARE-P的使用方法重复段:当有些算式需要重复运算时,可用重复段语句,例如:REPEAT3FI$.=(V$(-1)-V$)/FLV$.=(FI$-FI$(+1))/CENDREP即实现以下运算:FI1.=(V-V1)/FLFI2.=(V1-V2)/FLF3.=(V2-V3)/FLV1.=(FI1-FI2)/CV2.=(FI2-FI3)/CV3.=(FI3-FI4)/C导数块$D1和$D2都是用于书写模型方程及变量表达式的,一般只用一块$D1就够了。如果需要分开两组写(当采用不同的积分方法时),则可再用$D2导数块。\n9.3.3DARE-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文件的输出。\n9.3.3DARE-P的使用方法(3)FORTRAN块($F)和自编块($O)(4)表格块($T)用于设置一维和二维任意非线形函数自变量和函数值的数据表格,以及相应的线性内插查表函数。以一维函数为例,其格式如下:$TEXAMPLEOFONE-DIMENSIONALTABLENAME,43.0,1.04.0,5.08.0,3.09.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列作为识别区,语句内容不能写入。\n9.3.4应用例子设二阶系统的微分方程为状态方程为在应用DARE-P仿真语言时,用户只需书写以下程序即可$D1*SECONDORDERSYSTEMY.=YDOTYDOT.=-D*YDOT-Y+1.0ENDTMAX=50.0,DT=0.1ENDLIST,Y,YDOTPLOT,YPLOTXY,Y,YDOTEND\n9.4一体化仿真技术50年代最热门的仿真领域是火炮控制和飞行控制系统,60年代是火箭(导弹)控制系统,70年代是航天﹑能源和经济管理系统,80年代是计算机集成制造系统(CIMS),而90年代最热门的仿真领域是仿真技术本身的革命,即仿真理论的发展和仿真开发系统的革新。这主要是因为各种技术﹑工程所面临的系统愈来愈庞大和复杂。要对这类系统进行符合相似程度的仿真实验,传统的仿真理论与仿真方法难以适应,只有发展新型的仿真技术才能提高仿真效率,改善仿真环境。\n9.4一体化仿真技术一体化仿真技术起源于80年代中期,由于当时仿真应用在广度及深度方面已达到一个相当的地步;已有的各种仿真软件常常不能方便而协调地支持仿真研究的全过程;而且不同的用户或者不同的仿真任务对仿真环境均有不同的要求。此外更重要的是仿真工程师已经意识到,仿真不是单纯的对模型的实验,而是应当包括从建模到实验再到结果分析的全过程。换言之,仿真软件不再只是由仿真程序组成的简单系统,而是定义了一个建模﹑分析和设计全过程仿真的环境。在这个环境中,嵌入了一个仿真运行系统。特别重要的是,这个环境支持仿真研究的全过程,包括模型描述﹑实验框架描述﹑实验运行﹑统计分析﹑输出报告﹑图形显示,以及对与各种仿真关联的资源(如:模型﹑参数集﹑实验框架﹑算法和实验结果)的存储和管理。\n9.4一体化仿真技术一体化仿真环境的定义是:一体化仿真环境是一个软件工具的集合,它包括设计﹑编制及检验模型;编写及证实仿真程序;准备模型输入数据;分析模型输出数据;设计及执行模型实验大纲。由此也可以认为,所谓一体化仿真环境就是将若干个具有不同功能的软件集成为一个包含有多种功能的软件系统,使仿真模型能根据仿真任务的需求进行分解和拼合,并能对仿真资源一体化在集成的程度上可以不同。比如:可以仅仅实现功能上的一体化,或仅仅实现资源管理上的一体化(线集成);也可以实现功能与资源,或功能与模型的一体化(面集成);还可以对功能﹑模型处理及资源管理全面实现一体化(体集成),如图9.4.1所示。\n9.4一体化仿真技术图9.4.1一体化仿真模型显见,这样的一体化仿软件必须以工程数据库为核心,使操作系统﹑编译系统﹑仿真语言﹑数据库管理系统﹑统计分析和图形生成软件形成一个整体。基本的一体化仿真环境如图9.4.2所示,各部分的主要功能如下所述。\n9.4一体化仿真技术图9.4.2一体化仿真环境\n9.4一体化仿真技术一、一体化语言一体化语言部分的模块主要由一体化语言命令集和一体化语言预编译器所组成。命令集解释系统并接受用户的命令,对该命令进行语法检查。若命令合法,则调用完成该命令的有关模块,将接收到的参数传给相应的模块,并完成命令所要求完成的功能。若命令不合法,则打印错误信息,并能给出正确的语法格式。一体化语言预编译器则是处理用户命令,并将命令翻译成仿真语言的格式写入仿真语言程序。仿真工程师按一体化语言格式写成仿真程序。预编译器的功能就是读取用户仿真程序,区别程序语句和命令语句,并完成命令语句功能。在一体化仿真语言的支持下,用户可以用简练的命令集构成的仿真程序,完成从建模﹑运行到优化和结果分析一系列复杂的仿真过程。\n9.4一体化仿真技术二数据库管理系统数据库管理系统用关系数据库RDB实现,常用的有ORACLE,FOXPRO,DBASE等关系数据库语言。各种仿真关联资源:模型﹑参数集﹑实验框架和实验数据等都存储在这里。数据库管理系统通过对这些资源的存储和管理,以实现不同的仿真目的。数据库管理系统的存在是一体化仿真环境与传统仿真工具之间最大差别的原因之一,也正是由于数据库管理系统能够在仿真全过程中对仿真资源实行同一管理,因此也有学者认为:一体化仿真环境是以仿真数据库为核心的软件系统。\n9.4一体化仿真技术三、实验运行系统实验运行系统包括辨识﹑仿真﹑优化和分析等支撑服务软件,其主要功能应包括:辨识软件的主要功能是根据用户要求和实验数据完成仿真模型的建立,参数辨识和模型验证,采用的算法有最小二乘法﹑极大似然法和随机寻优法等。仿真部分应包括各种数值积分算法,如亚当斯多步法﹑龙格-库塔法,以及解刚性系统的雷纳尔法,半隐式龙格库塔法等。优化包括参数寻优和函数寻优等功能,以实现系统参数优化和控制设计,其算法应包括梯度法﹑单纯形法﹑随机搜索寻优等方法。分析软件至少应有数据输出和存放,图形和曲线生成功能,对于较强的软件还应有对仿真结果的统计﹑分析﹑列表等功能,甚至能达到将仿真实验阶段的分析结果反馈到建模阶段,以实现闭环仿真。\n9.4一体化仿真技术目前一体化仿真软件的实现,公认最好的是由美国学者研制成的TESS(TheExtendedSimulationSystem)。TESS由七部分构成:TESS语言;数据库管理系统;图形产生器;形式处理器;图形网络建立器;FORTRAN子程序库;与仿真语言的接口。\n9.4一体化仿真技术整个系统以一个关系数据库为核心,通过TESS语言关系,存储﹑检查数据库的数据,如图9.4.3所示。关系数据库管理的数据包括:描述模型的数据﹑仿真模型的输入数据﹑仿真实验结果﹑输入/输出显示的参数。用户使用TESS可以做到建模﹑仿真﹑分析结果处理的一体化以及数据和参数格式的标准化。图9.4.3\n9.5人工智能与仿真技术9.5.1概述在过去的几十年时间里,作为研究智能本质,并试图建立实用系统的人工智能学科,在知识获取﹑知识表示﹑问题解答﹑定理证明﹑程序自动设计﹑自然语言理解﹑计算机视觉﹑多媒体技术﹑机器人学﹑机器学习和专家系统等方面,已取得了令人鼓舞的成果与广泛的应用。各种用途的专家系统正在不断涌现,相应地理论和关键技术也已取得突破,并日益发展和完善。由于人工智能(AI)不仅在人类探索智能本质方面具有重大的科学价值,而且在帮助人们解决某些专门领域中的问题时具有重大的经济价值,因此,众多的学科和技术正在不断地受着人工智能的影响。将人工智能﹑专家系统嵌入到仿真环境是减少仿真中的人力消耗,提高仿真自动化程度和仿真精度,拓宽一体化仿真规模的不可缺少的技术,也是仿真技术本身变革的外在动力之一。仿真工程师们普遍关注人工智能﹑专家系统学科的发展,并期望引入人工智能技术增强系统仿真﹑建模的能力,其主要表现在:\n9.5.1概述引入知识表达及处理技术以扩大仿真模型的知识描述能力;在建模﹑仿真实验设计和仿真结果分析等阶段中,引入专家知识﹑自动推理和解释机制,以辅助领域工程师做各种决策;辅助模型的修正和维护;实现友好的人机界面(可视化技术﹑自然语言理解﹑多媒体技术);建立智能化数据库以及辅助数据的管理维护。AI技术在仿真中的应用,最近几年已有相当的发展,许多理论问题和技术难点已获得突破。随着计算机软﹑硬件的发展,具有智能化的仿真环境已成功地应用于许多领域。限于篇幅,在此仅介绍人工智能在仿真技术中的应用,以及讨论某些相关的问题,而不去研究具有智能化仿真环境在具体领域中的应用问题。有兴趣的读者可以参看相关的文献。\n9.5.2人工智能在仿真技术中的主要应用图9.5.1是目前经常用来描述人工智能与仿真技术在学科上的交叉图,它涉及仿真领域的各方面,在此仅讨论几个主要方面。图9.5.1\n9.5.2人工智能在仿真技术中的主要应用一知识库用于系统的建模与模型验证人类的科学知识从低级﹑特殊到高级﹑一般有层次地积累起来,用脑力来完成这些与科学理论构造有关的知识的组织过程是困难的,这需要付出巨大的代价。对物理系统的建模就属于这样的工作,它不仅需要一定的数学﹑物理等知识,而且需要相当的实际经验,即领域知识,才能做好工作。但利用计算机适当地组织来自世界系统的信息,不仅对人机紧密结合的发展有所帮助,而且对建立一个能彻底支持建模活动的信息库起了极大的作用。在这样一个建模活动中,知识库扮演着一个重要的角色。知识库用于建模与模型验证的基本课题是:在仿真研究的各个不同阶段上借助专家知识库辅助仿真工程师对仿真模型的建立﹑验证和综合进行咨询服务和决策。其主要应用项目是建模顾问专家系统。它用在建模过程中应用模型库选择模型元素并合成适当的模型,其中心问题是能够根据人类的经验用规范的形式来综合描述物理过程。\n9.5.2人工智能在仿真技术中的主要应用二、仿真技术与人工智能技术的结合在仿真与AI结合方面,一个重要的领域是AI对于大系统的计算机仿真,特别是用于决策系统的仿真。这时,要在一个信息不充分﹑不确定,甚至不正确的情况下去进行计划﹑调度和做出各种方案的假设。在这类系统的仿真研究中,AI技术是十分适用的。由于这类系统的某些子过程主要表现为启发式或符号运算式,因此用一个专家系统来建模是很合适的。对于另一些子过程,它们具有确定的和连续的性质(如物理过程),因此可以按照一般动态系统建模方法来建模。另一方面,仿真可用于评估一个知识系统。知识库系统的一个重要应用是控制生产过程,类似人在控制过程中所起的分析和支持作用。为了测试这样一个智能控制系统,有必要建立系统仿真模型。\n9.5.2人工智能在仿真技术中的主要应用若将仿真技术与最优化技术有机地结合起来,就可实现自寻最佳的结果。实现这种智能化仿真系统所存在的主要问题是在目标的合适形式﹑算法及硬件能力等方面。目前的仿真基本上都是属于开环仿真,领域工程师要花大量的时间和代价去面对一大堆表示仿真结果的数据和图表,在仿真环境中引入知识和专家系统可用于仿真实验结果的分析和决策,并将结果反馈到建模型阶段,再根据仿真结果和专家决策对仿真模型做综合分析。\n9.5.2人工智能在仿真技术中的主要应用三、仿真模型中知识的表达在经典的建模与仿真方法中,主要存在的问题是:表达式模型结构的灵活性;扩展程序设计的能力;面向批处理的建模等。解决这些问题的方法之一,是采用AI的知识表达系统去表达仿真模型中的知识(知识库仿真)。具体而言,首先是要建立面向对象的仿真语言。这里的知识包括下述一些内容。系统中关于每个实体的不同事实;实体与实体之间关系的知识;实体与系统特性之间关系的知识。此外,还包括作用在系统上的外部影响关系的表达。总的特性诸如:模型在建立与改变过程中的交互性(知识表达具有灵活性和扩展性);在建立模型过程中较少的程序设计工作量;相容性和完整性检查。\n9.5.3仿真专家系统仿真专家系统是一个基于知识库及推理机制的仿真软件系统。它具有下述与常规仿真系统不同的特点:具有建模专家系统;在AI基础上建立数据库﹑知识库及控制结构;数据库中除数值数据外,还有大量的符号数据,它们用来描述有关事实﹑判断﹑规则及经验的知识;仿真模型包括:数值/符号处理;算法/模式搜索,集成信息和控制/命令结构分离;具有智能化前端。系统仿真的目的,就是用模型来产生用以拟合实际系统的行为数据的数据。在建模方法学中,有演绎建模法,也有归纳建模法。演绎法是人们把建模方法的经验总结出来提供给计算机系统,作为以后建模的依据。归纳法则是借助计算机系统去分析数据﹑抽取特征﹑归纳概括成有指导意义的规则。\n9.5.3仿真专家系统不管哪种方法,要实现建模过程的自动化,都必须有一个完备的专家系统支持。特别对于非工程系统的研究领域,更需要一个庞大的仿真ES的支持。这是因为,在这些领域里,没有完善的公式,甚至很多问题不能用公式表达而只有对问题的非形式化描述,仿真系统应该能适应这种描述,理解其意义,并根据它来建立模型。例如,对排队系统的仿真,就应该有关于排队系统的基本常识和描述,这些描述很类似于人们日常的会话语言,而不是一串代数方程或FORTRAN代码。因此,计算机如何适应人的这种思维习惯(即模型的非形式化描述),就成了仿真建模的一个重要问题。\n9.5.3仿真专家系统计算机的功能应尽可能适应用户描述仿真问题的习惯,尽可能适应系统仿真本质的要求,作为人类认识世界和改造世界的有力工具。为此,必须建立对计算机的高一级控制功能,给计算机赋予一个“被仿真”系统的“世界观”,让计算机能理解用户描述的问题,并把这种模型转变为其内部的仿真计算机模型,以用户熟悉和易于理解的形式输出仿真结果。这样一个方便的人机友好的智能化仿真环境,能够让用户以更多的精力去了解客观世界的本身,而不陷于具体的仿真实现上。由此可见,这种达到智能化仿真水平的系统是很有意义的。\n9.5.3仿真专家系统目前,从事仿真技术的人们正在把更多的注意力转移到社会﹑经济﹑环境﹑生态等对象和系统上。计算机仿真越来越多地用于这类非工程系统的研究﹑预测和决策。由于非工程系统多数是复杂的大系统,具有“黑盒”的性质,故人们对系统的结构往往很难了解,只能根据其表现出来的行为实现建模和仿真。人们往往是根据观测的数据和经验来描述这些行为的,因此采用自然语言的交互形式,并且借助专家系统进行辅助分析,这对于建模和仿真是很有利的。所借助的专家系统应具有交互式的人机接口和用户存取知识库。此外,还应具有一定的逻辑推理能力,这样就可使计算机从单纯的数据处理变为有一定智能的推理机。\n9.5.3仿真专家系统现在已开发出一些能实际应用的仿真专家系统。仿真研究涉及许多方面的专家知识。一个计算机仿真过程包括:建立模型;分析解的存在性;选择仿真语言;编写仿真程序;实现仿真分析和优化等。在建模和辨识方面,需要统计学知识;在仿真方面,需要数值分析和概率论的知识。在这些方面,可建立相应的知识库和推理系统,从而给仿真研究提供一个决策咨询系统—仿真专家系统,用以实现仿真研究的自动化。\n9.5.3仿真专家系统例如,1984年法国INRIA的C·戈梅斯(C.Gomez)发表的关于随机控制系统建模﹑仿真和优化的专家系统就是一种很有意义的探索。系统采用半自然语言对求解问题进行描述,然后自动地实现以下功能:选择和产生数学模型;进行理论分析;选择仿真算法;生成FORTRAN程序;编写和编辑报告。这个用于辅助建模型﹑仿真和优化的专家系统,采用LISP语言编写程序,并将程序嵌入MACSYMA系统中。另一个例子是由美国NASA开发的仿真专家系统NESS,它能辅助用户对动态系统进行数学仿真,并能对仿真结果进行解释和说明。如果输出不满足性能要求,则NESS可自动加入一个合适的补偿器。NESS由两个子系统构成:专家子系统及数值计算子系统。系统中的知识采用框架结构来描述。\n9.5.4智能化仿真的研究与探索随着人工智能技术的发展与完善,人们设想了第五代智能化建模与仿真环境。它将把面向建模与仿真方法学的知识或面向某种应用领域的知识装入环境,构成各种专家系统;将机器学习能力及面向目标的知识处理能力引入环境;将自然语言﹑图形及视像技术等用于人/机智能接口,从而构成高度智能化的面向用户﹑面向问题﹑面向实验的建模与仿真环境。它将使经典的仿真系统转变成新一代的专家仿真系统。自80年代中期以来,人们已在专家系统及智能接口方面做了大量的探索工作,包括①智能前端型﹑咨询式系统型﹑紧密结合型等各种建立系统数学模型的专家系统,用以辅助确定模型框架﹑结构特征化﹑参数估计﹑模型评价与检验﹑原系统实验设计等;②仿真模型建立及检验的专家系统;③仿真算法选择专家系统;④输出分析专家系统;⑤建模/仿真全过程专家系统;⑥智能接口(自然语言交与及动画视觉交与)。必须指出,国内学者也在这方面开展了不少工作。限于篇幅,在此不予赘述。\n9.5.4智能化仿真的研究与探索新的研究课题有:1.自然语言﹑语音识别﹑视像系统﹑图形技术在环境中的应用;2.新的建模﹑仿真方法学;3.各种仿真专家系统;4.仿真信息/知识库管理系统;5.将机器学习能力引进环境;6.扩展环境功能以适应智能系统模型的建立与仿真;7.适合环境中各类用户软件的开发环境与工具;8.认识仿真过程中质量的保证问题。可以预见,随着计算机﹑软件工程﹑人工智能﹑控制论﹑系统论﹑建模/仿真技术的发展,新一代智能化建模与仿真环境终将成为现实。\n9.6数学模型和建模方法学在众多的仿真文献中,对仿真的定义是基于同一观点:为了分析与研究已经存在的或尚未建成的系统,首先应该建立系统的数学模型,并将其安装在计算机上进行实验,这一过程就称为仿真。显见“模型”和“实验”是仿真的两个重点。但传统的仿真着重于“实验”和“实验方法”研究。近年来,随着一体化仿真技术的提出和发展,人们认识到仿真应该是“建模-实验-分析-建模”这样一个循环体系。限于篇幅,在此重点介绍数学模型的作用﹑性质和建模方法的一般性原理,而关于模型结构辨识和参数估计的具体算法,则是属于系统辨识的范畴。\n9.6.1数学模型的作用和目标数学模型,无论是在纯科学领域还是在实际工程领域都有着广泛的应用。首先,数学模型可以帮助人们不断加深对客观世界的认识,并且启发人们去进行可以获得满意结果的实验。另一方面数学模型有助于提高人们的决策和对客观世界的干预能力。针对这两个目标,又提出三级重要的标准,如图9.6.1所示。图9.6.1数学模型的作用\n9.6.1数学模型的作用和目标从提高认识能力这个方面考虑,为了提高对通信﹑思考﹑理解三个层次的认识,加强这种影响作用,应做到:首先,一个数学描述应提供一个准确的﹑易于理解的模式,即在信息传递时,这种描述模式可以减少引起误解的几率。其次,在研究系统的各种不同问题或考虑各种选择时,需要一个相当规模的辅助思考过程。最后,一旦模型被综合成为一组公理和定律时,这样的模型将会使研究者更好地认识客观世界的现象。同样,为了加强决策能力,也分化出三个不同的层次,管理﹑控制和设计。管理是一种十分有限的干预方式,通过管理这种方式可以确定目标和决定行动的大致过程。但是这些策略无法制定得十分详细,其具体实施必须委托给下一个层次,并在下一个层次被翻译和理解。因此,在意图与实现两者之间的联系就变得模糊不清,在控制这一层,动作与策略之间的关系是确定的。但由于在控制层中动作仅限于在某个固定范围内选择,所以仍然限制了干预的范围。与此相反,在实施决策的设计层,设计者能在较大程度上进行选择,扩大或替换部分真实系统,以满足设计者的要求。相对其他两层而言,实现一种设计所花费的代价更高,而且也不常进行。但是控制和管理这两层是一种连续的“在线”活动。\n9.6.1数学模型的作用和目标根据这种目标观点,现实世界的物理系统按两种观点可分别分为两部分。即,按第一种观点,物理系统由能观测和不能观测两部分组成;按第二种观点看,物理系统是由能控制和不能控制两部分组成。能观测部分对应于系统中所有能被辨识﹑理解﹑观测的部分;而能控制部分对应于系统中那些可用某种方法加以修改﹑转换﹑影响的部分。余下的部分对应不能观测和不能控制的部分,在一个实际的物理系统中它们占的比例往往很大。而一个真实的物理系统这种分解不是唯一的,它依赖于工程师的理解力﹑对待事物的看法和客观条件。当然,观测和控制相应地限制在系统的能观测和能控制部分。由于不能观测和不能控制部分的存在,因此,对实际系统的观测和控制的结果将是不确定的。而对系统认识得越深入,则对于观测得理解和控制成功的把握性也就越大。\n9.6.1数学模型的作用和目标到现在为止,已清楚地看出建模工作有两个目的,一个数学描述具有目标上的二元性这一事实具有特殊的意义。虽然在一个给定的环境中,建模可能是为了加深对系统的认识程度,但同时也必将在同一水平上提供对系统控制的可能。换句话说,为了控制而建立的模型将有助于对系统的认识,而为了提高认识所建立的模型也有助于提高对系统控制的精度。建模的这种关系的主要优点是能将互不关联的关系结合成一个整体,否则这些关系之间的隐含点将难以刻画。这一点对于预测现在已经掌握的数据以外的数据有着特殊的意义和用途。虽然数学建模可为许多目的服务,但是,如果认为一个特殊的描述对所有目标都适用,那将是十分愚蠢和可笑的。对于这一点,过去一直没有很好地加以强调。这种情况在定量分析过于繁琐,数学上的严格性过于精确时可能发生。尤其是对于建模新手,更应注意。在实践中,建模的目的应该用较为准确的和具体的形式描述。而建模目的对于建模过程和建模效果有着很大的影响,随着建模工程师对建模认识的深入,这一点将表现得更为明显。\n9.6.2数学模型的性质和假设在第一章中,已从功能的角度研究了系统的概念。这一部分将从建模的角度研究系统及其数学模型。为此还是先研究系统的概念。一、系统目前,人们把真实世界的一部分理解为系统,并将它定义为几个相互作用的分系统的合成体。从这个定义中,可以看出系统的“递归”性。即一个系统将是若干分系统的合成,而分系统中的每一个又依次是另一些系统的合成体。由此而带来下面的系统“可分性”。由上述定义的结果看出,一个系统可以是一个大系统的组成部分。因此任何一个系统均需提供一个界面,通过它可以和其他系统相互作用。界面代表了有可能发生在系统边缘的潜在事件。在边缘处发生的事件,一方面取决于处于边缘内部的系统,另一方面则取决于边缘外的环境。系统的这个特点约束了系统对界面的作用,这个约束就是所谓系统内部结构。正是这个内部结构,必须允许在希望停止分解时能停止抽象的描述过程,或者在希望继续分解时能进一步具体化。\n9.6.2数学模型的性质和假设为了精确地使内部结构具体化,必须具有将互相分离的约束因素结合起来重新构造的能力。这里所指的约束是指组成系统的所有各部分的内部结构在它们相互界面上的约束,若上述重构对于某个分解是可行的,则系统将服从这个分解。二、抽象模型和真实世界的过程之间最重要的关系之一是抽象,它是建模过程的基础。例如在研究物体的运动轨迹时,经过抽象可以将物体仅仅处理成一定质量的点。在数学上,集合的概念是建立在抽象的基础上的。共同的基础使集合论对于建模过程非常有用。通常,数学模型可看成是由一个集合构造的。\n9.6.2数学模型的性质和假设在建立一个数学模型时,需要建立几个抽象概念,即定义几个集合:输入﹑输出和系统状态变量。进一步,在这些抽象的基础上,可建立复合的集合结构,特别是要定义的函数关系,经常称这个过程为理论建模。在此应特别提醒读者注意的是,基于面向对象的系统分析和设计方法,在现代建模理论中越来越引起工程师们的注意。再从模型到现实世界过程这方面看,这些集合最终要应用到实际物理系统中。因此,抽象必须和真实目标相联系。由此可提出建模中的一个基本公理:存在一个十分复杂的抽象模型,它可以详细而精确地描述真实地物理系统。根据这个公理,可不断地把细节增加到原抽象中去,以达到抽象与真实目标更接近的目的。这个过程成为具体化,也就是使抽象不断地变得具体。\n9.6.2数学模型的性质和假设在建模方法学中,还有一个基本假设:对于被研究的物理系统,当它们用于某种特殊目的时,对于研究过程和建模的目标,至少是“部分可理解”的。可分解的系统允许从系统中取出任何一部分,而不影响其他部分。在现代科学中,往往假定每一个特定领域都是高度可分解的。例如,对大多数的航行器运动,均可在一定范围内将三维运动分解为水平和垂直运动。所以“部分可分解”的系统有着明显的工程实际意义。\n9.6.2数学模型的性质和假设三、建模的公式化利用一个通用的公式可将一个物理系统定义为下面的集合结构:S(t,x,w,q,y,δ,λ,ε)式中t-时间集x-输入集w-输入段集q-内部状态集y-输出集δ-状态转移函数λ-输出函数ε-系统不确定性。根据上面提出的形式化的定义,可以给出关于系统行为的概念。一个系统的行为是其内部结构的外部表现形式。即在叉积(x,t)×(y,t)上的关系。这个关系可做如下计算:对于每一个状态q∈Q和Q中的输入段w:{t0,t1}→x,存在一个相关联的状态轨迹:STRAJq,w{t0,t1}→Q使得STRAJq,w(t0)=q和对于t∈{t0,t1}有STRAJq,w(t)=δ(q,wt)\n9.6.2数学模型的性质和假设上述的状态轨迹是一个可检测的结果,或者可在计算机仿真过程中被计算出来。这个轨迹的可观测投影是和q∈Q,w∈Q相关的输出轨迹OTRAJqw{t0,t1}→Y例如,使用简单的输出函数形式λ(q),则存在OTRAJqw(t)=λ(STRAJq,w(t))|这时,系统的行为就可通过输入-输出关系表现出来:Rs={(ω,ρ|ω∈Q,ρ=OTRAJqw,Q对于某一个q∈Q)我们称每一个(ω,ρ)∈Rs的元素为输入-输出段对,并用它来表示一个有关系统的实验结果或观测结果。在该系统中,ω是对系统的输入,ρ是观测到的输出。由于一个系统在初始时可能处于任意一个状态,因此对于同一个输入段ω可对应多个输出段。\n9.6.2数学模型的性质和假设四、描述水平可以将一个实际过程看做一个系统,它能在某种水平上被分解。描述在某种所需要的水平上被分解的系统,可用一种数学上的程序,它对建模研究很有好处,特别是在可信性分析方面。图9.6.2给出了系统描述的某些水平。abc图9.6.2系统的描述水平(a)在行为水平上的系统(b)在状态结构水平上的系统(c)在分解结构水平上的系统\n9.6.2数学模型的性质和假设(1)行为水平。人们在这个水平上描述系统,是将它看成一个黑盒,并且对它施加一个输入信号,然后对它的输出信号进行测量与记录。为此,至少需要两个“时间基”,它一般是一个实数的区间(连续时间)或者是一个整数的区间(离散时间)。一个基本描述单位是“轨迹”,它是从一个时间基的区间到表示可能的观测结果的某个集合上的映射。一个“行为描述”是由这样一组轨迹的集合所组成的,这种描述也可成为系统的“行为”。通常,在仿真概念上,加到黑盒上的某个变量被看做是输入,它不受盒子本身的控制;而另一个是输出,它指向表示系统边界以外的环境。因为对实际过程的实验是处于行为水平上,所以这个水平是十分重要的。在这个水平上的描述比起下面所要介绍的结构描述要简单一些。\n9.6.2数学模型的性质和假设(2)状态结构水平。人们在这个水平上描述系统是将它看成一个了解内部工作情况的机构。这样一种描述通过在整个时间上的递推中,产生一种轨迹,也即一个行为。能产生这种递推的基本单位是“状态集”以及“状态转移函数”,前者表示在任意时刻所有可能的结果,而后者则提供从当前给定状态计算未来状态的规则。另外,正如已经看到的,为了映射状态集,需要一个输出函数,对能观测的输出集合来讲,这些状态集不一定能直接观测。在状态结构水平上的描述比以前表示的行为水平更具有典型性。(3)分解结构水平。人们在这个水平上描述系统,是将它看做由许多基本的黑盒互相连接起来而构成的一个整体。这种描述也可称为网络描述,其中的基本黑盒称为成分,它给出了一个系统在状态结构水平上的描述。另外,每个成分必须表明“输入变量”和“输出变\n9.6.2数学模型的性质和假设量”,还必须给出一种“耦合描述”。它确定了这些成分之间的内部连接及输入与输出变量之间的界面。人们可以进一步分解系统,从而获得更高一层的描述。涉及上述不同描述的一个基本规则是,如果给定一个在某种水平上的系统描述,那么人们至少可联想到一个比它低的水平上的描述。因此一个明确的分解结构描述具有唯一的一个状态结构描述(比如,它的状态集可通过对每个个别的成分的状态集施行某种集合运算而获得);而状态结构描述本身又只有唯一的一个行为描述。在这种情况下,一个系统或相同的系统都能看做具有一个网络结构﹑一个状态结构和一个行为结构。\n9.6.3建模方法学下面分三个方面讨论建模的基本方法,以便能用更加系统更加严格的方法完成建模任务。一、建模过程的信息源模型的描述,可看做是对于真实世界中的物体或与此有关的信息进行加工处理的结果。因此,为了很好地了解建立数学模型的途径,研究建模活动的“信息源”是有益的。可以认为:建模活动本身是一个持续的﹑永无止境的活动集合。然而,由于以下事实产生了一些限制:即在一个给定的时间点,建模过程采取一个“建模计划”的形式,在开销与时间的限制条件下,科学工作在进行时要考虑一组研究对象﹑资金与人力等。因此,在系统设计时,分析者将利用他们的技能及时“沟通”不同资源的信息技术,直到获得一个满意的结果。图9.6.3所示是数学建模信息源的一个图解表示。\n9.6.3建模方法学图9.6.3数学建模的信息\n9.6.3建模方法学有三类主要的信息源:(1)目标和目的。一个数学模型事实上是一个真实过程所给出的一个非常有限的映像。同一个实际系统可以有很多个研究对象,这些研究对象将规定建模过程的方向。通过将现实分成被作用部分和作用部分(用输入变量或边界条件来表示),可有助于确定作为系统边界的一些因素,另外一些因素是相关的各个成分以及一些更细致的东西。(2)先验知识。在建模工作初始阶段,所研究的过程常常是前人已经研究过的。通常,随着时间的进展,关于“一类现象”的知识已经被集合﹑被统一成一个科学分支,在这个分支中已经发现了许多定理﹑原理及模型。牛顿说过:“假如我看得远,那是因为我站在巨人的肩上”,这句话意味着,由于我们站在达·芬奇﹑伽利略﹑牛顿﹑高斯和爱因斯坦这些巨人的肩膀上,所以获得了现有的进展。\n9.6.3建模方法学这个观点同样可以应用于建模过程,它也是从以往的知识源出发而进行开发的。一个人的研究结果可以成为另一些人为解决这个问题而进行研究的起点。除科学实验外,相同的或相关的过程可能已经被建模者为了类似的目的而进行过分析。在一些更加精密的环境下,建模者可能已从类似的实际系统的实验中获得了某些似乎合理的“信念”。所有这些都用先验知识这样一个信息源来表示。(3)实验数据。在进行建模时,关于过程的信息也能通过对现象的实验与测量而获得。合适的定量观测是解决建模的另一个途径。建模所需要的数据信息量,来自对真实系统的实验,或来自一个仿真器上模型的实验。数据中信息量的大小,对建模结果有着直接的影响,故应仔细安排建模前的实验。建模的方案取决于信息来源的利用,同时也取决于信息的结构。\n9.6.3建模方法学二、建模途径在为实现某种目的而构造一个模型的过程中,建模技术就在于成功地运用上述信息源。大量实践表明:对于信息源的运用,使得建模过程具有一定的自由度。(1)演绎法。演绎法建模倾向于运用先验信息。假定在理论上有些不足,那么就要求某些假设和原理,然后通过数学逻辑的演绎来建立模型。事实上这是从一般到特殊,并且将模型看做是从一组前提下经过演绎而得出的结果。此时,实验数据只被用来进一步证实或否定原始的原理。演绎法有它的存在性问题,一组完整的公理将推导出一个唯一的模型。前提的选择可能成为一个有争议的问题。演绎法面临着一个基本问题,即实质不同的一组公理可能引出一组非常类似的模型。爱因斯坦曾经遇到过这个问题。牛顿定理与相对论是有区别的,然而,对于当前大多数实验条件来讲,两者将会产生极其类似的结果。\n9.6.3建模方法学(2)归纳法。归纳法建模是从被观测到的行为出发的,并试图推导出一个与观测结果相一致的更高一级的知识,因此是一个从特殊到一般的过程。归纳法是从系统描述分类中最低一级水平开始的,并试图去推断较高水平的信息。一般来讲,这样的选择不是唯一的。这个问题可以用另一个观点来表述。有效的数据集合经常是有限的,而且常常是不充分的。事实上,当模型所给出的数据在模型结构方面并不是有效时,任何一种表示都是一种对数据的外推。人们争论的问题是:如何附加最少量的信息就能完成这种外推。这个准则虽然是有效的,但是一些特殊问题却很难运用,因为它没有告诉我们如何去获得这些最少量,以及什么时候去获得它们。\n9.6.3建模方法学(3)目标法。目标法建模采用的是工程观点而且着眼于建模的目的。该方法认为模型即意味着通向一个终点,程序将直接面向建模的特定目标。在建模时,将研究对象作为一种角色引进来并非易事。另一个欠缺是由于目标可能十分特殊,以至于所获得的模型非常局限,甚至变得毫无价值。单纯采用上述这些途径都很难获得有效的结果,所以通常是混合采用之。至于怎样才算是一个“好”的混合是一关键问题。由于要获得一个满意模型的道路并不是笔直的,特别是建模阶段,它会受模型建立者的主观意志的影响,所以建立的模型必须进行反复检验,以确保其可信性。所谓可信性检验就是对数学描述的真实程度的研究。\n9.6.3建模方法学三、建模过程建模过程的一个总的描述可用图9.6.4表示。不选择一个确定的模型公式,就不可能提供建模的更为特殊的技术。根据不同的公式,建模的特殊技术在系统辨识理论中有详细的论述。在此要特别向读者指出的是:要获得一个作为整体的系统集合结构是困难的,大多数建模程序都是针对系统的某一部分。而该部分的层次如何确定,则要根据研究目的的必要性﹑处理方法的可能性等因素综合考虑。图9.6.4建模过程总框图\n9.6.4结论面对真实世界,人们可以选择某些数学工具来研究它们,重要的是试图去揭示这些研究的本质以及所需的基本假设,这些是获得一个数学描述的有效方法。一种哲学观点可以用来指导建模,但是在这里我们希望给予读者的是指导建模过程的基本问题与基本原则,即为构造一个数学描述,工程师们要做些什么?这个描述在逻辑基础上能否被接受?描述对研究目的是否有必要性?这些课题在某些情况不是极其重要的,但过去对它们研究甚少,所有这些课题都是值得有志于该方面研究的人去进一步探讨的。值得注意的是,还应对另一条有希望的建模途径给以足够的重视,即采用以计算机为基础的通用建模方法。充分利用计算机的逻辑推理﹑信息存储﹑高速运算,以及友好的人机界面,才能对系统建模过程进行得更加有效﹑现实和高速。\n9.7仿真实验的计划指定和实施所谓仿真应用技术就是利用仿真技术研究实际问题的方法。由仿真技术的基本概念可以看出,对一个实际系统进行仿真一般可分为两个阶段:问题的阐述和计划制定;仿真程序的设计和仿真实验实施。其中仿真实验实施如图9.7.1所示。由图中可以看出,仿真的各个阶段均具有明确任务的内涵,但各个阶段又是相互联系的。因此,仿真实验是一个循序渐进﹑反复迭代的研究过程,尤其是对一些复杂系统的仿真,本身就是一个系统工程。只有对整个仿真研究工作进行科学而周密的组织与设计,并采用有效的技术路线,才能最大限度地避免工作中的盲目性,减少仿真研究费用,缩短仿真实验周期。对于从事于仿真实际应用的工程技术人员,掌握必要的仿真应用技术和仿真研究的组织方法是非常必要的。但需要指出的是,在实际应用中,所遇到的问题可能更复杂﹑更具体,其难度更高,而这正是需要读者在今后的实际工作中不断探索﹑不断总结,以充实在所研究领域中的仿真技术的知识。\n9.7仿真实验的计划指定和实施图9.7.1系统仿真的内容和步骤\n9.7.1问题的阐述和计划的制定在开展系统的仿真工作之前,必须对所研究的系统做详细的调查和了解,明确所要研究的问题和研究的目标,以及描述这些目标的主要参数和衡量标准。同时要清晰地定义所研究系统的范围和边界。但需注意,该范围和边界一定要定义得恰当,不能希望什么问题都一次解决,但也应避免问题的过分细化。一般连续系统仿真所需研究的问题可概括为以下几个内容:方案论证:对设计方案进行论证,或对系统进行鉴定论证。系统分析:对已存在系统进行研究,或对系统故障进行仿真分析。辅助建立系统模型,选择合理的结构,优化设计参数。半实物实验:将系统的某一子部分接入计算机仿真系统,检验实际设计﹑加工效果。\n9.7.1问题的阐述和计划的制定上述问题通常由领域工程师提出,但由于他们对仿真技术不熟悉,不能合理地提出利用仿真技术所要解决的问题。因此仿真研究者,即知识工程师在这一阶段应和领域工程师紧密配合,共同研究,以便能提出清晰﹑正确的研究内容和目标,并形成书面文件。对于某些简单的问题,领域工程师和知识工程师可能同为一人,在这种情况下问题最容易解决。此外,还应明确:用户对仿真精度的要求,即模型精度,计算精度,仿真速度等。在确定系统边界的基础上,应规定仿真的初始条件,以及对系统状态的影响。估计仿真研究所需费用,以及用户是否能够承受。制定仿真研究周期与计划。确定仿真研究结果的内容与形式。\n9.7.2仿真实验准备阶段准备阶段包括数学模型的构造和确认,数据的采集,仿真程序的编制和验证等工作。(1)构造仿真模型构造仿真模型具有其本身的特点。首先它是面向问题和过程的构模方式。在连续系统仿真建模中,主要是根据系统内部各个环节之间的因果关系,系统运行的流程,按一定方式建立相应的状态方程或微分方程来实现仿真建模。这些在9.1节中已做过阐述。其次,注意仿真模型与所选用的仿真语言和仿真程序的密切关系。除此之外,建模者还应考虑:将要建立的系统数学模型的形式。数学模型的精度。任何不必要的模型精度,意味着建模及仿真的费用增加﹑周期延长。尽量考虑研究﹑分析问题及建模的方便性。模型要具有易扩展性。\n9.7.2仿真实验准备阶段(2)数据采集为了进行系统仿真,除了必要的仿真输入数据以为,还必须收集与仿真初始条件及系统内部变量有关的数据。这些数据往往是某种概率分布的随机变量的抽样结果,因此需要对真实系统的这些参数,或类似系统的这些参数做必要的统计调查,通过分析拟合﹑参数估计,以及假设检验等步骤,确定这些随机变量的概率密度函数,以便输入仿真模型,实施仿真运行。(3)仿真模型的确认在仿真建模中,所构造的仿真模型能否代表真实系统,这是决定仿真成败的关键。按照统一的标准对仿真模型的代表性进行衡量,这就是仿真模型的确认。然而,由于仿真模型确认和验证的理论与方法目前尚未达到完善的程度,仍有可能出现不同仿真模型都能得到确认的情况。因此改进仿真模型的确认方法使之更趋于定量化,仍然是系统仿真的一项研究课题。\n9.7.2仿真实验准备阶段(4)仿真程序的编制和验证在建立仿真模型之后,就需要按照所选用的仿真语言编制相应的仿真程序,以便在计算机上做仿真程序运行实验。为了使仿真程序进行能够反映仿真模型的运行特征,必须使仿真程序与仿真模型在内部逻辑关系和数学关系方面具有高度的一致性,使仿真程序的运行结果能精确地代表仿真模型应当具有的性能。通常这种一致性由仿真语言在编程和建模的对应性中得到保证。但是,在模型规模较大或内部关系比较复杂时,仍需对模型与程序之间的一致性进行验证。通常均采用程序分块调试和整体程序运行的方法来验证仿真程序的合理性;也可采用对局部模块进行解析计算与仿真结果进行对比的方法来验证仿真程序的正确性。\n9.7.3仿真实验与结果处理这一阶段涉及实验运行﹑结果分析和实验研究报告形成。(1)仿真模型的运行由于每次仿真运行仅是系统运行的一次抽样,多次独立重复的仿真运行才能得到仿真输出响应的分布规律。这种独立的﹑重复的仿真运行,应当是在相同的初始条件和相同的输入数据条件下,采用相互独立的随机数流进行仿真,从而模拟一种独立的抽样过程。在这种情况下才能采用古典的统计方法,由仿真结果对系统的总体性能做出正确的推断。此外,进行系统仿真往往需要根据仿真的目的确定最主要的决策变量,从不同的决策变量取值的组合中,找出一种满意的方案。由于这种变量组合数往往随变量数的增加呈指数增长关系,为了用最少的仿真次数取得最必需的仿真输出数据,在做仿真运行之间还应做仿真实验设计,对决策变量的组合进行设计和安排,以提高仿真运行的效率。\n9.7.3仿真实验与结果处理(2)仿真输出结果的统计分析对仿真模型进行多次独立重复运行可以得到一系列的输出响应和系统性能参数的均值﹑标准偏差﹑最大和最小数值及其它分布参数等。但是,这些参数仅是对所研究的系统做仿真实验的一个样本,要估计系统的总体分布参数及其特征,还需要在仿真输出样本的基础上,进行必要的统计推断。通常,用于对仿真输出进行统计推断的方法有:对均值和方差的点估计;满足一定置信水平的置信区间的估计;仿真输出的相关分析;仿真精度与重复仿真运行次数的关系以及仿真输出响应的方差衰减技术,等等。\n9.7.3仿真实验与结果处理(3)仿真实验研究报告实验结束后,要根据用户的要求对实验记录进行分析整理,形成正式的实验研究报告,它是整个实验研究工作的总结和提高,是最后提交的成果。实验研究报告包括以下几方面:①题目页:研究项目名称﹑项目负责人﹑报告人或研究单位;②报告正文:报告正文包括a.研究目的及要求;b.对研究对象或系统的描述;c.实验研究所采用的数学模型d.实验的具体内容(为达到研究目的做了哪些实验﹑采用了何种实验方法及实验条件);e.分析及建议(对有效实验结果的分析及结论,改进系统的建议)。③附录:包括仿真研究各个阶段的文档,例如,对问题的描述及系统定义的文字资料﹑有效的实验记录(数据与图标)等。总之,应包括所有支持仿真实验研究的资料。\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n