战场目标毁伤计算模型库系统设计与实现
2016-09-13敬小勇李宏伟王燕娜马昭烨
敬小勇,李宏伟,王燕娜,马昭烨
(1.中国人民解放军92351部队,海南 三亚 527000; 2.解放军理工大学 野战工程学院,南京 210007)
战场目标毁伤计算模型库系统设计与实现
敬小勇1,李宏伟2,王燕娜2,马昭烨2
(1.中国人民解放军92351部队,海南 三亚527000; 2.解放军理工大学 野战工程学院,南京210007)
针对大量战场目标毁伤计算模型缺乏维护管理,不能为相关军事训练系统提供有效计算分析服务支持的问题,设计实现了战场目标毁伤计算模型库系统;该模型库使用关系数据库模拟XML进行数据描述,避免了海量小文件问题;实现简单,易于管理大规模、复杂和灵活的模型体系;能够通过UDP、RTI、软总线等方式为各种军事训练系统提供目标毁伤模型服务支持。
毁伤;模型库;关系数据库
本文引用格式:敬小勇,李宏伟,王燕娜,等.战场目标毁伤计算模型库系统设计与实现[J].兵器装备工程学报,2016(8):101-104.
军事训练仿真中,战场目标毁伤状态变化部分地起着“裁决”作用。如某桥一旦被“裁决”全毁,再采取从其通过的军事行动就不合理。军事指挥训练系统一般都需要目标毁伤模型仿真服务,进行计算、分析、裁决,以支持上层军事行动仿真训练。信息化战争条件下,敌兵器种类多、杀伤因素复杂,工程毁伤范围广、目标多、毁伤情况复杂。如此复杂的目标毁伤状态仿真生成,过去大部分仅凭经验或简单公式处理。另一方面,广大国防、人防、爆破、道路、桥梁等等各领域专家已经就目标毁伤计算从不同专业角度进行了大量研究工作。建立便于扩展维护的战场目标毁伤计算模型库系统,有利于整合已有研究成果,减少资源浪费。
模型规范描述是模型库系统的基础,模型组合运行是模型库系统的难点。二十多年来,国内各行业先后设计实现了面向对象的模型库系统[1]、基于ActiveX组件的模型库系统[2]、基于J2EE的模型库系统[3]、基于Web的模型库系统[4]、基于关系数据库的模型库系统[5]、基于XML的模型库系统[6]等。跟踪这些系统可以发现,尽管模型有动态链接库、EXE文件、ActiveX组件、Web Service等多种形式,模型的描述和组合运行却大多基于关系数据库或XML进行。特别是XML由于其良好的自描述性和可扩充性,在模型描述和模型组合中有着独特的优势[7]。
战场目标毁伤计算模型库系统设计为管理海量模型,因为毁伤模型数目是打击兵器、目标种类、打击方式的排列组合,仅仅100种兵器、100种目标、100种打击方式的组合就有100万种之多。XML技术简单易用,规范有效,但在海量模型管理中却可能生成海量小文件,带来系统维护和部署问题。仅仅是100万个小文件的拷贝部署,在目前主流配置计算机上完成就非常困难;海量小文件还可能带来更多的同步、维护困难。这些海量模型需要众多军兵种单位合力建设扩充,开发维护技术的成熟度和易用性问题在合作开发中变得非常重要。
本文针对军事训练工程毁伤仿真需求,使用关系数据库模拟XML进行模型描述和接口定义,使用C++语言BOOST库进行模型管理、模型调度和模型服务,使用PHP语言和网络服务进行模型维护和模型追述,设计实现了一个战场目标毁伤计算模型库系统。系统能够通过UDP、RTI、数据软总线等多种方式为各种军事训练系统提供战场目标毁伤计算模型服务,避免了海量模型管理中的小文件问题,便于大规模团队开发和系统部署维护。
1 用户群和功能需求
模型库系统的用户可能包括模型采集员、领域专家、模型程序编写员、模型测试员、其他系统程序员、上层训练系统、其他系统(图1)。
图1 模型库系统用例图
模型采集员通过领域专家和相关资料,获得模型信息,确定模型运行目的、要求、适用范围,定义模型的名称、输入输出参数后,通过模型定义模块定义模型,并将其通过网络发布给模型程序员。模型程序员通过发布的模型定义和模型说明,按照特定要求编写模型程序,交由模型测试员进行测试。测试完成后,交由模型服务模块对外服务。服务对象可能是上层训练系统、其他系统和这些系统的程序编写人员。
系统功能需求本身简单明确:对每一个毁伤、抢修与维护计算分析请求,给出一个目标毁伤状态变化的反馈。由于目标种类、打击方式和抢修维护力量的相对明确和不易变化,该功能需求决定了目标毁伤计算模型系统较其他行为仿真模型系统更为简单。问题的焦点集中在以下几个方面:
1) 为各种典型军事训练系统提供目标毁伤计算分析支持。如基于一般小型军事训练系统和基于RTI、软总线技术的大型分布式军事仿真训练系统。
2) 支持多种多样的目标毁伤计算模型的统一描述与组合调度。打击兵器、毁伤方式、目标类型等要素多种多样,它们的不同组合对应不同的毁伤模型服务。每种模型服务又可能有多种计算分析模型。如此繁多的计算分析模型,统一地进行描述和调度,本身就是一个难题。
3) 保证模型服务的有效与可信。模型的可用、可信服务是模型系统的生命。但是由于相应专业领域研究程度的限制,或者由于模型采集的阶段性,毁伤、抢修与维护系统中的模型必然需要不断测试、反馈、维护、更新。欲保证模型的可信,必先保证模型采集、维护流程的可控与可信。
为保证模型库中大量模型的团队持续开发和维护,毁伤计算模型库采用的开发模板和接口技术还应尽量成熟通用,便于各军兵种开发人员和领域专家理解掌握。
2 模型描述与实现
2.1模型输入输出描述
系统将所有模型看作简单的输入输出过程,模型执行过程可能需要一定的模型执行环境支持,模型运行后除产生一定输出外,可能对模型执行环境的状态属性发生一定影响。
模型一般采用数据文件(如XML文件)描述模型输入输出接口。数据描述可能存在语义上的关联。如“斜拉桥”是一种“桥”,则“桥”具备的所有描述项目“斜拉桥”应全都具有。在C++、Java等程序语言中可以通过继承等机制实现,在数据存储与描述领域也有类似的解决方案,如XML的schema和DTD[5]。经过试验,schema和DTD方案来规范XML文件数据描述是有效的,但是也存在一些问题。目标毁伤计算模型的输入输出往往需要不断扩展,数据项则相对较少。由于目标毁伤计算模型数量是打击手段数量、目标类型数量和打击条件数据的排列组合,模型库中的模型数量最终是海量的。模型接口将不得不使用海量小文件进行描述,这些文件中存在大量“规范”、“关联”、“包含”、“引用”逻辑关系,且存储、管理、维护、备份、部署本身就是一个难题[8-9]。
最终系统采用了更加务实和简洁的数据库“通用数据描述”解决方案。这一方案的核心是用关系数据库模拟XML文件的树形描述结构。使用该方案可以很快建立一个原型,而无需事前确定地获知对象描述的所有层次和项目,从而为模型的维护、扩展预留下了空间。该方案采用五张表描述一个具体的对象集合:对象类型表、对象类型描述模板表、对象表、对象与对象类型关联表、对象参数值表。
对象类型表存放对象类型的树形层次结构,以全局唯一Id号作为对象类型的唯一标识,如“{702A1555-B8E1-43B2-AE8F-973758A5EE7E}”。对象描述模板表存放各种对象类型描述参数的名称、类型、单位、默认值、有效性规则等信息,通过“所属”列与对象类型表相关联。对象表存放对象实体的基本信息,如名称等。对象实体与对象类型通过对象类型关联表实现绑定,绑定后就可以使用该类型的描述模板参数描述对象实体。各描述参数的具体数值使用对象参数值表描述。对象参数值表结构很简单,Id列是某参数值的全局唯一标识。所属Id与某个特定的对象实体关联,参数Id与某种对象类型中的某种特定参数关联,值列以文本方式存储具体参数值。该方案具有以下优点:
1) 技术简单。没有采用更新的新技术,一般水平的开发人员就可以掌握,便于组织团队协作模型开发。系统针对该通用数据描述模型预留了二次开发接口,数据访问简便。
2) 有高度的灵活性和扩展性。模型描述和建设是一个长期积累的过程,难免经常修订、扩展。该解决方案在关系数据库中模拟XML表示,可以解决这一难题。
3) 解决了大量小数据存储问题。上文提到可能产生海量XML文件的根本原因,在于很多对象的描述参数都有自身特点,结构复杂而数据量很小(很多只有1条记录)。如各种模型参数、武器描述参数等。用一个统一的结构化二维表格描述所有武器的参数信息几乎不可能。即使能够,也必将有大量数据冗余和空间浪费。使用单一XML文件方式描述,则会产生海量小文件。如果采用传统数据库描述方式为每一种对象建立一个表格维护更加糟糕,会建立海量小表格。众所周知,大量的小表操作意味着大量的连接操作,从而造成运行效率和维护成本的急剧增加。
4) 访问效率高。所有的参数数值最终存放在一张二维参数值表中,其余表都作为描述辅助使用,一般只有人机交互时才需要使用。当确定对象和参数Id后,数据访问只需在一张数据表中完成,不需要频繁的连接操作,访问效率不会因描述需要5张表而降低。
2.2模型实现方式
模型及其调度系统采用C++语言编写。C++ 程序设计语言支持多种编程模式,具有灵活、高效、易于组织大型系统的特点,也有缺乏“反射”机制等缺点。系统通过动态链接库中特定格式函数实现模型定义。模型 C++函数原型:
map
其中in为模型输入,返回值为模型输出,pEvm指向一个对模型运行环境的描述对象,pEvm 为模型运行环境参数,tracer是模型运行日志参数。
毁伤模型程序运行,可能涉及数十个甚至上百个参数和环境变量。调用此模型运行,不可能像调用普通C++函数那样给出所有的几十、上百个参数。C++函数的参数支持默认值设置,但是仅限于从右至左第次给定。一个简单的导弹打房屋的毁伤模型,就可能涉及打击方式、打击角度、风向、光照、电磁等等大量参数。在军事训练仿真中,毁伤模型如果缺某一两个参数就不允许进行处理是不合理的。
系统模型接口实现的基本策略是,通过网络对外发布模型涉及到的所有参数,说明哪些必须给定,哪些选择给定。每个模型参数有都有一个全局唯一的Id,调用模型时只需要在输入参数表 map
输入参数的值不管在模型中应该是什么类型,在给定时一律用string字符串给出。模型参数仅仅代表模型调用时给出的模型运行条件,至于如何解释参数给出的类型、数值,如何使用这些参数,由模型自身负责,与模型调度管理系统无关。模型系统运行基于这样的基本假设:模型接收到服务文本请求后,应有足够的能力自行解析那些对自己模型运行有用的信息,包括值、类型和含义。具体实现时,模型通过全局唯一的参数Id确认模型参数后,使用增强的C++语言BOOST库类型转换函数,实现安全静默的类型转换和异常处理。模型参数的有效性使用BOOST库进行正则表达式校验。
模型运行需要一定的环境,模型系统使用CModelEnvironment类型表示模型运行的外部环境,模型程序通过它得到外部环境信息。该环境使用指针描述,可利用继承与多态机制扩展。
模型服务过程一般不允许中断,但是模型服务过程应有据可查。CTracer类是一个可扩展的模型记录器接口,默认不做任何记录,可以按其接口定义实现具体的记录器。记录器是系统运行情况的“观察者”,对应Observer “观察者”设计模式。观察者只负责记录和展示观察到的系统运行情况,而不参与系统运行逻辑过程。根据展示和记录需要,用户可以定制不同的“观察者”并将其安插在系统中。模型库系统已经实现了流向交互界面和数据库的多个记录器,以备调试、监视、记录、分析的需要。
模型执行器CModelExector调度执行符合模板接口规范的模型。已有的其他模型实现应该按此接口规范进行二次封装,以满足模型统一调用的要求。如过去实现的大量基于数据模板描述的工程破袭毁伤模型,进行接口转换后已作为模型库的一部分参与模型服务。
3 模型服务
3.1模型运行过程
模型运行过程如图2所示。模型程序实现了模板化,对复杂的转换、交互过程作了封装处理,模型程序员一般只需修改其中业务逻辑相关部分即可。
3.2模型调度
系统支持两种模型调度方法。一是在模型建设时直接引用其他模型,方法与普通的C++函数调用无太大差别。只是由于特殊的模型输入输出接口设计,函数调用时只需给出最需要的参数即可,并且这些参数次序无关。二是使用模型执行器CModelExector完成模型调用。
模型执行器在调度模型时同时给定了运行环境、记录器信息,用户可以在自己的程序中使用模型执行器按特定逻辑组合形成新的模型。模型执行器中设置了哈希散列缓冲区。使用过的模型并不立即释放而是散列在缓冲区中,下次使用时直接定位运行,避免了频繁载入和释放模型,在模型频繁使用时可有效提高调度效率。
图2 模型运行过程
3.3模型服务
模型服务包括模型维护服务和模型运行服务。前者的用户群是领域专家,模型采集、编写、测试人员;后者的用户群是上层训练系统、其他系统及这些系统的开发人员。
系统使用PHP语言和Aphache网络服务开发了模型发布、维护子系统。模型采集人员采集数学模型,规范其模型定义和输入输出参数定义,给出模型运行过程描述。模型开发人员严格按照此描述开发模型程序。模型测试人员按照规范化的流水作业方式测试模型运行过程,反馈给模型开发人员。经过测试的模型通过网络发布给领域专家进行审定和试用。领域专家可以看到模型的原理、来源、依据、修订历史、采集测试编写人员的联系方式等各种信息,可以利用系统自带工具进行简单的模型试用,能够提供反馈意见。
根据相关大型军事训练仿真系统的交互需求,系统提供了包括UDP、RTI、数据软总线的多种模型服务交互接口。系统利用这些接口,成功为多个大型军事训练系统提供了目标毁伤计算计算分析服务支持。
4 建设经验与存在问题
系统使用关系数据库模拟XML描述结构复杂而数据量小、经常需要维护的模型数据,实现了毁伤计算模型库系统,能够管理、维护和不断扩充模型体系,可以为各种军事训练系统提供毁伤计算分析仿真支持。主要经验有:
1) 模型库建设采用的技术应简单。建设过程中模型实现试验过COM技术、Web Service技术方案。模型接口数据描述一开始采用了XML和Schema技术方案。这些技术在原理试验中取得了成功,但是在真正展开系统建设时却遇到了很大阻碍。如针对包含100万个小文件的系统安装部署,即使是较高配置的个人计算机,一天内完成也非常困难;很多毁伤领域专家在维护毁伤模型时反映对Schema的继承、限定机制理解掌握困难。在需要众多单位和人员合作进行的大规模模型库建设中,应尽量采用成熟和普及的技术。采用本文提出的技术方案,建立的战场目标毁伤模型的描述、采集、维护、服务模式,已在多个军兵种单位使用,各单位领域专家间的合作开发难度大大降低,系统安装部署难题得到解决,模型库建设效率较原有方案有很大提高。
2) 模型接口应简单和容易理解。模型服务是为其他相关系统服务的,便于其他系统开发人员编写交互接口,不能对其他系统提出过多要求。模型库系统功能的强大体现在能够提供的模型数量、品质和可信度上,接口技术应尽量简单。
可用和可信是模型的生命。模型系统不仅仅要能够管理模型、运行模型,而且要保证模型自身的不断更新、扩展。模型服务实现应尽量做成“黑匣子”,使用接口简单。但是模型的基本原理、修订历史、运行记录等信息必须能够追溯、展现和分析。这是因为大量目标毁伤计算模型本身也在不断研究完善,必须以可信的模型生命周期过程保证模型的可信。
存在的主要问题是工程毁伤精算分析与快速仿真间的桥接融合方法缺乏研究。军事仿真训练系统对目标毁伤状态生成的时间要求是毫秒以下,最好准实时,而现有各经典毁伤分析研究手段(如有限元分析)的时间单位却是分钟、小时、天,必须在模型仿真、数据交互、可信性验证等方面弥合二者的差距,更有效利用现有研究资源和成果。
[1]李许卿,周行仁.决策支持系统中模型库系统的面向对象设计[J].决策与决策支持系统,1994,4(3):13-20.
[2]马金平.基于ActiveX组件技术的模型库系统的开发研究[J].计算机应用,2001,21(5):33-35.
[3]邹小天.基于J2EE的模型库系统开发研究[J].武汉理工大学学报,2005,27(12):115-117.
[4]吴延林,邱晓刚,刘宝宏.基于Web仿真模型库系统的设计[J].计算机工程与设计,2006,27(22):4353-4355.
[5]任永昌,邢涛,陈晓纪.基于关系数据库的模型库系统研究[J].渤海大学学报(自然科学版),2008,29(2):180-184.
[6]刘冰.基于XML的模型库系统研究[D].天津:天津大学,2012.
[7]戴超凡,陈俊.模型组合技术研究与实现[J].计算机应用研究,2009,26(4):1419-1421.
[8]李正优,郭留河.车载导弹海上射击视景仿真研究[J].四川兵工学报,2015(6):25-28.
[9]顾鑫,熊炼.数字标准平台中海量时空小文件合并策略研究[J].计算机应用研究,2014,31(11):3340-3343.
(责任编辑杨继森)
Design and Development of Target Damage Calculating Model Base System
JING Xiao-yong1, LI Hong-wei2, WANG Yan-na2, MA Zhao-ye2
(1.The No. 92351stTroop of PLA, Sanya 527000, China;2.Field Engineering College, PLA University of Science and Technology, Nanjing 210007, China)
There are many models for battle target damage calculating. These models lack of uniform managing and cannot provide effective analyzing service for various military training systems. Battle target damage calculating model base system was designed and constructed to solute the problem, in which RDS was used to simulate XML and to avoid generating large scale little file. The model base system tends to easy carrying out, is propitious to manage mass,complex,flexible model system, and can provide target damage calculating model service for various military training system through UDP,RTI or software bus.
damage; model base; relational database
2016-01-30;
2016-02-25
敬小勇(1976—),男,工程师,主要从事系统仿真与评估研究。
10.11809/scbgxb2016.08.023
format:JING Xiao-yong, LI Hong-wei, WANG Yan-na, et al.Design and Development of Target Damage Calculating Model Base System[J].Journal of Ordnance Equipment Engineering,2016(8):101-104.
TP391.9
A
2096-2304(2016)08-0101-04
【信息科学与控制工程】