劉晶晶 崔燕 初建民
摘 要:隨著作戰(zhàn)需求的多樣化,一些復(fù)雜的業(yè)務(wù)規(guī)則很難推導(dǎo)出精確的算法或抽象出合適的數(shù)據(jù)模型,因此將業(yè)務(wù)規(guī)則與軟件代碼分開引入規(guī)則引擎已成為一種主流趨勢。Drools規(guī)則引擎作為決策系統(tǒng)的推理機,采用Rete算法實現(xiàn)推理機的規(guī)則匹配,有著較高的效率,能夠較好匹配兵力接替系統(tǒng)。本文介紹了基于Drools規(guī)則引擎的兵力接替系統(tǒng)的設(shè)計方法及實現(xiàn),具體設(shè)計了作戰(zhàn)規(guī)則、并提出策略匹配的改進沖突消解算法,對此方法進行了實驗比較,實驗證明此方法大大增強了系統(tǒng)的開發(fā)效率和后期軟件的維護成本。
關(guān)鍵詞:Drools;規(guī)則引擎;業(yè)務(wù)規(guī)則;Rete
中圖分類號:TP315 文獻標(biāo)識碼: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)
隨著作戰(zhàn)任務(wù)需求的多樣化,一些復(fù)雜的作戰(zhàn)任務(wù)很難推導(dǎo)出精確的算法或抽象出數(shù)據(jù)模型。對于指控軟件來說業(yè)務(wù)規(guī)則常常在需求階段還不明確,在設(shè)計和編碼后還會發(fā)生變化,但是業(yè)務(wù)規(guī)則往往嵌套在系統(tǒng)的各個代碼中,使得后期軟件的維護成本很高[1,2],多空域航空兵兵力接替系統(tǒng)就屬于這樣的情況,如何根據(jù)作戰(zhàn)規(guī)則的不同找出合適的接替兵力列表成為亟須解決的難題。
本文針對此問題,提出應(yīng)用Drools規(guī)則引擎[3-6]構(gòu)建兵力接替系統(tǒng)的方法。由于規(guī)則引擎在維護軟件時支持對作戰(zhàn)規(guī)則的動態(tài)增、刪、改,降低了復(fù)雜業(yè)務(wù)邏輯和應(yīng)用程序的維護成本。本文后面介紹了Drools規(guī)則引擎原理,給出了兵力接替系統(tǒng)模型框架,并通過系統(tǒng)軟件驗證此方法是可行的。
2 兵力接替功能介紹(Features of troop patrol system)
兵力接替功能是根據(jù)當(dāng)前各目標(biāo)信息(包括飛機的余油、性能、掛載等屬性信息)和巡邏空域的位置等信息確定出的一個多空域的航空兵接替巡邏出動計劃表。航空兵的出動計劃依據(jù)其后支撐的作戰(zhàn)規(guī)則產(chǎn)生。其中兵力接替系統(tǒng)的流程如圖1所示。
兵力接替系統(tǒng)的輸出是接替列表即航空兵出動計劃表,供指揮員決策使用。
3 Drools 規(guī)則引擎介紹(Drools rules engine introduction)
Drools是一個采用規(guī)則實現(xiàn)的專家系統(tǒng)。它的核心是一個推理引擎,能夠處理大量的規(guī)則和事實。它采用的匹配算法是改進版本的Rete算法[7-11]。Rete算法是一個目前效率較高的前項鏈推理算法,其根據(jù)規(guī)則庫構(gòu)建有效的模式匹配網(wǎng)絡(luò),并且記錄匹配中節(jié)點的狀態(tài),從而獲得有效的解析和很高的效率。
Drools中的Rete算法被稱為ReteOO,這種方法從一個初始的事實觸發(fā),不斷應(yīng)用規(guī)則進行推理或執(zhí)行指定的動作,逐步匹配運算,最終達(dá)到相應(yīng)的結(jié)論。Drools規(guī)則引擎過程如圖2所示。
Drools規(guī)則引擎推理過程如下:
(1)加載規(guī)則至規(guī)則庫。
(2)加載需要匹配的事實至Working Memory。
(3)對加載的規(guī)則和事實在模式匹配器中進行匹配。
(4)將多條匹配的規(guī)則加入沖突集合。
(5)根據(jù)沖突解決策略解決沖突,并確定需要激活的規(guī)則及其激活順序,將規(guī)則按順序加入議程中。
(6)按照順序執(zhí)行規(guī)則,并重復(fù)3—6步,直至議程中無可激活規(guī)則為止。
4 兵力接替系統(tǒng)設(shè)計(Troop patrol design)
4.1 規(guī)則設(shè)計
兵力接替系統(tǒng)主要包括三層:
(1)UI應(yīng)用層。用戶從態(tài)勢圖選擇多空域,設(shè)定優(yōu)選規(guī)則和過濾條件,將數(shù)據(jù)傳給計算服務(wù)。
(2)計算服務(wù)層。計算服務(wù)接收應(yīng)用層傳入的數(shù)據(jù),根據(jù)過濾條件計算出可用的兵力,并將規(guī)范化數(shù)據(jù)轉(zhuǎn)交底層規(guī)則引擎。
(3)規(guī)則引擎決策層。規(guī)則引擎接收從服務(wù)層傳入的數(shù)據(jù),載入到兵力接替模塊對應(yīng)的Working Memory中,并依據(jù)引擎中配置的決策規(guī)則,進行業(yè)務(wù)決策。最終將決策結(jié)果返回結(jié)果給服務(wù)層。
在這三層中最為核心的是規(guī)則引擎決策層,其他兩層主要是為其準(zhǔn)備規(guī)范化數(shù)據(jù)。
在規(guī)則引擎中首先需要添加可配置的規(guī)則。兵力接替的規(guī)則包括:(1)時間最快優(yōu)先。(2)同一機場優(yōu)先。(3)同一機型優(yōu)先。(4)某類機型優(yōu)先。(5)某些空域優(yōu)先。
由于規(guī)則之間可能存在沖突,而且同一個事實對象可能會觸發(fā)多個規(guī)則,因此給每條規(guī)則添加了一個Level屬性,Level值越低其優(yōu)先值越高,此條規(guī)則就越重要。當(dāng)同一事實對象觸發(fā)了多個規(guī)則時,規(guī)則引擎會將觸發(fā)的所有規(guī)則放入議程中。這時需要沖突消解策略進行沖突消解。
4.2 改進策略消解算法
原先采用的方法是根據(jù)每個規(guī)則中的Level屬性進行排序,按照順序逐一執(zhí)行議程中的所有規(guī)則,后一個規(guī)則執(zhí)行的結(jié)果會覆蓋前一個規(guī)則的結(jié)果。由于此方法中會計算多次規(guī)則引擎結(jié)果,且結(jié)果不會使用而是直接拋棄,為了加快效率,采用改進版本的匹配方法執(zhí)行規(guī)則。改進版方法在一個事實觸發(fā)多個規(guī)則時,會進行邏輯判定,最后只計算一次完全匹配規(guī)則的結(jié)果,加快了效率,改進版本流程圖如圖3所示。
算法會在議程中循環(huán)判斷是否有與事件對象完全匹配的規(guī)則,若存在此規(guī)則,則與現(xiàn)有匹配規(guī)則比較其Level值,將Level值小的保留。循環(huán)結(jié)束時計算當(dāng)前存在的規(guī)則。
算法結(jié)果時間比較,接替規(guī)則定義為:時間優(yōu)先,同一機場優(yōu)先,同一機型優(yōu)先,某類空域優(yōu)先。實驗所取的規(guī)則一樣,選取典型10個巡邏區(qū)域進行實驗。
實驗所需計算結(jié)果如表1所示。
為了提高數(shù)據(jù)準(zhǔn)確性,去除用時最多的H區(qū)域與用時最少的J區(qū)域,計算得到結(jié)果為:改進前計算平均值為1217ms,改進后計算平均值為967ms,時間縮短了21.1%。
為了更直觀表達(dá)出改進算法后系統(tǒng)計算性能的提高,在這里采用折線圖,如圖4所示。
5 結(jié)論(Conclusion)
本文采用Drools規(guī)則引擎將軍事業(yè)務(wù)邏輯從程序邏輯中分離出來,使用貼近軍事描述的語義模塊定義規(guī)范,實現(xiàn)對業(yè)務(wù)規(guī)則的集中生成共享和復(fù)用。當(dāng)后期兵力接替業(yè)務(wù)規(guī)則發(fā)生變化之后,只需要修改規(guī)則文件即可,而不需要修改、編譯、測試、發(fā)布文件,如此將極大降低維護成本。在使用規(guī)則引擎進行計算時,提出了一種只計算一次完全匹配結(jié)果的改進計算方法,提高了改進效率近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] 陳育謙,等.基于規(guī)則引擎的項目開發(fā)環(huán)境訪問控制架構(gòu)[J].指揮信息系統(tǒng)與技術(shù),2014(02):5-8.
[6] 藍(lán)雯飛,邢志寶,強小利.一種Drools規(guī)則引擎封裝模型及其實現(xiàn)[J].中南民族大學(xué)學(xué)報(自然科學(xué)版),2015(03):45-50.
[7] 劉亞琴,譚一兵.基于規(guī)則引擎的應(yīng)用程序開發(fā)[J].邵陽學(xué)院學(xué)報(自然科學(xué)版),2006(02):19-23.
[8] 牛凱.規(guī)則引擎Drools在制造業(yè)J2EE系統(tǒng)中的應(yīng)用研究[J].成組技術(shù)與生產(chǎn)現(xiàn)代化,2014(02):5-11.
[9] 顧小東,高陽.Rete算法:研究現(xiàn)狀與挑戰(zhàn)[J].計算機科學(xué),2012(11):9-14.
[10] 宋震,郭福順,李蓮治.IMPR:一種優(yōu)于RETE算法的多模式/多對象匹配算法[J].小型微型計算機系統(tǒng),2002(02):15-18.
[11] 文舉榮,王永利,劉偉.支持多類型瑕疵度量的RETE改進算法[J].計算機工程與應(yīng)用,2015(15):8-13.
作者簡介:
劉晶晶(1986-),男,碩士,工程師.研究領(lǐng)域:指揮控制系統(tǒng).
崔 燕(1988-),女,碩士,助理工程師.研究領(lǐng)域:指揮控制系統(tǒng).
初建民(1997-),男,本科生.研究領(lǐng)域:算法研究.