APP下载

基于XML语言的导弹防御系统HSTPN博弈模型存储与加载

2018-12-13陈佳铭王风立邓君湘曹瑞珉

计算机应用与软件 2018年12期
关键词:数据结构导弹节点

陈佳铭 王风立 邓君湘 曹瑞珉

1(东北大学中荷生物医学与信息工程学院 辽宁 沈阳 110819)2(海信网络科技股份有限公司 山东 青岛 266071)3(沈阳特种设备检测研究院 辽宁 沈阳 110035)4(东北大学机械工程与自动化学院 辽宁 沈阳 110819)

0 引 言

导弹防御问题是军事领域研究的一项重要内容,其系统性能测试耗资巨大,不易反复进行,因此,计算机仿真技术大量应用于导弹防御博弈系统性能测试领域[1]。现有的导弹防御系统建模仿真软件侧重于系统物理层建模,缺乏对系统混杂特性的刻画,开源性差,无法进行深入修改[2-5]。Petri网是一种简洁的、图形化的网络模型,它既能表示静态的系统拓扑结构,也能用于系统动态行为的仿真。然而,传统Petri网并不能全面描述系统中连续、随机、时延和冲突等混杂特性。混杂随机时延Petri网HSTPN[6]是基于条件事件网改进的高级Petri网模型,其含有离散、连续、随机、时延和控制5种库所,能有效描述系统中存在的多种混杂特性, 目前已成功应用于梯级水库防洪控制系统[7]。HSTPN能够有效描述导弹防御系统博弈过程中的离散、连续、随机、时延和冲突特性。因此有必要基于HSTPN模型开发一套导弹防御系统博弈仿真软件。本文针对其仿真系统的开发,讨论模型的存储与加载方法。

1 博弈仿真软件功能设计

导弹防御系统博弈仿真软件的功能可划分为如图1所示的4类功能,包括导弹防御系统博弈过程HSTPN模型搭建功能(以下简称建模功能)、导弹防御系统HSTPN博弈模型推演功能(以下简称推演功能)、仿真模型的存储与加载功能和仿真数据输出功能。

图1 软件功能划分

2 软件分层架构设计

导弹防御系统博弈仿真软件的整体架构如图2所示。仿真软件的架构包括人机交互层、数据结构层、推演仿真层及文件存储层。

图2 导弹防御系统博弈仿真软件整体架构

2.1 人机交互层

人机交互层用于实现软件的人机交互界面,将用户操作信息转化为数据,存储在数据结构层相应的数据结构中。通过不断监测数据结构层中数据的变化,并转化为人机交互层中各种图形的改变,从而完成模型状态、推演动画及数据展示等功能。用户通过创建HSTPN模型的节点,设置仿真参数,基于Lua语言进行连续方程编写等操作完成网络模型的创建,并通过点击按钮进行模型推演仿真、控制仿真进程、模型存储、模型加载、数据存储等操作[9]。

2.2 数据结构层

数据结构层包括导弹防御系统博弈仿真软件建模、仿真、数据输出等过程中用到的数据结构。在HSTPN博弈模型推演过程中不断接收博弈模型的数据变化信息、仿真输出数据。数据结构层接收人机交互层的操作信息,并将其转换成数据存储在对应的数据结构中。

2.3 推演仿真层

推演仿真层用于读取数据结构层存储的博弈模型的数据信息。基于HSTPN博弈模型推演引擎完成模型推演仿真,并将推演过程中的数据实时传递回数据结构层。利用推演动画展示程序实时地驱使相应的数据传递给人机交互层,引起人机交互层各图形的变化,从而实现推演动画展示的功能。利用仿真数据输出程序驱动数据结构层中接收的仿真数据赋值给相应的数据输出节点。

2.4 文件存储层

文件存储层用于实现模型文件的存储与加载、仿真数据的存储功能。通过读取数据结构层存储的模型数据或仿真数据,将其写入文件并存储在电脑磁盘中。当用户通过点击人机交互界面上的“打开”按钮,文件存储层读取存储电脑磁盘文件中的信息,并将其转换成相应的数据,重新存储于数据结构层。

3 模型存储与加载功能设计

导弹防御系统博弈仿真软件要求模型存储与加载功能能够完成以下两个具体操作:1) 将用户搭建好的HSTPN博弈模型以文件的形式存储于电脑磁盘;2) 能够读取磁盘中存储的模型文件,并将模型信息重新加载到内存中。为实现上述功能,本文基于XML设计了一种模型存储文件,并实现该文件的读写操作,进而实现模型的存储与加载功能。

3.1 XML与TinyXML

3.1.1 XML

用户可以创建要保存的内容,然后使用特定标记来标记它,从而使每个单词、短语或块成为可识别、可分类的信息。XML文件由内容和标记组成。XML标记分开始标记和结束标记,一般成对使用。XML可简便、有效地实现节点信息、数据的保存。

3.1.2 TinyXML解析器

TinyXML是一款基于文档对象模型的XML解析器,简单易用且小巧玲珑,非常适合存储简单数据、配置文件等数据量不是很大的操作[11]。TinyXML是基于C++编写的,它为用户提供了大量的C++接口,支持对XML的读、写、插入和删除等操作。本文软件的模型文件存储与加载的功能基于TinyXML解析器设计。

3.2 存储文件结构

导弹防御系统HSTPN博弈模型包含3种基本元素:状态节点、事件节点和有向弧。基于XML设计的存储文件应能够详细且简便地保存HSTPN博弈模型的全部信息。本文设计的模型存储文件以hst作为后缀名,因此,将软件的模型存储文件称为hst文件。导弹防御系统HSTPN博弈模型存储文件结构如图3所示。

图3 HSTPN博弈模型存储文件结构

1) 根节点:用于存储仿真文件本身的基本信息,如模型存储位置等。

2) 一级子节点:共三个,分别表示要存储的HSTPN博弈模型状态节点集合、事件节点集合和有向弧集合。

3) 二级子节点:用于存储具体的状态节点、事件节点和有向弧的名称。

4) 二级子节点的属性值:用于存储具体的数据信息,如概率阈值、时间阈值等。

3.3 模型存储与加载

3.3.1 模型存储流程

模型存储过程本质是按照hst文件的结构依次将缓存于内存中的模型信息写入至hst文件的过程。模型存储的实现流程如图4所示。

图4 模型存储实现流程

当用户点击人机交互界面的“保存”按钮后,弹出一个保存对话框;用户选择存储路径、输入文件名,并点击对话框中“保存”按钮,此时视图类获取到存储路径和文件名,并传递给文档类;文档类调用SaveModel方法将数据写入hst文件。

3.3.2 模型加载流程

模型的加载过程本质是将存储于hst文件中的模型信息重新读取到文档类相应数据结构中的过程。模型加载的实现流程如图5所示。

当用户点击人机交互界面的“打开”按钮后,弹出一个打开对话框;用户选择待打开的hst文件,点击对话框中“打开”按钮后,视图类获取文件路径及文件名,并传递给文档类;文档类调用LoadModel方法读取hst文件并将读取到的数据赋值到相应的数据结构;文档类通过视图类指针调用Draw方法,在视图中绘制出HSTPN博弈模型,进而呈现给用户。

3.4 案例模型存储与加载

当用户完成模型搭建后,点击界面工具栏中“保存 ”按钮,弹出如图6所示对话框。用户选择好保存路径并输入文件名后,点击“保存”按钮,即可完成模型的存储。

图6 模型文件保存对话框

当用户需要重新加载一个已保存的模型时,用户通过点击界面工具栏上的“打开”按钮,弹出如图7所示的打开对话框。用户选择要加载的模型文件后,点击“打开”按钮,即可将模型重新加载到软件中。

图7 模型打开对话框

4 结 语

本文首先对导弹防御系统博弈仿真软件的功能需求进行分析,并结合MFC“文档-视图类”结构设计了软件的分层架构及程序实现框架。综合上述分析可知,本软件包含的功能主要分为4类:导弹防御系统博弈过程HSTPN模型搭建功能;导弹防御系统HSTPN博弈模型推演功能;仿真模型的存储与加载功能;仿真数据输出功能。在给出基于XML的模型存储文件结构的基础上,设计了模型存储与加载的流程。最后,设计了仿真数据输出功能的流程,并给出了软件基于TinyXML解析器实现模型存储与加载功能的实例。

猜你喜欢

数据结构导弹节点
数据结构线上线下混合教学模式探讨
瞄准未来战争的小型导弹
导弹燃料知多少
重典型应用,明结构关系
概念格的一种并行构造算法
结合概率路由的机会网络自私节点检测算法
采用贪婪启发式的异构WSNs 部分覆盖算法*
为什么会有“数据结构”?
Crosstalk between gut microbiota and antidiabetic drug action
正在发射的岸舰导弹