王小玉 范晶晶
(中国电子科技集团公司第二十八研究所 江苏 210007)
近年来,基于模型的辅助决策技术得到了越来越广泛的重视和发展,作战模型在作战辅助决策系统中发挥了重要作用,是作战辅助决策系统的核心。作战模型的丰富程度和准确程度、适用程度直接反映了作战辅助决策能力的强弱[1]。作战模型在极大丰富的同时,也为作战模型的管理和使用带来了前所未有的挑战:作战模型由不同的研制单位开发,开发的方式方法和使用模式存在差异,缺乏统一的开发与使用约束,导致模型资源在物理上是分布的,在技术上是异构的;部分作战模型缺乏透明度,作战模型缺少权威部门的认证,造成使用中的可信度不足;作战模型存在重复开发且大多数模型是执行流程控制中的一个固定环节或过程,导致模型的可重用性差,难以对外提供模型服务[1]。为了有效管理作战模型的开发和使用,提高作战模型的可用度、可信度、可扩充性和可重用性,提高作战模型对作战辅助决策系统的支持能力,应对作战模型的开发流程、开发准则、参数传递,作战模型的测试与验收,作战模型调用流程、调用方式和参数传递规则等进行规范化。
作战模型的开发与调用与作战模型的组织、存储、管理、组合和集成是密切相关的。作战模型的组织形式有模型程序包和模型库两种形式[1]。由于模型程序包只适合各模型独立使用,不适合多模型的组合[1],因此,本文所讨论的作战模型的开发与调用都是基于模型库开展的。模型以程序形式存储在模型库中,通过模型管理系统对模型进行管理和组织使用。模型库中包括模型描述信息、模型引用情况、参数描述文件、模型实现文件、模型成果描述等信息。模型库管理系统提供对模型的导入、导出、修改、删除、组合等功能。
作战模型开发是指对作战模型进行计算机程序实现,形成能被作战辅助决策系统调用的模型程序。作战模型开发主要有三种方式:一种是开发成动态链接库,提供相关接口供上层应用调用;一种是开发成可直接运行的执行程序,可通过菜单调用;一种是直接在作战辅助决策系统中根据作战数学模型编制代码。第二种方式实际上可以基于第一种实现,最后一种方式不利于模型的重复使用,是应该避免的,因此,本文针对第一种开发方式提出规范性建议。
图1描述了一个作战模型开发流程,它明确了开发步骤、开发过程中应考虑的因素、实施的内容、判断的依据等,建议研制单位据此进行作战模型开发,验收机构据此进行作战模型验收。
图1 作战模型开发流程
(1)作战模型认证:由模型提供者向模型认证机构提交作战模型数学公式及其相关说明,模型认证机构根据模型名称、模型功能、模型关键字等信息在模型库中检索该模型是否已存在,如果不存在,则对其进行认证,如果通过认证,则执行(2),如果没有通过认证,则不开展后续工作;
(2)分析模型是否能分解:由模型认证机构分析模型是否能分解,应考虑的因素有:
①该模型是否可以拆分成几个组成部分,被拆分部分是否具有共性,可被其它模型广泛使用;
②该模型是否已包含由其它模型实现的部分;
如果模型可以分解,则进行模型分解,执行(3)。如果不可以分解,则执行(6);
(3)判断子模型是否已存在:由模型认证机构从模型库中检索分解出来的子模型,如果存在,则执行(4),如果不存在,则执行(5)。
(4)获取分解的子模型:从模型库中获取子模型,执行(6)。
(5)子模型实现:模型开发方对子作战模型进行程序实现;
(6)本模型实现:模型开发方对本作战模型进行代码实现,根据需要调用子模型;
(7)作战模型测试:模型开发方对开发的作战模型进行测试;
(8)作战模型验收:作战模型提交至模型认证机构,由模型认证机构对作战模型进行验收和入库管理。
作战模型开发建议遵循如下准则:
(1)作战模型编码应规范化。对每一个作战模型进行编码,作战模型编码是作战模型的唯一标识符,应遵循一定的编码规则。作战模型编码可考虑模型分类、模型性质、模型用途等;
(2)新建或组合模型时,应考虑已有模型的重用;
(3)作战模型应与数据分离,作战模型所需参数数据由作战辅助决策系统从数据库、数据文件、或者应用上下文环境中提取,或者由界面输入,或者由另一个模型的输出结果提供。即模型只负责根据输入参数进行计算并返回计算结果,不负责对数据进行存取操作。
(4)作战模型应具有异常处理和排错功能,对非法的参数、参数越界等异常或错误应有返回值(错误号)。对每个模型、每种错误的错误号分配应规范化,错误号由模型编码和错误标识号组成,全局唯一,每个错误号均对应一个错误信息,通过抛出错误号将错误信息反馈至上层调用者。
对每个作战模型均提供XML格式的规范化参数描述文件,描述该作战模型输入输出参数情况,包括每个参数的名称、标识、涵义、类型、量纲、精度、取值范围、输入输出性质、输入来源、缺省值等等。
为每个作战模型提供调用接口,作战模型之间,以及作战辅助决策系统与作战模型之间的参数传递依据参数描述文件通过调用接口成员函数实现。
模型开发方依据需求规格和设计说明文档,编制测试计划和测试说明对作战模型进行边界测试、接口测试、功能测试和性能测试等,形成相应的测试报告。在作战模型验收时,测试报告应提交给模型认证机构,作为验收依据之一。
作战模型开发、测试完毕后,应向模型认证机构提交以下产品用于验收入库:(1)模型描述信息;(2)模型引用情况;(3)参数描述文件;(4)模型实现文件;(5)模型成果描述。
1.5.1 模型描述信息
模型描述信息包括模型的名称、编码、类型、功能、适用范围、数学公式等关于模型的说明[1]。
模型描述信息要素要求:
(1)模型名称,应简练并明确表示出模型的主题,使之与其它模型相区分;
(2)模型编码,应对作战模型给出唯一编码,遵循作战模型编码规范;
(3)模型类型,应遵循一定的分类原则对作战模型进行分类,可以有多个分类原则,和多个分类描述,如按作战模型的级别
可分为战略、战役、战术、平台、武器等5类;
(4)模型功能,应简练并明确表示出模型的功能;
(5)模型适用范围,应简练并明确表示出模型的适用范围;
(6)模型版本,描述模型的当前版本信息,用4位数字字符表示为“X.X.X.X”形式;
(7)模型数学公式,应遵循GB/T 1.1 2009规定的数学公式规则进行表述,应说明公式中每个参数的名称、含义、类型、量纲、精度、取值范围等等。
1.5.2 模型引用情况
模型引用情况描述作战模型对其他模型的引用情况,要素包括本模型名称、本模型编码、引用模型名称、引用模型编码。
模型引用情况要素要求:
(1)本模型名称,应与模型描述信息中的模型名称保持一致;
(2)本模型编码,应与模型描述信息中的模型编码保持一致;
(3)引用模型名称,应与模型库中的描述保持一致;
(4)引用模型编码,应与模型库中的描述保持一致。
1.5.3 参数描述文件
对每个作战模型均提供XML格式的规范化参数描述文件,在参数描述文件中,描述该作战模型接口包含输入输出参数情况,包括每个参数的名称、标识、类型、量纲、精度、取值范围、涵义、输入输出标识、输入来源、缺省值等等[1]。
参数描述文件要素要求:
(1)参数名称,应简练并明确表示出参数的含义,使之与模型中其它参数相区分;
(2)参数标识,对参数进行唯一编码;
(3)参数涵义,给出该参数所包含的意义;
(4)参数类型,取值范围为整形、字符型、浮点型、日期型;
(5)参数量纲,应使用GB3101、GB3102各部分给出的量纲;
(6)参数精度,对于浮点数,应明确精确到小数点后多少位;
(7)参数取值范围,对于数值类型(整形或浮点型),且有取值范围,应给出其最大值和最小值;对于字符类型,应给出字符最大长度;
(8)输入输出性质,标识出该参数是输入参数还是输出参数;
(9)输入来源,描述输入参数的可能来源;
(10)参数缺省值,参数如果有缺省值,应给出其缺省值。
1.5.4 模型实现文件
应提供模型源程序文件、模型目标文件、模型帮助文件等模型实现文件[1][2]:
(1)模型源程序文件:包括源代码相关的内容;
(2)模型目标文件:作战模型以动态库(DLL)形式封装,以动态库(DLL)形式提供模型目标文件;
(3)模型帮助文件:以PDF格式/WORD格式提供如何调用模型的说明。
1.5.5 模型成果描述
模型成果描述包括模型研制情况、模型审核情况、模型批准情况等[1]。
模型成果描述要素要求:
(1)模型研制情况:提供模型研制情况的相关说明,包括研制单位、研制人员、研制开始时间、研制结束时间、版本信息等。
(2)模型审核情况:提供模型审核情况的相关说明,包括审核单位、审核人员、审核时间、审核信息等。此信息由模型认证机构填写。
(3)模型批准情况:提供模型批准情况的相关说明,包括批准单位、批准人员、批准时间、批准信息等。
1.5.6 作战模型验收入库
模型认证机构根据作战模型验收准则、测试用例、测试规程和测试数据,对模型开发方提供的作战模型进行验收,对模型开发方提供的文档齐套性进行检查。通过模型管理系统,将验收合格的作战模型入库。包括模型描述信息、模型引用情况、参数描述文件、模型实现文件、模型成果描述等。
作战模型调用是指作战辅助决策系统通过作战模型提供给外部的接口对作战模型进行调用。
作战模型可以被其它作战模型或上层作战辅助决策系统调用。对作战模型的调用通过调用作战模型提供的接口实现。
图3描述了一个作战模型的调用流程,它明确了作战辅助决策系统以及其它作战模型等应用对作战模型进行调用的步骤、调用过程中应考虑的因素、实施的内容等。建议研制单位据此进行作战模型的调用。
图3 作战模型调用流程
(1)分析所需作战模型:根据作战辅助决策的内容和过程分析各个阶段需要用到的作战模型;
(2)获取所需作战模型:通过模型认证机构从模型库中导出相关作战模型;
(3)安装作战模型至开发环境中;
(4)对于每一个作战模型的调用,则:
(5)获取作战模型所需参数:如果是作战辅助决策系统调用,则根据需要从人机交互界面或数据库中获取作战模型所需的数据进行传递,如果是其它作战模型调用,则直接从程序中传递参数;
(6)调用作战模型:按照模型接口调用方式对作战模型进行调用;
(7)接收作战模型计算结果。
作战模型之间、作战辅助决策系统与作战模型之间的输入输出参数传递通过调用接口类的成员函数实现。
对作战模型开发与调用进行规范化不仅能提高作战模型开发效率,保证作战模型的有效性,还能提高作战模型的可用性和可信度,保证作战模型的使用效果。具体项目可根据实际情况参照此规范化建议进行相应调整后实施。
作战模型是作战辅助决策系统中用到的专用模型库,除此之外还有基础模型库、通用模型库等,也可以参照此规范化建议进行开发和调用。
[1]邓苏,张维明,黄宏斌等.决策支持系统[M].北京:电子工业出版社.2009.
[2]刘永.IDSS中面向对象模型库与知识库的协同研究[D].西北工业大学硕士学位论文.2005.