仿真语言是仿真研究中基于通用计算机语言而又比其更高级的软件系统。仿真语言为仿真研究人员提供了专门用于建模、仿真实验和仿真结果统计、分析、显示的程序语句,研究人员可以不必深入掌握通用计算机高级语言的编程细节和技巧,而用比较习惯或容易掌握的表达方式来描述仿真模型,把主要精力集中在仿真研究上。
仿真语言是随着
数字计算机的发展而发展起来的。在连续系统仿真方面,1955年出现第一个框图式仿真语言,称为数字模拟仿真语言 DAS(英文 DigitalAnalog Simulator的缩写)。这种
仿真软件配有一整套对应于模拟计算机中各种标准运算部件的
程序模块,用这种仿真语言编写的
源程序分为结构、参数和控制三部分,分别用来指定程序模块间的连接、模块的参数和模块的运行方式。用户书写
源程序语句的顺序则是任意的。
源程序经
编译程序翻译成
机器码,或经
解释程序解释后执行。因为
源程序的编制方法与
模拟计算机的编排方式相类似,所以很受仿真界的欢迎,盛行于1955~1965年间。但模型的表达内容要受预先编制好的模块类型的限制。DAS语言吸取了早期许多仿真语言的特点,在仿真语言的发展中起过重要的作用。60年代初还在 DAS语言的基础上作了改进,出现改进型数字模拟仿真语言 MIDAS(英文 Modified Digital Analog Simulator的缩写)。1959年出现系统动力学
建模语言DYNAMO(英文 DynamicModels的缩写)。1967年美国
计算机仿真学会提出一种兼有框图表示功能的面向方程的仿真语言,称为
连续系统仿真语言CSSL(英文Continuous System SimulationLanguage的缩写),成为连续系统仿真语言的规范。此后又出现了许多符合CSSL规范的仿真语言。其中应用较广的有连续系统
建模语言CSMP(英文Continuous SystemModeling Program的缩写)和微分分析器置换语言 DARE(英文Differential Analyzer Replacen ent的缩写)。由于近代公式翻译语言 FORTRAN的
编译程序对某些
小型计算机也能产生高效率的
目标代码,所以面向方程的仿真语言都是先翻译成
FORTRAN语言,再通过编译程序生成目标代码。符合CSSL规范的仿真语言有许多版本。
在离散系统仿真方面,1959年出现第一个离散系统仿真程序包MONTECONE。1961年提出进程型仿真语言──通用系统仿真语言GPSS(英文General Purpose SystemsSimulator的缩写)。1963年出现事件型仿真语言 SIMS-CRIPT。1967年又提出另一种进程型仿真语言SIMULA67。后来又出现另一种事件型仿真语言:一般活动仿真语言GASP(英文General Activity Simulation Program的缩写)。70年代以后,仿真语言开始向多功能的方向发展。在离散系统仿真语言中引入
连续系统仿真语言, 产生混合系统仿真语言。 其中应用最广的是GASP语言的两个新版本GASPⅣ和GASP-PL/1, 和交替建模仿真语言SLAM(英文Simulation Language for Alternative Modeling的缩写)。混合仿真语言 HL1(英文Hybrid Language 1的缩写)可用于设计
并行计算模块的程序,适用于高速仿真和实时仿真。将仿真语言与
控制系统计算机辅助设计软件包配合使用,使
计算机仿真系统成为控制系统设计研究的有力工具。近年来出现的
仿真软件系统和仿真专家系统进一步扩展了仿真语言的功能,成为仿真语言发展的新方向。
仿真语言按被仿真系统的特点分为
连续系统仿真语言、离散系统仿真语言和连续离散混合系统仿真语言。按数学模型的型式分为面向框图的仿真语言和面向方程的仿真语言。按运行方式分为交互式仿真语言和批处理式仿真语言。
仿真语言是一类重要的
仿真软件,市售商品均以文本和软
磁盘的形式提供。它由以下四个部分组成:①模型定义语言:用以定义模型和
仿真实验的语言。②
翻译程序(用于连续系统仿真)或处理程序(用于离散系统仿真):翻译程序是将用模型定义语言书写的
源程序翻译成
宿主语言。处理程序是将
源程序连接实用程序库和运行支持程序,形成
机器码。③实用程序库:包括算法、专用函数、随机采样函数、各种框图和绘图程序。④运行控制程序:供用户以人机交互的方式控制仿真运行、改变参数、收集数据和显示数据的程序。
仿真语言不同于一般通用的高级语言,具有以下几个特点:①仿真语言使用户可以采用习惯的表达方式来描述仿真模型。②仿真语言具有良好的
并行性。在实际的连续系统中,过程都是并行发生的,而一般
数字计算机都是串行计算的。因此,用仿真语言编写的
源程序都有自动分选排序的功能,通过
编译程序将源程序排列成正确的计算顺序,供计算机按顺序进行计算。③仿真语言与顺序性的通用编程语言(如
FORTRAN语言)有兼容性,以扩展仿真语言的功能。④仿真语言备有多种积分方法可供用户选用。⑤仿真语言配有常用输入和输出
子程序。⑥用仿真语言编制的
源程序,便于实现多次运行仿真的研究。⑦用仿真语言编制的
源程序,在程序运行的不同阶段,可给出诊断
程序错误的信息,帮助用户查找程序错误。