1.7 仿真模型设计
1.7.1 基本概念
由于仿真模型设计与系统、实体、属性、状态、参数等方面的抽象和简化相关,这里仅介绍与模型设计相关的基本概念。
1.系统
系统由若干物理或逻辑上相对独立的单元及其相互关系构成,单元间影响关系的总和称为系统的结构。在计算机仿真中,可以将系统划分为两大类,即工程系统和非工程系统。工程系统是指人类为满足某种需要,利用工业手段构造形成的具有预定功能的系统,例如机械、电气、动力、化工、武器等系统,这种系统一般多为工程、物理型的,它们的机理比较明显,从而能用较明确的数学模型表示出来。
在自然和人类发展过程中自身形成的系统称为非工程系统,例如生物、山脉、河流、社会、经济、军事、管理、交通等系统。非工程系统的机理目前并不清楚,因而很难用数学模型表示出来。许多军事问题,特别是军事指挥和作战问题,其机理和运动规律已超出了物理科学范围,其描述十分困难。上述系统类型的划分是相对的,复杂情况下某些系统可能是两类系统的混合系统。在一定条件下,系统可以分解为若干既相对独立又相互联系的子系统(或称分系统)。
2.实体和对象
仿真研究中,一般将构成系统的物质、能量、信息和组织等有实际意义的物理或逻辑单元统称为实体(Entity)或对象(Object)。例如,弹道导弹飞行控制系统中的实体有弹道导弹弹体、测量单元、计算装置、执行机构等,商品销售系统中的实体有管理部门、管理人员、商品、货币及设备、设施等。实体一般在不同的条件下可能展现不同的行为,而我们也需要根据所研究的问题关注实体在不同方面的行为变化。
3.属性
凡实体总有属性(Attribute)。所谓属性,是对实体所具有的主要特征的描述。例如,在弹道导弹飞行控制系统中,导弹弹体与控制系统有关的属性有导弹的飞行速度、飞行高度、飞行姿态角等,测量单元的属性有测量范围、测量误差等;在商品销售系统中,部门的属性有人员数量、职能范围等,商品的属性有生产日期、销售价格、销售数量、库存数量等。
4.状态和参数
属性可以用参数或状态(State)变量加以描述。在仿真应用中,如果实体的某一属性不会发生明显变化,或者发生的变化具有事先可以预知的规律,且对所研究问题没有本质的影响,那么就可以将其作为固定或时变的参数来考虑;不同的参数设置,代表不同的仿真方案。由于实体自身的运行及实体间的相互作用,实体的某些属性可能会随着时间的变化而持续发生变化,如弹道导弹的飞行速度和飞行高度;实体的其他属性可能在一段时间内保持不变,而因某类事件的发生会在某些时刻点上发生变化,如商品的销售价格和库存数量等,这些属性通常作为状态变量来考虑。实体状态随时间变化而改变的过程称为实体的行为,这里,实体的行为可能表现为其状态随时间的持续变化,也可能表现为其状态随事件的跳跃变化。
5.模型
模型(Model)是对系统特性和规律的描述,用于提供关于系统的有用信息。计算机仿真中的模型,一般用数学、逻辑或其他抽象的方法进行描述,而且最终用计算机语言加以实现;尽管它们并非都具有精确的数学表达形式,但统称为数学模型,以区别于物理模型。模型具有一些基本性质,如相似性(即模型与所对应的系统必须具有相似的特性和规律)、简化性(即模型只是对系统的近似表达)、多样性(即同一系统的模型表示并不一定是唯一的)等。目前,一般语义下的模型泛指数学模型。
根据时间集合的特点,可以将模型分为连续时间模型和离散时间模型。连续时间模型中的时间用实数来表示,即系统的状态可以在任意时间点获得。离散时间模型中的时间用整数来表示,即系统的状态只能在离散的时间点上获得,这里的整数时间只定性地表示时间离散,而不一定是绝对时间。根据状态变量的特点,可以将模型分为连续变化模型和离散变化模型。在连续变化模型中,系统的状态变量是随时间连续变化的。在离散变化模型中,系统状态变量的变化是不连续的,即它只在特定时刻变化,而在两个特定时刻之间保持不变。按照这两种分类方法,各类模型中状态变量的轨迹特征可以用图1.3来综合表述。在图1.3中,第Ⅰ类模型的系统状态随时间连续变化,且在任意时刻皆可获得系统状态变量值,此类系统是纯粹意义上的连续系统,其对应的一般是常微分方程模型和连续时间的偏微分方程模型;第Ⅱ类模型的系统状态随时间连续变化,但只能在离散时间点上获取系统状态变量值,一般称为采样系统,所对应的是离散时间的偏微分方程模型和系统动力学模型;第Ⅲ类模型的系统状态在离散时间点上变化,在其他时间点系统的状态变量值却可以看做是连续不变的,对应的是离散事件系统模型;第Ⅳ类模型的系统状态变化和时间集合都是离散的,对应的是差分方程模型。第Ⅰ、第Ⅱ、第Ⅳ类模型统称连续系统模型。
数学模型具有理论模型(Theoretical Model)和仿真模型(Simulation Model)两种存在形式,一般情况下数学模型泛指前者。理论模型是对所研究系统的理论描述(称为系统的一次建模),仿真模型是在理论模型基础上建立的更易于在计算机上编程实现的模型(称为系统的二次建模)。仿真模型可以直接采用某种通用程序设计语言实现,也可以采用某种基于通用程序设计语言的专用仿真语言加以实现,后者有利于提高仿真建模的能力和效率。模型是否有效,直接影响到仿真结果的可信度和可用性。对于所要解决的问题,在所允许的精度范围内,模型是否正确、有效,必须加以确认和验证,并最终得到权威部门的认定。
图1.3 连续模型与离散模型中状态变量的轨迹特征
1.7.2 仿真模型的开发过程
模型是仿真的核心,为更好地理解模型的本质和开发过程,有必要基于模型的仿真开发过程,从模型设计和抽象的角度分析系统、模型、仿真、试验之间的关系。Zeigler从建模与仿真理论研究上阐述了模型抽象与系统、仿真和试验之间的关系,其关系如图1.4所示。
这里,系统是根据研究目标确定的,满足一定条件的真实世界中的对象,根据研究目标仅通过试验考察其特定的结构与行为。另外,为支持采用仿真方法对系统进行试验,这里针对模型抽象引入了基本模型、试验框架等概念。
(1)基本模型(Base Model)。基本模型是系统中所包含对象、实体属性和行为的一个假设、抽象的表示。该模型描述了所有对象和实体的方方面面,在任何试验条件下其行为都是合理、正确的。基本模型只是一个假设的模型,在实际中我们无法构造这样完善的模型。一个系统对应的基本模型是否存在可以上升到哲学层次进行讨论。
(2)试验框架(Experimental Frame, EF)。当研究真实世界中一个系统时,试验框架描述了试验条件或试验环境,系统和对应的模型都需要这些试验条件进行模型抽象和试验。试验框架反映了对真实系统进行试验和对仿真模型进行虚拟试验的目标。试验框架的基本形式如图1.5所示。一个试验框架由两个变量集合构成:EF输入变量和EF输出变量,它们与系统试验和模型试验的输入/输出一致。在输入变量一侧,Generator描述了对系统或模型的输入激励对象,它可以在仿真运行时产生符合试验框架约束的输入变量;在输出变量一侧,Transducer对象描述了对系统或模型的输出转换对象,它可以在仿真运行时采集符合试验框架约束的输出变量。其中,系统输出可以通过测量获得,而模型输出一般通过观察和采集模型状态变量和参数等内部信息获得。除了输入/输出变量、Generator和Transducer外,试验框架也可能包含一个Acceptor。Acceptor用于比较Generator产生的输入和Transducer产生的输出,确定系统(真实系统或模型)是否符合试验框架确定的试验要求和试验目标。
图1.4 模型抽象与系统、仿真和试验的关系
图1.5 试验框架的基本形式
(3)模型(Model)。模型给出了在试验框架约束下的系统的精确描述。这里精确描述是指在试验框架约束下,模型必须在一定精确范围内反映系统结构和/或行为的相关属性。建模的目标是以可理解和可重用的方式,给出一个有意义的系统描述或表示。
(4)试验(Experimentation)。试验执行了一个物理试验过程。通过影响其输入和参数,一次试验可能会干扰系统的运作,也可能不会影响系统运行。试验环境可以被看做包含被研究系统的一个系统。试验包含了观测,而观测则产生了分析所需要的测量数据。
(5)仿真(Simulation)。模型的仿真主要在一定的模型执行规范和算法约束下(Petri网、微分方程算法、Bond Graph等)完成,并产生相应的仿真结果,一般这些结果体现了一种动态的输入/输出行为。仿真可以使用相关的计算技术,模拟实际系统进行的真实试验,因此可以看做一种虚拟试验。仿真的目标是快速和精确地进行试验。
系统、试验、模型、虚拟试验之间不仅仅是一种过程或参照关系,系统和模型之间还存在一种同态关系,即建立一个真实系统的仿真模型,然后经过仿真试验产生的行为应该与真实系统试验观测的行为一致。图1.6给出了建模仿真与实际系统的映射关系。
图1.6 建模与仿真的映射
(6)验证(Verification)。验证是一个检查仿真程序是否与其模型描述一致的过程。验证与从某种抽象表示(概念模型)到程序代码(仿真模型)的转换和映射相关,从而确保程序代码能完全反映概念模型规范所定义的行为。模型编译工具可以自动完成概念模型到仿真模型的转换,这些编译工具也需要通过各种模型转换进行验证。
(7)确认(Validation)。确认是在试验框架约束下比较真实系统测量结果与仿真结果的过程。如果通过比较发现偏差,说明模型与真实系统不一致。虽然可以通过许多观测的系统数据和仿真结果进行对比分析,但也不一定说明模型就是合理的,因为只要发现一次不能允许的模型和系统偏差就说明模型不是有效的。发现模型不合理之后,可以不断修正和精炼试验框架,并根据调整的试验框架对模型进行修正。
模型确认可以通过不同的方法完成,如概念模型确认、结构确认和行为确认。概念确认是评价与研究系统相关的概念模型,主要是根据研究目标评价概念模型的真实性;结构确认是根据观察到的系统结构评价仿真模型的结构。行为确认是评价仿真模型的行为变化。图1.7给出了一般的模型验证和确认活动。
应该注意:系统行为和模型产生行为的一致性必须在试验框架确定的范围内进行考察。因此,当使用已有的模型研究新的仿真问题时,模型必须满足所研究问题的试验框架。如果没有确定试验框架,就不能开始模型的设计开发工作。
图1.7 验证与确认活动
1.7.3 仿真模型的设计原则
模型设计是包含一定艺术性的科学活动。Morris指出,虽然不可能针对所有仿真建立完整的、详细的模型设计方法,但存在一些必须遵循的一般性的模型设计原则。建模艺术体现在不断抽象问题的本质、选择和修改体现系统特点的基本假设、丰富和精炼模型直到模型可以产生可用的近似结果的过程中持续提高的模型设计能力。然而,模型复杂性不能超过研究问题所需要的模型粒度。如果违背该原则,只会增加模型设计开发的工作量和仿真的计算代价。模型和真实系统之间没有必要建立完全的一对一映射,仅需有按照问题确定的研究范围体现所研究系统的本质即可。模型设计过程中必须与模型用户或仿真用户紧密协作,这样可以提高最终模型的质量和模型的可信度。
模型为认识和研究系统提供了一种既规范、准确,又易于理解和传递的表达形式,从而能够增强人们对系统的认识和分析能力,提高系统的论证、设计、研制和使用水平。建模过程中应把握好以下几项基本原则。
1.准确把握仿真目的
仿真建模服务于仿真研究的目的,仿真目的在很大程度上决定了模型的层次类型、功能结构、描述方法和分辨率要求。建立模型之前,首先要根据仿真目的,对所研究的系统进行必要的界定,并针对所研究的问题做出必要的约定、假设和简化,从而明确建模的前提条件和模型的适用范围。建模过程中,仿真目的对模型的影响也是多方面的。仿真目的可能会影响到模型的类型和描述方法,如果研究武器装备的作战使用原则,那么一般只需采用概率统计方法建立武器系统交战的解析计算模型;如果评估武器装备的作战效能,则需基于物理学原理建立武器系统交战的实体行为模型。仿真目的也可能影响模型变量的定义,如同一个变化因素有时可以定义为系统的内部变量,有时又可定义为系统的输入变量。
2.有效利用领域知识
作为仿真研究对象的各类系统,大多已经被前人研究过,而且积累了丰富的经验和知识,形成了相应的科学分支。在这些分支中,已经发现了许多原理和规律,有的已经建立了比较详尽的理论模型。建模过程中,要将关于系统的理论成果作为建模的重要知识来源,以保证所建立的模型有充分的理论依据。然而,理论知识只是对一般原理的阐述,关于仿真对象系统(或类似系统)运行的经验知识、观测数据或试验结果(如果存在),是掌握系统特殊性质的重要手段,因此也是建模的重要知识来源。仿真建模离不开相关领域知识的支持,理论知识与专家经验、观测数据、试验结果的有机结合,构成了仿真建模的领域知识基础。只有将各类知识相互补充、相互印证,才能使所建立的模型既符合对象系统必须遵循的一般原理,又体现对象系统的特殊性质。
3.正确选取研究途径
仿真建模可以看做是一个综合利用各种知识来源,针对建模目的进行知识采集、处理和表达的过程。根据知识的主要来源,可以将建模研究分为演绎和归纳两种基本途径。演绎建模是一个从一般到特殊的过程,它以已有的科学假定和知识体系为基础,主要通过对已有知识的演绎来建立系统的模型。反之,归纳建模则是一个从特殊到一般的过程,它以已有的观测或试验数据为依据,主要通过对已有数据的归纳总结来建立系统的模型。
掌握正确的建模研究途径非常重要。受系统自身的复杂性和人类现阶段认识能力的制约,人们对各类系统构造原理和运行机理的理论描述能力存在差异。根据人类对系统内在规律的理论描述能力,按照程度由高到低的顺序,可以将仿真建模的对象划分为“白箱”、“灰箱”和“黑箱”等三类系统。人们对“白箱”系统(如导弹、飞机等工程系统)的内部结构和特性已经掌握得比较清楚,利用一些已知的定理、定律等,基本上可以通过演绎的方法来建立它们的数学模型。对那些内部结构和特性尚不够清楚的“灰箱”系统,如生命、生态等系统,需要将演绎法和归纳法紧密结合,才能建立系统的数学模型。对于以社会经济系统为代表的“黑箱”系统,人们对其发展变化规律的理论描述能力还比较差,一般只能通过统计分析等方法归纳推导系统的数学模型。
4.科学利用建模方法
仿真建模的方法有很多。例如,按照所描述系统的性质,可以分为连续系统建模方法、离散事件系统建模方法;按照所建模型的性质,可以分为概念、描述、功能、约束、空间等各种建模方法;按照建模的原理,又可以分为机理建模、辨识建模、模糊建模等各类建模方法;按照建模方法的理论特征,也可以分出面向对象建模、层次化混合异构建模、一体化组合建模、多视角多分辨率建模等多种类型。
建模方法的选取主要取决于系统的性质及仿真的目的。无论采取哪种方法,都应符合仿真建模的一般要求。包括适用性,即模型应能够有效地反应所描述系统的特性和规律,其精度应当与仿真研究的目的相适合;简单性,即在深入思考分析和满足精度要求的前提下,应尽可能地对模型进行简化处理,抓住影响系统行为的主要因素和主要矛盾;清晰性,即模型的结构应当清晰,尽可能减少子模型之间的内在耦合联系,对实体的属性、状态、活动及实体间信息关系的描述应当清楚;组合性,即模型应当尽可能建立在灵活可变的体系框架之上,以便于实现模型的组合和重用。
5.充分保证模型可信程度
模型的可信度直接影响仿真结果的可信度。仿真作为一门科学,有别于简单模仿的基本前提就是模型是可信的。模型可信度受很多因素的影响,如仿真目标的可行性、建模方法的科学性、理论知识的正确性、模型简化的合理性、建模数据的准确性、专家经验的权威性、仿真程序的一致性、问题领域的适用性等。模型的可信度问题是一个十分复杂的问题,如何保证模型具有所需要的可信度,是至今没有完全解决的严峻课题。坚实的科学基础、可靠的过程管理、充分的实践检验是保证模型可信度的基本途径。
仿真模型的可信度应当通过科学规范的模型验证、确认和认定工作来保证。就像工业产品的质量保证一样,模型验证、确认和认定工作也要贯穿建模仿真的全寿命周期,而且需要投入专门的时间、经费和人力资源,遗憾的是,这一点至今尚未得到充分的理解和重视。
1.7.4 模型设计的误区
由于仿真模型需要根据研究目标对系统进行简化和抽象,这种活动一般具有很强的主观性,也使得人们对模型的认识存在很多误区。这些误区主要包括如下几方面。
1.模型的逼真性(Fidelity)等于模型合理性(Validity)
实际上模型的合理性是一个相对概念,是指模型满足试验框架的约束。但一般经常混淆模型的合理性和模型的逼真性。实际上逼真性是合理性和模型详细程度的一种混合。所以高逼真度模型是指一方面模型比较详细,非常接近于真实世界中的物理表示,而另一方面高逼真度模型在试验框架下是有效的。而合理性与试验框架有关,如在计算机生成兵力中,高逼真度是指在训练作战和指挥人员时,基于状态预估算法为其建立感觉真实的分布式虚拟环境,但这种实体间的低频率数据交互用于论证分析时,其模型行为显然是不合理的。
2.模型越详细,模型的逼真性越好
模型的逼真性是合理性和模型详细程度的混合。在使用逼真性的概念时,需要注意高逼真度模型需要模型比较详细,但同时也需要模型能通过确认和验证。所以,即使高分辨率的模型可能非常详细,但如果不满足研究问题的试验框架要求,它仍然不是一个高逼真度的模型。因为模型的高分辨率会带来影响因素的增加,一旦数据假设不当或忽略了主要因素,将会使模型受到次要因素影响,不能抓住影响问题的主要矛盾,使得模型在应用到不同仿真应用时,其逼真度由于分辨率的提高而下降。
3.高分辨率模型可以有效支持新的仿真应用开发
由于模型越详细,其适应环境和试验框架变化的能力越差,所以很可能一个模型非常详细,但用于其他环境下会存在很多错误。尤其在不同层次和不同应用领域的仿真应用中,研究目的差别非常大,对模型输入的影响因素变化大,试验框架变化也非常明显,模型分辨率越高,出现不适应试验框架错误的可能性越大。另外,高层仿真应用中如果包含很多高分辨率的模型,将意味着数据收集、模型设计、实验设计、试验分析和仿真执行的时间呈指数增加,最后将难以进行仿真分析。所以高分辨率模型(不包含模型组件)很难在跨领域和跨层次的仿真应用中得到重用。
4.模型是领域专家的工作或仿真专家的工作
一般仿真模型不仅需要反映系统的运行规律,其仿真试验还需要相关的算法支持。而仿真专家主要熟悉仿真相关的模型开发、试验和分析领域,而且仿真模型还不能完全等同于领域模型,因为其中针对研究问题包含了相关的简化和假设条件,建立的模型也需要特定的仿真算法支持,所以仅凭对真实系统的经验和完全的仿真理论无法建立可用的仿真模型,必须依靠领域人员和仿真专家的密切协作才能很好地解决仿真模型的设计问题。
5.可以基于统一的仿真框架支持各类仿真模型
当前在很多仿真应用中,几乎不存在统一的仿真模型框架。存在的公共仿真框架主要支持公共的仿真运行机制、网络数据交换、仿真模型程序转换、数据采集和分析工具。这些公共仿真框架一般面向不同的仿真应用特点和仿真应用领域,在扩展到差别较大的领域时会面临一些困难,如采用面向训练的分布式仿真框架支持面向分析的构造仿真时,在仿真运行效率上很难满足批量仿真的快速试验需求。
1.7.5 基本的模型设计方法
1.模型设计的主要方法
仿真模型设计方法是建模人员根据研究目标、研究范围对系统进行抽象和简化的技术。一般可以将仿真模型设计方法归纳为以下几种方法:
(1)推理法:对内部结构和特性清楚的系统,即所谓的“白箱”,可利用已知的一些基本定律,经过分析和演绎导出系统模型。
(2)实验法:对那些内部结构和特性不清楚或不很清楚的系统,即所谓的“黑箱”或“灰箱”,如果允许进行实验性观测,则通过实验性观测后按照一定的辨识方法得到系统模型。
(3)统计法:对于那些属于 “黑箱”,但又不允许直接实验观测的系统,则可采用数据收集和统计归纳的方法来构造模型。
(4)混合法:把以上几种方法适当结合起来构造模型,适用于大部分系统。图1.8为混合法建模的典型例子。它给出了一个模型建立阶段的“先验”(结构的)知识与“后验”(测量的)知识间的相互关系。图1.8的上半部分针对特定系统指出了构造模型的步骤,从物理定律开始,加以线性化,直至简化为常微分方程,所得到的这些微分方程提供出一个模型的结构,在每一步中都引进了误差。图1.8的下半部分说明了从对系统测量开始,应用数据处理和估计算法,估计出模型的状态和参数,其中也存在一些不同形式误差。
2.工程系统的建模
首先分析模型的使用目的和要求,确定模型的功能。然后,根据目的要求,从时间和空间的观点来明确系统和环境等的边界条件,确定系统输入和输出及变量及其性质;根据模型使用目的,把系统划分成若干可以模型化的单元(子系统),确定构成系统功能的最小单位和状态空间;分析模型化对象的静态和动态特性;确定模型的各种组成要素和逻辑结构,选择可供采用的定理、规则、公式、近似函数,并根据函数和约束关系建立数学模型;对建立的数学模型进行仿真试验,并根据试验结果,对模型进行必要的修正和简化工作。最后进行是否符合实际的模型证实工作,如果需要,再做相应的修改与调整。
图1.8 混合法建模
3.非工程系统的建模
由于对这一类系统的问题和目标本身不很清楚,更重要的是对它们的机理也不清楚,所以不少因素难以用数学模型来表示,模型也就难以构好。建模常常首先强调以提出经验性假设作为出发点,并承认理论的不足,而求助于经验判断,采用宏观到微观或微观到宏观的方法,定性与定量互相结合,最后定量。这些经验性假设,不能用严谨的科学方式证明,但能用经验数据对其确实性进行检测。从经验假设出发,通过定量方法途径获得的结论,仍具有半经验半理论的属性。这类系统模型的证实主要采用实验性的证据对所要求的假设进行检验。另外还要核实模型演绎过程在数学分析上的逻辑正确性,模型中的科学部分应对应于实际问题的一部分客观事实,模型使用的数据应是有经验根据的。
这样的系统建模方法是科学理论、经验和专家判断力的结合,是目前行之有效的方法。F·W·兰彻斯特的战斗数学理论和T·N·杜派的定量判定模型,都是建立在经验性理论基础之上的,都是经验与科学的产物。这类模型主要用于提高对方向性趋势的洞察力,以增加对系统动力学的了解,或作为数据收集计划指南。不能利用这类模型去求最优解,只能寻求可行的或满意的方案,而有些模型主要用来弄清争论的议题分歧所在。所以利用这类模型与其说是在寻优,还不如说是在调查。
1.7.6 仿真模型的设计方法
经过50多年的发展,仿真应用的各个领域形成了多种面向不同系统类型的建模方法,其用途和特点各不相同。一般来说,采用一种针对特定领域、特定系统类型的建模方法比通用方法更能抓住问题的本质。各种建模方法好比是不同颜色和不同分辨率的透镜,当人们用某一种透镜观察世界时,可能比采用其他透镜具有更好的观察效果;然而,采用一种透镜往往只能观察事物的某些特征,采用多种透镜才能更全面地了解世界。
例如,可以思考一下如下方程的模型:
同时,我们可以观察如图1.9所示的模型。
该模型和式(1-1)表示的模型语义上基本相同,相当于一种模型转换为另一种模型。这样两种不同的模型形式同时存在是因为它们反映了人们观察物理世界的方式不同。不同人在观察系统时采用不同的角度和方法可能会极大影响自己在模型设计方法上的选择。上面的两个模型反映了人们研究系统的两种思想。图1.9中的模型反映了工程师在建立机器和硬件设备时常用的建模方法。与式1-1所表示的方程模型相比,该框图模型由于建立了与硬件设备的对应关系,所以它不仅反映了系统行为,更便于其他相关人员思考、使用和了解模型所表现的系统行为。因此,框图模型更适于表示工程系统中包含的物理组件及其相互作用。然而,如果对短期内蚂蚁数量的增长进行建模,式1-1所表示的方程模型可能更合适,因为蚂蚁的增长过程及其机理并不容易直接表示为框图模型所表示的部件。
图1.9 框图模型
根据仿真研究目的和仿真对象系统的性质,可以采用面向不同领域的模型设计方法建立系统理论模型。美国Florida大学计算机信息科学与工程系的Paul A. Fishwick教授按照不同领域模型设计方法内在的一致性,将计算机仿真模型分为概念模型、描述模型、功能模型、约束模型、空间模型5种基本类型。这5种模型可以结合使用,在一定条件下有的还可以互相转换。
(1)概念模型(Conceptual Model)。概念模型是指尚未按系统理论分类方法划分出状态、事件和函数等成分的模型。概念模型通过语言、图示或语义图等方式对系统的特性、组成及关系进行一般性的描述。概念模型以形象的方式对系统的实体、属性、行为和关系等进行概念性的描述。对象图是一种比较自然、规范和完善的概念建模方法,它采用类、对象、属性和方法函数等来描述系统的基本特征和变化规律。
(2)描述模型(Declarative Model)。描述模型主要根据状态、事件及两者之间的转移关系描述系统的行为,并通过状态变化序列来考察系统的行为。常用的描述模型包括有限状态机、有限事件机、Markov链、Petri网等。
(3)功能模型(Functional Model)。基于功能和变量描述系统的行为,并能够以图形符号进行表达。常见的功能模型有功能框图、信号流图、随机网络图、系统动力学流图等,其中功能框图模型最为典型,它通过功能模块之间的输入/输出关系对系统的行为进行描述。
(4)约束模型(Constraint Model)。用代数方程、常微分方程等数学方法,Bond图或Modelica等描述系统的内在规律和行为。常微分方程是一种典型的约束模型,并可以转换为相应的功能框图模型。Bond图和Modelica是工程技术人员经常采用的一种约束模型,它基于能量和能量转换关系,采用统一的方法对电磁学、力学、水力学、空气动力学、热力学和材料力学等领域的物理学原理进行描述,为不同工程领域的建模提供统一的视图。根据领域知识和能量的流向关系,可以将Bond图转换为微分方程及功能框图。
(5)空间模型(Spatial Model)。根据空间分布关系对系统进行分解,并通过子空间的行为、规则和相互关系描述系统的整体行为。目前主要采用相格法建立空间模型。将相格空间的规则与气体分子的扩散特性结合起来,可以建立气体或粒子的扩散模型。将相格空间的规则与交通规则和车辆行驶速度等因素结合起来,可以建立复杂的交通系统模型。将相格空间向三维空间扩展时,根据植物的空间生长规则,可以建立植物生长模型。空间模型还可用于建立偏微分方程的求解算法,并衍生出更复杂的基于Agent建模仿真方法。
1.7.7 仿真模型的工程化
实际上,不同的面向领域的模型设计方法都提供了一个模型规范及与该规范对应的模型执行方法。模型规范提供了明确和清晰的语义支持模型描述,使得基于模型规范设计的模型自动包含了相关的语义和执行机制。例如,如果采用Petri网建立了一个模型,一般不必解释模型中的Petri网语义,该模型的语义及其执行机制实际上隐含在Petri网建模方法确定的模型规范中,因此模型设计方法及其包含的模型规范和执行机制实际上提高了模型理解、分析、交流和模型重用的能力。
与基本的模型设计方法相比,面向领域的模型设计方法一般具有明确的模型规范和对应的模型执行方法,使得所建立的模型具有二义性,便于模型的交流和使用,在仿真模型设计过程中也具有可操作性,因此面向领域的模型设计方法为模型的工程化开发提供了基础。当前在软件工程中,为了解决大型软件系统的分析、设计和开发问题,软件工程领域也采用多种模型设计规范约束软件系统模型的设计和开发,已经形成了比较成熟的建模语言,如统一建模语言UML(Unified Modeling Language)。UML将软件分析、设计中的方法统一起来,用例图、类图、对象图、序列图等多种方式,建立软件系统分析、设计和开发阶段的静态模型、行为模型和交互模型,可以有效地支持软件系统模型的工程化开发,大大提高软件工程设计的水平和软件设计模型的可交流性和可重用性。
建立系统的仿真模型有多种方法,这往往使仿真人员感到无从下手。怎样对系统进行抽象,采用哪一种建模方法、怎样使用这些方法建立系统模型,以及如何把系统模型变换为相应的仿真软件等,是仿真研究人员进行模型开发时经常遇到的问题。要从根本上解决这些问题,就要实现模型的工程化开发。模型工程化的含义是,依据实践中形成和提炼的范例和已有的规范,对模型开发活动进行科学、规范的描述。模型工程化的任务是定义模型开发中规范化的科学知识,提出模型开发的原则和方法。模型工程化重在模型的设计过程,即采用某种设计方法论框架建立实际仿真系统的静态和动态模型的过程。
另外,面向对象的建模方法是一种非常常见的建模方法和思想,面向对象建模是一种非常基础的方法,可以支持几乎任何系统的描述,面向对象的思想实际上已经贯穿了几乎所有的领域模型设计方法,如概念模型设计、离散事件仿真模型设计、基于Agent仿真等,只是这些领域模型设计更具有针对性和专业性。面向对象思想本身也源于古老的SIMULA68仿真语言,然而该方法还不能很好地直接、快速体现不同领域和不同特点的模型抽象,不包含特定的模型规范和执行机制,不便于领域模型的交流和使用。经过20世纪90年代面向对象仿真的研究热潮,传统领域的仿真建模方法反而得到了更加快速的发展,也更明确了面向对象建模方法的基础性地位,并在仿真开发中主要用于基础性的仿真框架设计和跨领域的仿真模型组合等领域。除非这些模型具有很强的面向对象特征(如作战效能仿真、作战训练仿真和战役分析等),如果面向领域的模型设计方法可以解决模型设计问题,一般可以直接采用特定领域的模型抽象方法。
仿真模型的工程化开发不能完全应用软件工程的方法和工具。UML主要是面向软件分析和设计问题提出的,其建模方法不包含对应的仿真运行机制,难以适应领域知识、系统建模、仿真实验和仿真应用的多样化需求;而且,仿真分析和设计人员不是软件工程师,他们需要从应用目的出发,针对领域知识的构成,采用相应的方法和工具来进行模型抽象和简化。由于面向领域的模型设计方法一般具有明确的模型规范和模型执行方法,所以采用基于领域模型设计方法的仿真模型工程化开发将会影响仿真研究的模型设计开发和仿真运行过程。这里可以将1.6节的仿真开发过程简化为模型设计、模型执行和执行分析3个阶段。图1.10给出了面向领域模型设计方法的模型工程化过程。
图1.10 面向领域模型设计方法的模型工程化过程
在领域模型设计方法的支持下,仿真模型开发主要包括概念建模、实体建模和程序设计3个阶段。其中,概念建模的主要任务是对实际系统进行抽象并确定模型的类和关系及属性和方法,确定系统的静态模型和动态模型;仿真模型开发则主要根据领域模型设计规范完成从系统模型到仿真模型的转换。在进行仿真研究时,首先应建立系统的概念模型,确定系统的研究目标,研究范围,系统边界和涉及的对象。然后,根据系统的概念模型,选择不同的建模方法对系统进行层次化的抽象。根据系统的行为特点和抽象层次,可以选择描述模型、功能模型、约束模型、空间模型来描述处于不同层次、不同部分的子系统的行为,从而形成一个具有混合异构特征的完整的多层次组合模型,不同的模型层次代表着对系统性质的特定的抽象层次。在模型执行阶段,可以针对领域模型设计规范开发相应的并行和串行仿真算法,在这些算法的支持下根据输入变量可以驱动与之对应的仿真模型执行并产生运行分析需要的仿真结果。