空中作战决策行为树建模与仿真

2019-03-01 02:00纪梦琪朱一凡
指挥控制与仿真 2019年1期
关键词:参考点建模条件

董 倩,纪梦琪,朱一凡,杨 峰

(国防科技大学系统工程学院,湖南 长沙 410073)

空中作战是航空兵在空中攻击或抗击敌方的行动,目的是消灭敌空中兵力集团,夺取制空权,保障己方空中目标安全和空中行动自由等。空中作战能有效地摧毁敌方军事实力,削弱其战争潜力,对战争的进程和结局有重大影响,是现代战争的重要作战样式。作战仿真推演作为作战活动的一种相似性复现,在提高指挥人员谋略水平、辅助作战决策和进行战术战法研究与验证等方面发挥着越来越重要的作用[1]。

空中作战过程的建模与仿真是一个复杂的系统工程,包括物理系统建模和决策建模[2]。物理系统建模主要是基于物理机理对作战实体的作战行为和过程建模;决策建模包括所有与空中作战相关的决策问题,实现在当前有限的敌情、我情和环境信息支持下,对作战态势进行评估,确定作战目标,选择战法和作战样式,并进行合理的作战资源分配,制定、评估和优化作战方案并实时监控和动态调整[2]。作战决策是整个作战指挥活动的核心,对其进行建模与仿真研究具有重要意义。

传统的作战决策研究主要从以下两个方面进行:

1) 物理模型内部的自主决策算法:依靠固化在模型中的决策功能直接实现仿真模型对战场态势的理解,并形成相应的决策结果[3]。典型的应用是基于多Agent的决策建模,通过构建多Agent间的协同规划与合作机制来实现自主决策。例如,郭智杰等[4]提出一种改进的合同网协议下的多Agent决策方法,并应用于防空武器的协同作战决策中。Mert E等[5]提出三种不同的多Agent模型来模拟陆地作战行动。

2) 模型外部的自主决策模块:通过录入作战指挥人员的决策知识和经验,支撑模型在仿真运行中的决策过程,典型的如基于规则和基于条件的决策建模方法。彭勇[6]提出了一种基于数据化作战方案的自动指挥决策建模方法,该模型本质上是一个改进的基于产生式规则的专家系统,其中的知识库既可以面向作战指挥人员,又可以随着实验问题的变化不断更新。孙鹏等[3]提出了一种基于态势描述的陆军作战仿真决策模型,该方法的本质是一种基于条件的决策方法。

从建模效率上看,模型内部的自主决策方法开发难度较大,且军事专家的知识和经验较难在模型中得到有效地利用,而模型外部的自主决策方法虽然可以充分利用作战指挥人员的知识和经验,但传统的决策方法往往基于规则决策如有限状态机,当状态空间规模增大时,规则和条件的描述空间也不断增加,有限状态机很难维护。行为树作为有限状态机的改进,支持增加单个行为节点或行为子树,具有模块化和可复用特性。本文结合模型内部与模型外部自主决策方法,以空中作战为背景,分析了空中作战决策仿真的一般过程,将其分层过程划分为模型外部自主决策过程和模型内部自主决策过程,并梳理了模型外部自主决策的一般规则,构建了空中作战决策仿真行为树。然后基于Lua脚本语言,设计算法流程实现模型外部自主决策,借助作战仿真推演系统OCEAN,实现模型内部自主决策。最后以某空中作战过程为案例,对该方法进行了演示验证。

1 行为树概念与建模

1.1 行为树

行为树是有限状态机的改进,有限状态机中的每个节点表示一种状态,而行为树中的节点表示一个动作。引入行为树是因为当系统规模增大时,有限状态机的状态增加,转换线不可控,有限状态机较难维护。而行为树支持增加单个行为节点或行为子树,当系统规模增大时,同样适用。行为树的模块化与可复用性使得行为树成为一种非常有力的AI决策工具。Puga等将案例推理应用到行为树中,基本实现NPC(Non-Player-Controlled Character非玩家控制角色)依据相似案例匹配来实现自主决策[7],取得了较好的效果。

1.2 行为树建模

行为树可以描述为由边和节点组成的有组织层次的树状结构,可以表示为二元组BT=:

节点集合V=A∪C∪N∪τ,包括动作节点集A,条件节点集C,逻辑节点集N以及根节点τ。其中动作节点集和条件节点集是行为树中的叶节点,而逻辑节点是非叶节点。

边集合E⊂V×V,∀∈E,vi,vj∈V,则vi是vj的父节点,vj是vi的子节点。子节点的执行结果由其父节点进行管理控制。

本文将从节点、返回状态和树的遍历三个方面介绍行为树的建模要素。

1) 节点。行为树节点包括根节点、动作节点集、条件节点集、逻辑节点集。其中根节点以一定频率向其子节点发送使能信号(Tick),通过逻辑节点逐层传递给动作节点或条件节点,并接收节点的返回结果。动作节点(Action)改变系统状态。条件节点(Condition)查询当前状态。逻辑节点控制整个行为树的执行逻辑,负责向下传递使能信号(Tick)以及向上汇报执行情况。常用的逻辑节点有修饰节点(Decorator)、顺序节点(Sequence)、选择节点(Selector)以及并行节点(Parallel))。各个节点说明如下:

a) 动作节点:用于完成某动作或任务的节点,通常是行为树的叶子节点;

b) 条件节点:检查条件是否满足,满足则返回“真”,否则返回“假”;

c) 修饰节点:一般用来指定额外的附加条件,比如,时间间隔、次数和频率等;

d) 顺序节点:按从左到右的顺序执行完每个子节点或子树。若中途返回失败或者错误则停止。常用的是改进后的带优先级或带权重的顺序节点,即先运行较为重要或影响较大的子节点;

e) 选择节点:按从左到右的顺序选择一个执行条件为真的子节点执行,遇到第一个执行成功或正在执行的子节点则立即返回当前子节点结果,并结束选择操作。如果所有子节点均返回失败,则当前执行节点也为失败。常用的是改进后的带优先级或概率值的选择节点,即优先选择优先级较高的子节点执行或者按概率抽样来执行子节点或子树;

f) 并行节点:并行地执行所有子节点或子树。

行为树节点设计简单且易于改进,随着行为树的广泛应用,出现了许多有所改进的节点类型,如带时间片的顺序节点和选择节点、带反相器节点等。

2) 返回结果状态。节点执行会得到返回结果,返回结果的状态有Success、Failed、Wait和Error,其中

a) Success状态:条件满足或行为已经成功执行完成,返回成功状态;

b) Failed状态:条件不满足或行为未能得到成功执行,返回失败状态;

c) Wait状态:返回等待状态表示行为还未执行完成,还需再次调用使之完成;

d) Error状态:发生错误且已经显式地处理。

3) 树的遍历。行为树的基本实现中,系统每一帧从树的根部开始遍历,按照从上至下,从左至右的顺序检测每个节点是否被激活,直到到达当前激活节点刷新行为树。

2 空中作战决策仿真的行为树建模

2.1 空中作战决策仿真过程分析

空中作战的决策过程实质上是一个动态的条件判断、行为规划和调整的过程[8]。空中作战行为可以从使命、任务和行动3个层次来理解和描述,如图1所示。

图1 空中作战决策框架

自顶向下为决策过程,模型外部自主决策是任务决策Agent依据作战指挥人员录入的知识和规则等来支持仿真运行中的顶层决策过程,将使命任务分配到各个机群。模型内部自主决策包括多Agent间的行动协同及基本行动序列的实现,主要通过作战仿真推演系统内部结合物理模型来设计实现。

自底向上为实现过程,基本行动序列的组合可以完成单机任务,机群内部通过一定协调方式完成机群任务,最后实现作战使命任务。

本文采用行为树对任务决策Agent模型外部自主决策过程进行建模,而模型内部自主决策由作战仿真推演系统实现。通过模型内部自主决策和模型外部自主决策相结合来实现智能决策。

2.2 空中作战的模型外部自主决策规则

本文建立的基于行为树的模型外部自主决策模型,需要从作战仿真推演系统中读取战场态势、兵力资源等信息,并将决策结果即任务反馈给作战仿真推演系统,作战仿真推演系统通过模型内部自主决策模型来实现机群内部的自主协同决策及个体动作。决策规则由条件空间和命令空间组成,本文将决策所需的输入信息(即从作战仿真推演系统中获取的信息)作为规则的条件空间,将决策的输出信息即任务作为规则的命令空间。

1) 决策规则的条件空间

参考文献[9],条件空间的描述维度主要来源于使命任务、作战能力和威胁态势三大方面。

a)使命任务:包括计划时机条件、任务类型条件和使命任务条件等。

b)作战能力:包括可用武器条件、可用能量条件、可用对抗措施条件、自身状态条件等(需要根据OCEAN再进行更改)。

c)威胁态势:包括目标发现条件、目标类型与数量条件、目标方位条件、目标距离条件、目标攻击状态条件、目标防御状态条件、武器攻击可行性条件和威胁告警条件等。

2) 决策规则的命令空间

随着高技术武器装备和指挥控制系统的发展,空中作战过程更加复杂,涉及多类型多数量的作战行动和作战任务,为了有效阐述本文方法,对空中作战过程进行合理简化,选择典型的空中作战任务进行说明,本文主要考虑5类空中作战任务:创建地导、水面和空中禁航区、侦察任务、打击任务、压制敌防空任务、加油任务,其中压制敌防空和加油任务均属于支援任务。

任务可用五元组来表示,以侦察任务为例:

recon-mission< type, GUID, side, rps, free inventory, contacts, state>,其中type对应对空侦察、对地侦察、水面目标及水下目标侦察四种类别,GUID为当前任务的全局唯一标识,side为该任务所属的对阵方,rps为侦察区域的参考点,free inventory为当前任务可用武器库存,contacts为当前侦察区内的目标列表,state为当前任务状态,包括发现新目标、更新侦察区域和任务完成等。

2.3 构建空中决策仿真行为树

任务决策Agent的决策过程在于依据获取的战场态势信息及己方武器装备情况,来进行顶层的任务分配,这包括战场态势信息的实时监控与任务规划。因此空中决策仿真行为树包括监控AI子树(图2)和规划AI子树(图3),其中监控AI子树负责监控实时的战场态势并创建相应的禁航区,规划AI子树负责根据实时的战场态势及己方兵力、武器装备情况来进行任务分配。同时,各个行为树的行为节点是相应的空中作战任务,任务有许多类型和选项,下面将结合行为树进行说明。

图2 监控AI子树

图3 规划AI子树

监控AI子树包括4个选择节点(菱形框表示)和6个行为节点(椭圆表示),选择节点负责控制监控AI子树的逻辑,监控地导阵地、水面舰艇和空中作战的禁航区。行为节点为相应的任务,包括更新地导阵地禁航区、创建地导阵地禁航区、更新水面舰艇禁航区、创建水面舰艇禁航区、更新空中作战禁航区和创建空中作战禁航区。

规划AI子树包括7个选择节点(菱形框表示)、2个顺序节点(矩形框表示)、2个条件节点(带双横的矩形框表示)和8个行为节点(椭圆表示)。规划AI节点依据当前态势情况,判断是否满足攻击条件节点或防御条件节点的条件来选择执行攻击还是防御,在攻击或防御选择节点下进行任务选择。根据空中作战的特点,我们将任务划分为4类:侦察任务、打击任务、防卫任务、加油任务和压制敌防空任务,分别对应了更新或创建的行为节点。

通过行为树建模方法,我们初步实现了一般空中作战决策过程的建模,该方法简单清晰,军事人员可以依据自身军事知识和经验扩展该树。同时,该建模方法可以推广应用到一般作战过程的建模中。

3 基于Lua脚本语言的行为树实现

3.1 Lua脚本语言介绍

脚本语言是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言[10]。Lua是一个轻量级的、独立的、可扩展的嵌入式脚本语言,可以嵌入到应用程序中,为应用程序提供灵活的扩展和定制功能。本文选择Lua脚本语言来实现行为树,原因如下:

1) 跨平台:Lua使用标准C语言实现,几乎在所有操作系统和平台上都可以编译。

2) 轻量级:Lua语言只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。

3) 双向调用:Lua和C/C++函数之间可以相互调用。

本文选择Lua脚本语言作为实现行为树的开发工具,充分利用Lua脚本语言的优势:

1) 实现了空中作战决策行为树的逻辑节点及动作节点功能;

2) 实现了作战仿真推演系统OCEAN调用基于行为树的Lua脚本,完成模型外部的自主空中作战决策;

3) 实现了Lua脚本调用作战仿真推演系统OCEAN核心模块的接口,实现了外部系统动态访问系统内核,为实现行为树提供了有力保障。

3.2 作战仿真推演系统OCEAN调度行为树流程设计

作战仿真推演系统OCEAN具有强大的集成场景编辑器,可用于实时模拟海空军作战行动。OCEAN调度行为树是通过决策事件来实现的。事件=触发器+动作,其中触发器是动作发生的条件,满足该条件时,将会触发触发器,并且改变触发器的状态。当触发器的状态发生改变时,则会产生对应的事件。当某个事件产生时,需要采取对应的处理措施,即动作。

决策事件分为内部决策事件和外部决策事件两大类。其中内部决策事件是由物理模型实现,包括武器发射、任务完成、目标丢失等。外部决策事件包括仿真事件、条件事件和计时事件三大类。本文设计了两类外部决策事件:一是加载行为树的Lua脚本,二是更新行为树。

1) 加载行为树的Lua脚本:该事件为条件事件,当满足“加载想定完成”条件时,触发该事件,执行“加载数据库和加载Lua脚本实现的行为树”动作,其中Lua脚本实现的行为树流程如图4所示。

图4 Lua脚本实现行为树流程

依据上图流程初始化当前对阵方的空中作战决策行为树,分别创建规划行为子树和监控行为子树,并管理各个行为树节点。3.3节将对其中重要函数的设计进行说明。

2) 更新行为树:该事件为仿真事件,在仿真时钟内定时更新行为树。

3.3 基于Lua脚本语言的函数实现

该行为树涉及的函数大致分为三类:实现基本行为树操作的函数、获取当前对阵方态势及兵力信息的函数和更新创建相关任务的函数。

1) 实现基本行为树操作的函数:这包括创建行为树节点、为当前行为树增加子节点以及顺序节点等逻辑节点的实现。这里以创建行为树节点(伪代码1)和顺序节点(伪代码2)的实现为例进行说明。

伪代码1:创建行为树节点函数

Function创建行为树节点(动作,全局唯一标识,键)

{

创建实例instance表{};

继承行为树类BT的属性和方法;

创建实例instance的子节点表{};

获取全局唯一标识;

获取实例对应的键;

获取节点返回状态;

return实例instance;

}

创建节点时需要指定该节点的类型(选择、顺序或动作等),给定全局唯一标识符及键(键值是相对应的,值的形式多样,键用于存入内存)。每个行为树节点都是一个table(表),用于存储该节点的相关信息,包括元表、全局唯一标识符、子节点和运行结果等。

伪代码2:顺序节点函数

Function顺序节点( )

{

for 当前节点的子节点表do

if (子节点返回状态==fail) then

return 当前节点返回状态为fail

end

end

return 当前节点返回状态为success

}

在顺序节点的子节点中遍历子节点的结果,当且仅当顺序节点的所有子节点均返回为“真”时,该节点才返回为“真”。

2)获取对阵方态势及兵力信息的函数:这包括预测目标的位置信息、根据给定的位置建立侦察区域、确定武器装备的类型、获取己方各类型兵力库存和获取不明敌方目标等。这里以获取可用战斗机库存为例进行说明,如伪代码3所示。

伪代码3:获取战斗机库存函数

Function 获取可用战斗机库存 (当前对阵方键)

{

获取可用战斗机全局唯一标识GetGUID ( );

return 可用战斗机全局唯一标识;

}

其中GetGUID()函数的伪代码如下所示。

伪代码4:GetGUID ( )函数

Function 获取全局唯一标识 (键)

{

获取键值对应的实例;

if 实例==nil then

实例为空;

end

return 实例

}

获取战斗机库存包括获取空闲的战斗机和执行任务的战斗机的信息。依据对阵方信息(键)及想要获得的信息(键)(空闲/忙碌)获得值(在此例中是字符串,表示战斗机),如果存在,则返回战斗机库存的table(表),否则返回空表。

3)更新创建相关任务的函数:相关任务在行为树建模时已经得到定义,这里以创建空中打击任务为例进行说明,如伪代码5所示。

伪代码5:空中打击任务函数

Function 创建空中打击任务 ( )

{

获取当前对阵方;

获取当前已有的空中打击任务列表;

获取当前位置参考点坐标;

获取当前可用库存;

获取当前目标;

if 当前任务数 > 0 or可用库存数 == 0 or 当前目标数 == 0 then

return false;

end

获取目标区域;

设置参考点;

创建打击任务;

设置任务规则;

分配可用库存;

增加全局唯一标识;

设置时间戳;

return true;

end

}

首先,获取敌我双方位置、库存、目标等变量信息,判断是否满足创建新任务的条件:若已存在任务或库存为0或敌方力量为0时,则不能创建新的打击任务。然后,根据已知信息放置参考点,创建打击任务。最后,为打击任务分配可用兵力并创建全局唯一标识符,返回任务创建成功。

4 案例实现及分析

本文以某空中作战为背景,红方由地面防空部队、水面舰艇和战斗机组成,蓝方的任务是突破由大量战斗机巡逻警戒的反介入/区域拒止环境。(反介入:敌军抑制我军进入作战区域的行为;区域拒止:敌军试图拒止我军在其控制区域内行动自由的行为)。蓝方的空中作战决策过程由前文所述的行为树建模实现,本文将借助作战仿真推演平台OCEAN对蓝方的空中作战决策进行仿真。将Lua脚本语言实现的行为树加载至该作战仿真推演软件中,并依据3.2节的内容设置加载行为树和更新行为树事件。

选择对阵方为蓝方,启动推演后,触发加载行为树的Lua脚本事件,该事件的动作是执行Lua脚本,按照图4流程实现空中作战决策行为树。仿真推演过程中的消息输出如图5所示。

首先是执行规划行为树,即创建任务并分配兵力资源。蓝方首先读取敌我双方的信息,依据态势自行创建任务(白色输出消息),包括侦察任务(a-rec-miss)、支援任务(a-aew-sup-miss)和加油任务(a-tan-sup-miss)等,并通过读取兵力资源信息,为各个任务分配兵力资源(绿色输出消息),参与任务的各战机分别执行探测(黄色输出消息)、打击、支援和加油等任务。具体的战场态势显示如图6所示。

图6中,红色框图为执行空中决策行为树所建立的任务区域,包括侦察任务和打击任务等,同时依据行为树为各任务分配战机,战机从基地按自行规划航线(白色直线)到达任务区域执行相关任务。每个战机具有探测功能(圆形实线表示)。

其次是执行监控行为树,即监控战场态势并更新相关任务。以图6中的左侧防空任务(a-aaw-miss-1)1为例,在推演开始时,该任务区域的4个参考点坐标为:参考点1(55°39′24″N,154°01′43″E)、参考点2(55°39′23″N,166°34′00″E)、参考点3(49°29′39″N,166°37′19″E)、参考点4(49°26′59″N,154°01′02″E)。

随着战场态势的变化,该任务得到更新,如图7所示,更新后的任务区域的4个参考点坐标为:参考点1(56°30′57″N,151°30′38″E)、参考点2(56°33′34″N,165°50′23″E)、参考点3(49°23′18″N,165°41′42″E)、参考点4(55°23′37″N,156°56′32″E)。

图5 仿真推演消息输出

图6 仿真推演态势显示

图7 战场态势更新图

行为树实现的空中作战决策不仅可以完成相关侦察巡逻任务,同时还可以进行压制敌防空和打击等任务,具有较好的自主决策能力。

5 结束语

本文在分析了传统空中作战决策研究的基础上,结合实际应用,提出了空中作战决策的行为树建模与仿真方法,当状态空间增大时,只需要在原来的行为树基础上增加子树即可。该方法具有一定的可行性和有效性,能够实现自主决策。

猜你喜欢
参考点建模条件
有限制条件的排列应用题
基于FLUENT的下击暴流三维风场建模
《符号建模论》评介
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
数控机床回参考点故障诊断及维修
求距求值方程建模
基于多目标蚁群算法的稳定参考点选择
为什么夏天的雨最多
“虎虎生威”的隐含条件
简析线性电路电位与电压的关系