规则引擎下的舰艇智能兵力决策支持方法研究

时间:2022-06-28 02:39:07

规则引擎下的舰艇智能兵力决策支持方法研究

摘要:针对传统智能兵力作战决策系统存在的可维护性和灵活性不高问题,提出了基于规则引擎构建舰艇智能兵力作战决策系统的方法。分析了舰艇智能兵力作战决策过程,划分了舰艇智能兵力作战行为层次模型,使用开源Java规则引擎 Drools作为决策系统的推理机,将业务层和软件代码层解耦,构建了舰艇智能兵力的作战决策知识库并完成了工程实现,结果表明该方法显著提高了系统开发效率,降低了系统维护的复杂度。

关键词:规则引擎 潜艇Drools Rete 作战决策系统

1、引言

舰艇智能兵力决策支持研究是构建功能完善的舰艇智能兵力,实现舰艇作战仿真系统的关键。传统仿真系统中舰艇智能兵力决策通常以产生式规则表示法[1] ,将兵力决策的知识编写为嵌套的if-else-then程序语句固化在程序代码中,业务逻辑和代码层耦合紧密,一旦开发完成,就不容易变更,使得系统维护性、灵活性和扩展性较差,而现实中兵力作战决策知识却经常随着任务和形势发生变化,军事领域专家也需要对作战规则进行经常性变动, 而且不希望也不需要开发人员进行二次开发。

针对这一问题,本文提出应用Java开源规则引擎Drools构建舰艇智能兵力作战决策系统的方法,将作战决策规则和仿真程序代码分开,将军事领域知识和仿真系统功能实现相分离,以规则形式存储、分类、管理和匹配兵力决策知识,能够有效提高系统开发效率,且易于升级和维护。

2、Drools规则引擎原理及应用

规则引擎源于基于规则的专家系统,规则引擎由规则库(Rule Base)、工作内存(Working Memory)和推理引擎(Inference Engine)三部分组成[2]。具有声明式编程、逻辑与数据分离、速度及可测量性和知识集中化等优点。1

Drools规则引擎运行机制是通过快速检索工作内存(Working Memory)中的对象与加载到其中的各项规则的前件进行匹配,激活符合条件的规则,放入冲突集中。将冲突集中的规则根据规则的优先权排序生成议程(Agenda),从而使优先级高的规则优先触发。规则执行后,规则的后件执行部分会改变加载到内存中的事实对象信息,使议程中一些激活的规则的前提条件不再得到满足,从议程中撤销,并将可能有的新规则被激活加入议程中。推理引擎的推理步骤[3]如下:

(1)将初始事实输入工作记忆( Working Memory)。

(2)使用模式匹配器比较规则库中的规则和事实。

(3)如果执行的规则存在冲突,即同时激活了多个规则,将冲突的规则放入冲突集合。

(4)根据策略去解决冲突,将激活的规则按顺序放入议程。

(5)使用执行引擎执行议程中的规则。重复步骤2-5,直到执行完毕所有议程中的规则。

3、舰艇智能兵力作战决策过程和行为层次划分

舰艇兵力作战决策是指根据作战任务、目标综合信息(包括目标类型、态势、威胁等级和可攻性)和潜艇作战状态及作战过程,确定舰艇应采取的攻击或防御行动,包括作战目标、使用武器类型和攻防作战样式。

3.1舰艇智能兵力作战决策过程

作战决策系统的输入信息包括经过信息融合后的目标综合信息和潜艇当前作战状态信息。潜艇兵力依据目标综合信息和本艇作战状态信息决策就、输出潜艇攻击或防御行动。例如攻击决策输出包括“导弹攻击”、“鱼雷攻击”等。

3.2舰艇智能兵力作战模型层次划分

对于舰艇复杂作战决策过程,对舰艇智能兵力行为进行合理的层次划分,不仅易于智能兵力的复杂行为建模,而且也利于依据不同粒度的行为供军事领域专家合理提炼和抽取规则,并提高仿真系统中规则引擎的运行效率。

按照模型粒度层次思想,将舰艇兵力的战斗行动描述为4个等级层次:使命级(mission),定义舰艇在某一作战想定中的使命,如搜索攻击舰艇、巡逻、布雷等;任务级(Task),如舰艇的航渡到指定区域、对舰搜索、对舰跟踪、对舰防御(鱼雷防御、导弹防御)、对舰攻击(深弹攻击、鱼雷攻击、导弹攻击)、规避撤出等;子任务级(SubTask),如舰艇武器发射准备、占领阵位、武器发射等;原子行为级,如变向、变速、机动方案计算、武器射击诸元计算、目标运动分析等。

4、应用Drools构建舰艇作战决策系统

4.1Drools规则的形式与表示

4.1.1Drools规则的形式

Drools规则引擎[4]的规则采用的是Drl形式的文本文件或者Xml文件,便于打开、查看和编辑。一个规则文件可以存放多个规则,规则文件中还可以存放用户自定义的函数、数据对象及自定义查询等规则可能用到的对象。

Drools中一个规则由名称(name)、属性(attributes)Left Hand Side (LHS)和Right HandSide (RHS)组成,其中LHS由一系列的条件模式组成,可以被事实匹配。当LHS最终的逻辑结果为TRUE时, RHS定义的动作会被执行。其形式如下:

Drools属性用来控制规则执行,在目前Drools5中,规则的属性共有13个[5],这些属性分别适用于不同的场景,如salience控制规则执行优先级,no-loop说明是否允许规则执行一次。Drools的规则前件LHS和后件RHS可以是JAVA或者其他支持语言的代码,构成规则前件的事实可以是关于java对象实例属性判断的逻辑组合,而后件的动作在代码上可以表现为java对象实例的方法调用,这为Drools应用于基于java语言构建的仿真系统提供了极大便利,当然Drools也可以应用于.net的应用程序[4]。

4.1.2舰艇智能兵力作战规则事实与决策态势信息及表示

应用Drools规则引擎构建潜艇智能兵力作战决策,其规则事实体现为潜艇智能兵力的战场态势信息,由于潜艇兵力通常以单艇作战方式遂行作战任务,潜艇智能兵力决策事实主要分为目标综合信息事实、潜艇作战状态事实和作战环境事实,这些事实用Java类对象来实现,类对象仅包含对象本身的属性和属性的get和set方法,而不包含对象之间的约束关系和逻辑。这些事实对象,通过Drools规则引擎的StatefulKnowledgeSession对象的insert方法导入到工作内存中,完成与规则库中的规则前件模式匹配过程。

4.2舰艇智能兵力规则库构建与实现

4.2.1潜艇智能兵力作战决策规则

舰艇智能兵力作战决策规则为多条产生式,组成舰艇智能兵力决策知识库。例如“在跟踪目标作战状态下”决策规则有如下四个子规则:

规则1 若目标为直升机且威胁强度高,则作战状态转为“防御直升机”;

规则2若目标类型为舰艇且威胁强度高,则作战状态转为“防御舰艇”;

规则3若目标威胁强度低,导弹可攻,则作战状态转为“导弹攻击”;

规则4若目标威胁强度低,鱼雷可攻,则作战状态转为“鱼雷攻击”。

则对应一条规则:当舰艇处于跟踪任务时,若目标威胁强度为0,且类型为直升机,则作战状态转为“直升机防御”,可以表示为如下形式:

类似可以表示其它子规则。可以看出,舰艇作战决策的规则虽然很复杂,但可分解为相对简单的多条规则,便于理解和使用。

4.2.2舰艇作战规则库示

在Drools中,根据Drools规则库的构建方法,把规则放在文件“rule.drl”中,形成舰艇作战规则库,文件的内容如下:

通过修改规则库就可以控制和规划舰艇智能兵力的战斗行为,而不需修改仿真程序。由于在仿真中,舰艇的使命行为通常在仿真初始化中就指定,因此,使命级行为不需要专门的规则转换,则根据舰艇智能兵力作战行为行为模型层次划分及仿真模拟的实际需要,在数据库中为任务级、子任务级层次的兵力战斗行为分别建立规则文件,以存储该层次战斗行动的规则知识。因此,规则有两种:任务级规则,子任务级规则,并且每一级别的规则都注明对应该级别行为的名称,便于检索知识。

4.3舰艇智能兵力规则匹配与规则库组成

下转第294页

上一篇:商品条形码印刷质量存在问题及质量控制 下一篇:浅析食品添加剂对食品安全的影响