侯国超
(解放军91336部队,河北 秦皇岛 066000)
作战仿真实体是开展作战仿真实验、推演、训练等工作必不可缺的物质基础,是对作战仿真要素及其组织关系的高度抽象,对其进行建模的质量与科学管理已成为当前作战仿真领域研究的关键环节。当前作战仿真实体模型的构建已经覆盖了各个军兵种专业的诸多领域,由于各单位采用的建模手段和技术体制千差万别,导致在进行作战仿真具体应用时实用性不强,往往是不同的应用开发不同的模型,资源浪费严重[1]。考虑军事仿真的现实需求,本文摒弃华而不实、高大前沿的理论方法,一切从用户体验和需求出发[2],提出一种组件化建模方法。
组件化的工作方式信奉独立、完整、自由组合[3],目标就是尽可能把设计与开发中的元素独立化,使它具备完整的局部功能,通过自由组合来构成整个产品,从而满足不同模型粒度的需求,使其在支持不同规模的仿真应用的同时,能够兼具较高的可信度[4]。
作战实体是战场空间中具有特定军事行为能力的对象,这些军事行为需要通过作战实体仿真模型实现。基于作战实体的各项能力,采用组件化建模思想,将作战实体具有的运动能力、感知能力、通信能力、干扰能力、行为能力、数据处理能力、资产管理能力等设计为功能组件,通过组件的合理装配得到作战实体的仿真模型[5],如图1所示。
图1 作战实体仿真模型框架
实体模型是作战实体的集成平台(就像计算机的主板),提供其他组件的集成交互接口以及作战实体与外界的交互接口。
行为组件实现作战实体的指挥决策能力(实现指挥决策过程)及作战行动能力(实现任务执行过程)。行为组件需要处理来自于本作战实体所带传感器的感知报告、来自于通信网络的由上/下/平级发送的命令/报告/请求消息、来自于事件管理器的“非感知事实”态势事件(比如想定初始化、被摧毁、机动到制定地点等)。在这些情况的处理过程中可以调度其它任务组件并与之进行交互。行为组件分为任务能力组件和行为树组件。
任务能力组件是对作战实体某种特定行动或决策实施过程的描述,主要实现相关活动的执行逻辑、流程及异常的处理,如空域巡逻、对地突击、防空指挥、海军搜潜反潜任务能力以及其它各类指挥、作战任务能力。开发任务能力组件前,模型设计人员需事先明确某特定作战实体能够执行的特定行动和决策任务类型。若多个作战实体(如不同类型飞机或水面舰艇等)均具备某种类似的指挥决策或作战行动能力(如机动、巡逻等),可以将这种能力抽象设计成任务能力组件,通过为作战实体配置/移除任务组件而不是将某些能力固化在模型内部,能更灵活地赋予或限制实体的能力。
任务能力组件适合于规则非常确定且流程复杂的行为建模,如空域巡逻、对地突击等,而对于规则多变、流程短小的行为模型,则可以通过行为树模型来实现。行为树组件本身提供了一套完备的行为建模体系,它由一系列原子节点和子行为树组合而成,行为树编辑工具提供了各节点的可视化编辑,包括节点的调用流程及数据流向的可视化编辑,模型开发人员只需描述清楚原子节点的输入和输出参数以及任务的执行逻辑、流程及异常的处理,再由模型使用人员根据实际任务需要,组合出特定的行为树,再装配到实体中即可使用,因此行为树节点越丰富,涵盖的任务越广,可复用程度也越高。
机动组件模拟作战实体的空间移动能力。开发机动组件时,模型设计人员需事先明确某特定作战实体的战场空间(如地面、空中、空间、水面、水下等),实体运动的特性、精细程度、环境因素等,选择合适的运动外推算法,完成相应机动组件的开发[6]。实体建模人员只需根据实际情况让作战实体挂载所使用的机动组件并提供必要的驱动数据,作战实体及其所属组件可以在任何需要运动需求时通过实体向机动组件发送机动控制指令,机动组件根据该需求来完成作战实体在空间上的移动,同时也会主动将运动过程中的一些情况(比如路径点变化)通过事件通知作战实体,并将最新的位置状态信息(如速度、位置、姿态等)更新至所属的作战实体;作战实体及其所属组件也可以在任何有运动信息需求的地方调用实体的查询接口来获取关注的信息(如速度、位置等)[7]。
传感器组件模拟作战实体的探测能力,是对雷达、可见光、红外、声纳、人体感知器官等类型探测设备的功能模拟。传感器组件的发现/丢失目标事件是其本身经过周期性探测获得的,进而将发现目标上报实体模型,由实体模型负责对目标进行下一步处理。开发传感器组件时,模型设计人员需事先明确要开发的传感器类型及相应的探测算法等,完成开发实现,建模人员需根据实际情况让作战实体挂载所使用的传感器组件并提供必要的驱动数据,同时处理传感器发送的探测报告。
通信设备组件是实体间完成通信的重要设备组件,模拟了作战实体的通信能力,是对有线、无线(微波、超短波、短波、高速电台等)通信设备等功能模拟。当作战实体需要向其它实体发送消息时,在指定消息类型、消息内容及消息接收者后直接调用实体模型的消息发送接口;当其它作战实体向自己发送消息时,目标实体模型将通过通信设备的入网情况,模拟网络传输延迟后将消息送至本实体的消息处理接口,建模人员需要在各消息处理接口中添加处理逻辑。通信设备组件让实体拥有收发消息的能力,但实体间的通信效果(联通性和延迟)不取决于通信设备组件本身,而取决于网络仿真模型。
干扰设备组件模拟作战实体的电子干扰能力,主要针对传感器、通信设备、GPS等干扰功能模拟。干扰设备组件周期性地向指定方向发送辐射数据,通过底层提供的辐射源注册机制,将干扰设备注册成为辐射源。目标电子设备通过搜索周围的辐射源,调用干扰处理算法计算辐射数据对自己的干扰效果。因此,开发干扰设备组件时,模型设计人员确定辐射数据的构成,并将自身注册为辐射源,被辐射电子设备给出对自身辐射计算的效果算法,完成该模型及相关模型被干扰计算的开发实现,建模人员需根据实际情况让作战实体挂载所使用的干扰设备组件并提供必要的驱动数据。
数据处理组件模拟作战实体的情报数据处理能力,主要针对传感器探测、下级上报的情报信息进行数据融合处理。数据处理组件管理未处理情报数据表和已处理情报数据表,通过周期性检查所在实体接收到的和所在实体搭载的传感器探测产生的情报数据,调用数据融合算法处理情报,生成或更新已有情报数据。开发数据处理组件时,模型开发人员需要在模型设计工具提供的建模框架的基础上,添加相应的数据融合算法,或者继承修改其他算法接口(如更新情报、情报编批等接口),即可完成数据处理组件的开发,底层建模框架已完成数据处理交互实现。
资产管理器管理作战实体所拥有的资产(如装备、物质、设施、人员等),实现资产的查询、存储、消耗和预留等管理功能。战场空间中所有被作战实体持有、占据、存储、装载和使用的资源,被称之为作战实体的资产,如作战飞机装载的弹药和油料。资产在仿真过程中的存在形态仅是资源的属性数据集。资产作为作战实体所持有和使用的资源,体现和约束了作战实体的军事行为能力。作战实体建模时可通过资产管理器配置不同类型、数量的资产,以体现作战实体本身所应具备的打击、探测、运输、通信等各种行为能力。
作战实体模型是在底层仿真运行支撑平台的调度和服务支持下运行的,如图2所示。图2左边是仿真引擎的调度逻辑,中间是实体模型框架核心接口,右边是组件模型。
图2 模型与仿真引擎的调用关系图
仿真开始后,仿真引擎首先加载动态库并对其进行初始化。实体模型的加载及初始化接口在响应仿真引擎的这项调度时,除了完成指控关系绑定、自身属性设置、初始任务设置、初始战场态势等作战实体层面初始化工作外[8],还会要求所属的其他组件也作相应的初始化工作,并向仿真引擎的事件管理器提交初始化事件。
然后,启动仿真循环,不断对事件列表中的头事件进行处理并在处理完成后删除这个头事件,直到事件列表为空。在这个过程中,实体模型通过不断提交事件完成相关功能模块的处理,同时调度所属的其他组件模型执行相应接口。例如,通过机动组件的机动解算完成实体位置、姿态信息的更新,通过传感器组件探测产生原始情报触发实体模型的探测报告处理模块,实体间收发信息则需要通过通信设备及所属网络模型完成消息的传递,此外,还有模型运行过程中产生的态势及周期性事件等。仿真循环结束后,注销卸载模型动态库,同时通知实体模型进行仿真结束处理,除了完成内存清理、实体注销等作战实体层面的清理工作外,还会要求其他组件也作相应的清理工作。
模型的运行流程如图3所示,描述了从仿真开始到结束整个过程中,模型参与的各个阶段。
图3 模型运行流程图
仿真运行开始后,首先完成引擎的初始化,主要包括创建并初始化仿真框架、初始化各个管理器(如时间管理器、对象管理器、战场管理器、服务管理器等),然后加载模型动态库,加载模型基础数据,加载运行的想定,并根据想定中包含的实体数结合所在计算机的CPU性能,为各实体均匀分配运行簇,对应具体的事件管理器,然后启动时间管理器,调度模型的初始化接口,完成初始事件的提交,接着进入事件队列的处理循环,期间引擎会处理模型发出的交互、根据用户设置采集模型数据(初始数据、运行期数据等),直到仿真结束时间,执行仿真结束处理,包括引擎各个模块的清理工作、模型的卸载以及内存资源的回收等,最后整个仿真运行结束[9]。
作战实体在仿真运行过程当中,不可避免地需要同其他实体进行交互,组件化建模必须要解决组装之后模型内部各组件间的交互问题,如图4所示。XSIM建模框架将模型间的交互方式分为3种,分别是消息、控制指令和态势,分别设计了各自的定义标准及接口实现,符合框架高内聚松耦合的特性,各个组件模型之间、实体与实体之间的所有交互均可通过这3种方式完成[10]。
图4 模型间的交互方法
消息是实体之间真实通信的方式,可仿真战术指令的收发、情报数据的共享等。真实的战场环境中,消息一定要通过实体的通信设备发出,经由网络最终到达接收端的通信设备,因此本文设计方法建模框架中给出了这一流程的完整实现,并给出了图形化的编辑界面,供用户在编辑想定时添加通信设备组件和网络组件,组织网系结构。实体间消息收发过程如图5所示。
图5 实体间消息收发过程
组件化模型仿真的过程中,除了实体模型本身和行为组件可仿真作战人员的逻辑分析、规划部署等能力外,不可或缺地需要多种功能装备组件的配合。装备组件何时工作、以怎样的方式工作、如何相互配合工作等问题就需要“控制指令”来解决,在合适的时机分别向各个装备组件发出控制指令,就可达到协调多个组件共同实现某种作战能力的目的。所以,控制指令实现的是同一实体内部对装备组件的操作,如满足条件打开火控雷达,这时的实现就是向火控雷达组件发送一条类型为“开机”的控制指令。
一般在实体模型或行为模型中实现对装备组件的控制,但只有获取到控制权限才可以向其发送控制指令,控制行为完成后,再释放掉控制权。所以,对装备的控制过程一般分为获取控制权、发送控制指令及释放掉控制权这3个步骤。这种控制权竞争模式在多个行为并行执行时是十分必要的,如图6所示。
图6 实体内部控制指令产生及处理
态势指战场环境中的状态及形式,主要用于记录在仿真过程中产生的关键事件,如实体加入仿真、实体消亡、武器发射等。从仿真元素类继承的所有对象均可产生态势,而具体哪些事件可以作为态势记录下来,完全由模型开发者的应用需求决定。例如某个设备开机时,态势显示工具需要显示其开始状态,就要通过记录的态势“设备开机”使绘制工具感知;又例如某实体死亡时,友方或对方需要根据这一事实做出反应,该实体就需要记录“实体死亡”态势。
记录的态势可用于界面绘制工作、后期对态势的统计及分析工作,也可以作为基于真实事件感知模式的一种模型交互仿真。这种感知能力基于作战人员的分析和处理需求,所以实体模型类及行为组件模型中包含感知处理态势能力的接口。图7为态势记录与感知处理过程。
图7 态势记录与感知处理过程
图8、图9为通过本文作战仿真实体模型组件化构建方法的实现案件,模型结构简洁明了,符合实装装配逻辑。简单表现了由几个模型组件自由组合便可形成一个实体模型的过程,仿真系统可以调用实体模型开始一次仿真推演,整个仿真过程中模型内部和模型之间自由解算、分工合作、信息交互,完成作战兵力仿真模拟动作,充分证明了该方法的实用性。
图8 通过界面添加飞机实体模型
图9 通过界面装配飞机模型组件
本文提出的建模方法从作战仿真实践出发,模型体系健全,能够覆盖全部作战实体和装备,具有很强的操作性和实用性,真正解决了当前的仿真模型体系构建的难点问题,可以直接面向用户[11]。