刘晶晶 崔燕 初建民
摘 要:随着作战需求的多样化,一些复杂的业务规则很难推导出精确的算法或抽象出合适的数据模型,因此将业务规则与软件代码分开引入规则引擎已成为一种主流趋势。Drools规则引擎作为决策系统的推理机,采用Rete算法实现推理机的规则匹配,有着较高的效率,能够较好匹配兵力接替系统。本文介绍了基于Drools规则引擎的兵力接替系统的设计方法及实现,具体设计了作战规则、并提出策略匹配的改进冲突消解算法,对此方法进行了实验比较,实验证明此方法大大增强了系统的开发效率和后期软件的维护成本。
关键词:Drools;规则引擎;业务规则;Rete
中图分类号:TP315 文献标识码:A
Abstract:With the diversification of the battle demands,precise algorithms or data models can hardly be derived from some complicated business rules.Therefore,it has become a mainstream trend to separately import business rules and software code into the rule engine.As the inference engine of the decision-making system,the drools rule engine adopts the rete algorithm to implement the rule-matching of the inference engine,which has high efficiency and appropriately matches the troop patrol system.This paper introduces the design and implementation of the troop patrol system based on the Drools rule engine,including the design of engagement rules.An improved rule-matching algorithm is also proposed.The result of comparison experiment shows that this method greatly improves the software development efficiency and effectively reduces the maintenance costs.
Keywords:drools;rule engine;business rule;rete
1 引言(Introduction)
隨着作战任务需求的多样化,一些复杂的作战任务很难推导出精确的算法或抽象出数据模型。对于指控软件来说业务规则常常在需求阶段还不明确,在设计和编码后还会发生变化,但是业务规则往往嵌套在系统的各个代码中,使得后期软件的维护成本很高[1,2],多空域航空兵兵力接替系统就属于这样的情况,如何根据作战规则的不同找出合适的接替兵力列表成为亟须解决的难题。
本文针对此问题,提出应用Drools规则引擎[3-6]构建兵力接替系统的方法。由于规则引擎在维护软件时支持对作战规则的动态增、删、改,降低了复杂业务逻辑和应用程序的维护成本。本文后面介绍了Drools规则引擎原理,给出了兵力接替系统模型框架,并通过系统软件验证此方法是可行的。
2 兵力接替功能介绍(Features of troop patrol system)
兵力接替功能是根据当前各目标信息(包括飞机的余油、性能、挂载等属性信息)和巡逻空域的位置等信息确定出的一个多空域的航空兵接替巡逻出动计划表。航空兵的出动计划依据其后支撑的作战规则产生。其中兵力接替系统的流程如图1所示。
兵力接替系统的输出是接替列表即航空兵出动计划表,供指挥员决策使用。
3 Drools 规则引擎介绍(Drools rules engine introduction)
Drools是一个采用规则实现的专家系统。它的核心是一个推理引擎,能够处理大量的规则和事实。它采用的匹配算法是改进版本的Rete算法[7-11]。Rete算法是一个目前效率较高的前项链推理算法,其根据规则库构建有效的模式匹配网络,并且记录匹配中节点的状态,从而获得有效的解析和很高的效率。
Drools中的Rete算法被称为ReteOO,这种方法从一个初始的事实触发,不断应用规则进行推理或执行指定的动作,逐步匹配运算,最终达到相应的结论。Drools规则引擎过程如图2所示。
Drools规则引擎推理过程如下:
(1)加载规则至规则库。
(2)加载需要匹配的事实至Working Memory。
(3)对加载的规则和事实在模式匹配器中进行匹配。
(4)将多条匹配的规则加入冲突集合。
(5)根据冲突解决策略解决冲突,并确定需要激活的规则及其激活顺序,将规则按顺序加入议程中。
(6)按照顺序执行规则,并重复3—6步,直至议程中无可激活规则为止。
4 兵力接替系统设计(Troop patrol design)
4.1 规则设计
兵力接替系统主要包括三层:
(1)UI应用层。用户从态势图选择多空域,设定优选规则和过滤条件,将数据传给计算服务。
(2)计算服务层。计算服务接收应用层传入的数据,根据过滤条件计算出可用的兵力,并将规范化数据转交底层规则引擎。
(3)规则引擎决策层。规则引擎接收从服务层传入的数据,载入到兵力接替模块对应的Working Memory中,并依据引擎中配置的决策规则,进行业务决策。最终将决策结果返回结果给服务层。
在这三层中最为核心的是规则引擎决策层,其他两层主要是为其准备规范化数据。
在规则引擎中首先需要添加可配置的规则。兵力接替的规则包括:(1)时间最快优先。(2)同一机场优先。(3)同一机型优先。(4)某类机型优先。(5)某些空域优先。
由于规则之间可能存在冲突,而且同一个事实对象可能会触发多个规则,因此给每条规则添加了一个Level属性,Level值越低其优先值越高,此条规则就越重要。当同一事实对象触发了多个规则时,规则引擎会将触发的所有规则放入议程中。这时需要冲突消解策略进行冲突消解。
4.2 改进策略消解算法
原先采用的方法是根据每个规则中的Level属性进行排序,按照顺序逐一执行议程中的所有规则,后一个规则执行的结果会覆盖前一个规则的结果。由于此方法中会计算多次规则引擎结果,且结果不会使用而是直接抛弃,为了加快效率,采用改进版本的匹配方法执行规则。改进版方法在一个事实触发多个规则时,会进行逻辑判定,最后只计算一次完全匹配规则的结果,加快了效率,改进版本流程图如图3所示。
算法会在议程中循环判断是否有与事件对象完全匹配的规则,若存在此規则,则与现有匹配规则比较其Level值,将Level值小的保留。循环结束时计算当前存在的规则。
算法结果时间比较,接替规则定义为:时间优先,同一机场优先,同一机型优先,某类空域优先。实验所取的规则一样,选取典型10个巡逻区域进行实验。
实验所需计算结果如表1所示。
为了提高数据准确性,去除用时最多的H区域与用时最少的J区域,计算得到结果为:改进前计算平均值为1217ms,改进后计算平均值为967ms,时间缩短了21.1%。
为了更直观表达出改进算法后系统计算性能的提高,在这里采用折线图,如图4所示。
5 结论(Conclusion)
本文采用Drools规则引擎将军事业务逻辑从程序逻辑中分离出来,使用贴近军事描述的语义模块定义规范,实现对业务规则的集中生成共享和复用。当后期兵力接替业务规则发生变化之后,只需要修改规则文件即可,而不需要修改、编译、测试、发布文件,如此将极大降低维护成本。在使用规则引擎进行计算时,提出了一种只计算一次完全匹配结果的改进计算方法,提高了改进效率近21%。
参考文献(References)
[1] Liu D,Gu T,Xue J P.Rule Engine based on improvement Rete algorithm[C].Apperceiving Computing and Intelligence Analysis(ICACIA),2010 International Conference on.IEEE,2010:346-349.
[2] Liang S,et al.OpenRuleBench:an analysis of the performance of rule engines[J].Aquaculture,2005,249(s1-4):353-365.
[3] Nagl C,Rosenberg F,Dustdar S.VIDRE--A Distributed Service-Oriented Business Rule Engine based on RuleML[C].IEEE International Enterprise Distributed Object Computing Conference.IEEE Computer Society,2006:35-44.
[4]Proctor M.Drools:a rule engine for complex event processing[C]//International Conference on Applications of Graph Transformations with Industrial Relevance,2011.
[5] 陈育谦,等.基于规则引擎的项目开发环境访问控制架构[J].指挥信息系统与技术,2014(02):5-8.
[6] 蓝雯飞,邢志宝,强小利.一种Drools规则引擎封装模型及其实现[J].中南民族大学学报(自然科学版),2015(03):45-50.
[7] 刘亚琴,谭一兵.基于规则引擎的应用程序开发[J].邵阳学院学报(自然科学版),2006(02):19-23.
[8] 牛凯.规则引擎Drools在制造业J2EE系统中的应用研究[J].成组技术与生产现代化,2014(02):5-11.
[9] 顾小东,高阳.Rete算法:研究现状与挑战[J].计算机科学,2012(11):9-14.
[10] 宋震,郭福顺,李莲治.IMPR:一种优于RETE算法的多模式/多对象匹配算法[J].小型微型计算机系统,2002(02):15-18.
[11] 文举荣,王永利,刘伟.支持多类型瑕疵度量的RETE改进算法[J].计算机工程与应用,2015(15):8-13.
作者简介:
刘晶晶(1986-),男,硕士,工程师.研究领域:指挥控制系统.
崔 燕(1988-),女,硕士,助理工程师.研究领域:指挥控制系统.
初建民(1997-),男,本科生.研究领域:算法研究.