亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        應(yīng)用規(guī)則引擎構(gòu)建艦艇作戰(zhàn)決策系統(tǒng)方法研究*

        2012-10-16 08:04:04鄭文恩陸銘華肖明彥
        艦船電子工程 2012年2期
        關(guān)鍵詞:艦艇引擎規(guī)則

        鄭文恩 陸銘華 肖明彥

        (海軍潛艇學(xué)院軟件中心 青島 266071)

        1 引言

        艦艇指揮員為完成特定的作戰(zhàn)任務(wù),需要根據(jù)戰(zhàn)場(chǎng)態(tài)勢(shì)的變化,進(jìn)行攻防作戰(zhàn)決策。作戰(zhàn)決策系統(tǒng)的構(gòu)建是艦艇作戰(zhàn)仿真的核心內(nèi)容。作戰(zhàn)決策模型的基本形式為:若當(dāng)前作戰(zhàn)狀態(tài)滿足狀態(tài)轉(zhuǎn)換條件,則轉(zhuǎn)入新作戰(zhàn)狀態(tài)。傳統(tǒng)作戰(zhàn)決策模型采用產(chǎn)生式規(guī)則表示法[1],即P→Q。其實(shí)現(xiàn)方法是,根據(jù)戰(zhàn)術(shù)想定,將作戰(zhàn)決策規(guī)則編寫(xiě)為嵌套的ifelse程序語(yǔ)句,內(nèi)嵌在其它程序代碼中。該方法使維護(hù)作戰(zhàn)決策規(guī)則變得很復(fù)雜,一旦開(kāi)發(fā)完成,不容易變更。然而,現(xiàn)實(shí)情況卻是,作戰(zhàn)決策規(guī)則需要根據(jù)不同戰(zhàn)術(shù)想定而變化,使用人員希望直接管理作戰(zhàn)決策規(guī)則,不必要求程序開(kāi)發(fā)人員參與。但是,對(duì)于很多復(fù)雜的作戰(zhàn)決策規(guī)則,開(kāi)發(fā)人員很難抽象出算法和數(shù)據(jù)模型;作戰(zhàn)決策規(guī)則嵌在程序代碼中,也不可能讓非開(kāi)發(fā)人員管理。為解決這個(gè)矛盾,提高系統(tǒng)開(kāi)發(fā)效率,更好地滿足艦艇作戰(zhàn)仿真系統(tǒng)經(jīng)常變化的軍事需求,需要將作戰(zhàn)決策規(guī)則和仿真程序代碼分開(kāi)。本文提出應(yīng)用Java開(kāi)源規(guī)則引擎Drools[2]構(gòu)建艦艇作戰(zhàn)決策系統(tǒng)的方法,介紹了Drools原理,給出了基于Drools的艦艇作戰(zhàn)決策系統(tǒng)的模型框架和系統(tǒng)的編程實(shí)現(xiàn)方法,通過(guò)仿真系統(tǒng)驗(yàn)證了該方法的可行性。

        2 艦艇作戰(zhàn)決策系統(tǒng)功能及運(yùn)行邏輯介紹

        作戰(zhàn)決策是指根據(jù)作戰(zhàn)任務(wù)、目標(biāo)綜合信息(包括目標(biāo)類型、態(tài)勢(shì)、威脅等級(jí)和可攻性)和艦艇作戰(zhàn)狀態(tài)及作戰(zhàn)過(guò)程,確定艦艇應(yīng)采取的攻擊或防御行動(dòng),包括作戰(zhàn)目標(biāo)、使用武器類型和攻防作戰(zhàn)樣式。決策依據(jù)艦艇典型戰(zhàn)術(shù)原則和攻防作戰(zhàn)規(guī)則。

        作戰(zhàn)決策系統(tǒng)是艦艇作戰(zhàn)仿真軟件的核心,它們相互之間的邏輯關(guān)系如圖1所示。

        作戰(zhàn)決策系統(tǒng)的輸入數(shù)據(jù)包括目標(biāo)綜合信息和艦艇當(dāng)前作戰(zhàn)狀態(tài)信息。

        其中,目標(biāo)綜合信息包括目標(biāo)類型、運(yùn)動(dòng)要素、威脅強(qiáng)度和可攻性數(shù)據(jù)。艦艇作戰(zhàn)狀態(tài)信息描述艦艇攻擊和防御的狀態(tài)及子狀態(tài)。作戰(zhàn)狀態(tài)標(biāo)示一個(gè)具體的作戰(zhàn)過(guò)程,而作戰(zhàn)子狀態(tài)進(jìn)一步細(xì)化描述作戰(zhàn)狀態(tài)。如“魚(yú)雷攻擊”作戰(zhàn)狀態(tài)表示艦艇處于使用魚(yú)雷攻擊目標(biāo)的作戰(zhàn)過(guò)程中,“魚(yú)雷攻擊”作戰(zhàn)子狀態(tài)則將攻擊過(guò)程細(xì)化為“確定攻擊方案”、“占領(lǐng)發(fā)射陣位”、“發(fā)射魚(yú)雷”和“觀察攻擊效果”四個(gè)子過(guò)程。

        作戰(zhàn)決策系統(tǒng)的輸出數(shù)據(jù)是艦艇攻擊或防御決策結(jié)果。攻擊決策結(jié)果有“導(dǎo)彈攻擊”、“魚(yú)雷攻擊”等;防御決策結(jié)果有“防御魚(yú)雷”、“防御直升機(jī)”和“防御艦艇”等。

        作戰(zhàn)過(guò)程改變戰(zhàn)場(chǎng)態(tài)勢(shì),即目標(biāo)綜合信息和艦艇作戰(zhàn)狀態(tài)都可能發(fā)生改變,這些變化的信息持續(xù)作為系統(tǒng)的輸入進(jìn)行下一步?jīng)Q策。

        圖1 艦艇作戰(zhàn)決策系統(tǒng)與其它子系統(tǒng)的邏輯關(guān)系圖

        3 Drools規(guī)則引擎原理及應(yīng)用

        規(guī)則引擎源于基于規(guī)則的專家系統(tǒng),規(guī)則引擎由規(guī)則庫(kù)(Rule Base)、工作內(nèi)存(Working Memory)和推理引擎(Inference Engine)三部分組成。其優(yōu)點(diǎn)如下:

        1)聲明式編程

        允許描述做什么而不是如何去做,從而使用規(guī)則更加容易對(duì)復(fù)雜的問(wèn)題進(jìn)行表述,并得到驗(yàn)證。使用規(guī)則引擎能方便地構(gòu)造復(fù)雜專家系統(tǒng)。

        2)邏輯與數(shù)據(jù)分離

        數(shù)據(jù)保存在系統(tǒng)對(duì)象中,邏輯保存在規(guī)則中。解決了面向?qū)ο笙到y(tǒng)中數(shù)據(jù)和邏輯混編的問(wèn)題,這樣系統(tǒng)當(dāng)業(yè)務(wù)邏輯發(fā)生改變時(shí)更容易維護(hù)。

        3)速度及可測(cè)量性

        規(guī)則引擎使用的Rete算法[3]提供了對(duì)數(shù)據(jù)對(duì)象與規(guī)則的高效率匹配。

        4)知識(shí)集中化

        將規(guī)則建立一個(gè)可執(zhí)行的規(guī)則庫(kù),它代表現(xiàn)實(shí)中的業(yè)務(wù)邏輯。

        Drools是基于ReteOO算法的Java語(yǔ)言開(kāi)源軟件,ReteOO表示面向?qū)ο笙到y(tǒng)(Object Oriented systems)增強(qiáng)并優(yōu)化的Rete算法。圖2是Drools規(guī)則引擎的邏輯圖。

        圖2 Drools規(guī)則引擎的邏輯圖

        Drools規(guī)則引擎運(yùn)行機(jī)制是通過(guò)快速檢索工作內(nèi)存(Working Memory)中的對(duì)象與加載到其中的各項(xiàng)規(guī)則的前件進(jìn)行匹配,激活符合條件的規(guī)則,放入沖突集中。將沖突集中的規(guī)則根據(jù)規(guī)則的優(yōu)先權(quán)排序生成議程(Agenda),從而使優(yōu)先級(jí)高的規(guī)則優(yōu)先觸發(fā)。規(guī)則執(zhí)行后,規(guī)則的后件執(zhí)行部分會(huì)改變加載到內(nèi)存中的事實(shí)對(duì)象信息,使議程中一些激活的規(guī)則的前提條件不再得到滿足,從議程中撤銷,同時(shí),可能有新的規(guī)則被激活加入議程中。因此,Drools是基于規(guī)則的自動(dòng)推理機(jī),非常適合用來(lái)構(gòu)建作戰(zhàn)決策系統(tǒng)。

        4 應(yīng)用Drools規(guī)則引擎構(gòu)建艦艇作戰(zhàn)決策系統(tǒng)的研究

        4.1 基于Drools規(guī)則引擎的艦艇作戰(zhàn)決策系統(tǒng)模型框架

        根據(jù)上文分析,給出如圖3所示的基于Drools規(guī)則引擎的艦艇作戰(zhàn)決策系統(tǒng)實(shí)現(xiàn)框架。

        4.2 作戰(zhàn)決策依賴的戰(zhàn)場(chǎng)態(tài)勢(shì)信息及表示

        作戰(zhàn)決策依賴的戰(zhàn)場(chǎng)態(tài)勢(shì)信息作為Drools規(guī)則引擎的事實(shí),分為目標(biāo)綜合信息事實(shí)和艦艇作戰(zhàn)狀態(tài)事實(shí),用Java類對(duì)象來(lái)實(shí)現(xiàn),類對(duì)象僅包含對(duì)象本身的屬性和屬性的get和set方法,而不包含對(duì)象之間的約束關(guān)系和邏輯。這些事實(shí)對(duì)象,通過(guò)Drools規(guī)則引擎的StatefulKnowledge-Session對(duì)象的insert方法導(dǎo)入到工作內(nèi)存中[5],完成與規(guī)則庫(kù)中的規(guī)則前件模式匹配過(guò)程。

        目標(biāo)綜合信息事實(shí)類tarMessage定義如下:

        4.3 應(yīng)用Drools規(guī)則文件構(gòu)建作戰(zhàn)決策知識(shí)庫(kù)

        4.3.1 艦艇作戰(zhàn)決策規(guī)則

        艦艇作戰(zhàn)決策規(guī)則為多條產(chǎn)生式,組成艦艇決策知識(shí)庫(kù)。例如“在跟蹤目標(biāo)作戰(zhàn)狀態(tài)下”決策規(guī)則有如下四個(gè)子規(guī)則:

        規(guī)則1 若目標(biāo)威脅強(qiáng)度為0且類型為直升機(jī),則作戰(zhàn)狀態(tài)轉(zhuǎn)為“防御直升機(jī)”;

        規(guī)則2 若目標(biāo)威脅強(qiáng)度為0且類型為艦艇,則作戰(zhàn)狀態(tài)轉(zhuǎn)為“防御艦艇”;

        規(guī)則3 若目標(biāo)威脅強(qiáng)度為大于0,導(dǎo)彈可攻且距離大于a鏈,則作戰(zhàn)狀態(tài)轉(zhuǎn)為“導(dǎo)彈攻擊”;

        規(guī)則4 若目標(biāo)威脅強(qiáng)度為大于0,魚(yú)雷可攻且距離小于或等于b鏈,則作戰(zhàn)狀態(tài)轉(zhuǎn)為“魚(yú)雷攻擊”。

        可以看出,艦艇作戰(zhàn)決策的規(guī)則雖然很復(fù)雜,但可分解為相對(duì)簡(jiǎn)單的多條規(guī)則,便于理解和使用。

        4.3.2 Drools規(guī)則語(yǔ)法和艦艇作戰(zhàn)規(guī)則的表示

        1)Drools規(guī)則的形式化描述

        規(guī)則是對(duì)領(lǐng)域知識(shí)的編碼。一條規(guī)則有屬性(attribute),一個(gè)左部(LHS)和一個(gè)右部(RHS)。

        Drools屬性用來(lái)控制規(guī)則執(zhí)行,在目前Drools5中,規(guī)則的屬性共有13個(gè)[5],這些屬性分別適用于不同的場(chǎng)景,如salience控制規(guī)則執(zhí)行優(yōu)先級(jí),no-loop說(shuō)明是否允許規(guī)則執(zhí)行一次。

        (4.3.1)中“在跟蹤目標(biāo)作戰(zhàn)狀態(tài)下”決策規(guī)則的規(guī)則1可以表示為:

        類似,可以表示其它子規(guī)則。

        2)艦艇作戰(zhàn)規(guī)則庫(kù)

        在Drools中,一個(gè)標(biāo)準(zhǔn)的規(guī)則文件是一個(gè)以“.drl”結(jié)尾的文本文件,便于打開(kāi)、查看和編輯。一個(gè)規(guī)則文件可以存放多個(gè)規(guī)則,規(guī)則文件中還可以存放用戶自定義的函數(shù)、數(shù)據(jù)對(duì)象及自定義查詢等規(guī)則可能用到的對(duì)象。

        根據(jù)Drools規(guī)則庫(kù)的構(gòu)建方法,把規(guī)則放在文件“decision.drl”中,形成艦艇作戰(zhàn)規(guī)則庫(kù),文件的內(nèi)容如下:

        4.4 系統(tǒng)編程實(shí)現(xiàn)

        4.4.1 系統(tǒng)的開(kāi)發(fā)環(huán)境和軟件

        1)操作系統(tǒng) Windows XP,Windows 7

        2)開(kāi)發(fā)軟件

        MyEclipse Enterprise Workbench,Version:8.5

        該軟件是一個(gè)開(kāi)放、可擴(kuò)展的企業(yè)級(jí)J2EE集成開(kāi)發(fā)環(huán)境,它是由Eclipse Foundation開(kāi)發(fā)的軟件。

        3)安裝配置drools eclipse插件

        從http://www.jboss.org/drools/downloads.html,下載drools最新drools eclipse插件文件drools-5.0-bin.zip,安裝到Eclipse集成開(kāi)發(fā)環(huán)境中,并正確配置drools的Runtime環(huán)境。該軟件包中包含Drools運(yùn)行所必須的組件,它包含若干jar包,在開(kāi)發(fā)Drools應(yīng)用程序時(shí),需要導(dǎo)入到相應(yīng)的工程中。

        4.4.2 軟件開(kāi)發(fā)的關(guān)鍵技術(shù)

        4.4.2.1 規(guī)則的編譯與運(yùn)行

        規(guī)則的編譯與運(yùn)行通過(guò)Drools提供的各種API實(shí)現(xiàn),這些API分為三類:規(guī)則編譯、規(guī)則收集和規(guī)則的執(zhí)行。完成這些工作的API主要有

        KnowledgeBuilder、KnowledgeBase、StatefulKnowledgeSession等,它們起到對(duì)規(guī)則文件進(jìn)行收集、編譯、查錯(cuò)、插入fact、設(shè)置global、執(zhí)行規(guī)則或規(guī)則流等作用。

        1)KnowledgeBuilder類

        KnowledgeBuilder的作用是完成規(guī)則文件編譯,產(chǎn)生一批編譯好的規(guī)則包(KnowledgePackage)給其它的應(yīng)用程序使用。

        創(chuàng)建KnowledgeBuilder對(duì)象使用的是Knowledge-BuilderFactory的newKnowledgeBuilder方法。

        2)KnowledgeBase類

        KnowledgeBase用來(lái)收集應(yīng)用當(dāng)中知識(shí)(knowledge)而定義的知識(shí)庫(kù)對(duì)象,它可以包含普通的規(guī)則(rule)、規(guī)則流(rule flow)、函數(shù)定義(function)、用 戶自定義對(duì) 象(type model)等。

        創(chuàng)建一個(gè)KnowledgeBase要通過(guò)KnowledgeBaseFactory對(duì)象提供的newKnowledgeBase()方法來(lái)實(shí)現(xiàn)。

        3)StatefulKnowledgeSession對(duì)象

        通過(guò)StatefulKnowledgeSession與規(guī)則引擎進(jìn)行交互,接收業(yè)務(wù)數(shù)據(jù)、執(zhí)行規(guī)則。

        StatefulKnowledgeSession對(duì)象是Drools的工作內(nèi)存WorkingMemory,它與規(guī)則引擎建立一個(gè)持續(xù)的交互通道,在推理過(guò)程中可能會(huì)多次觸發(fā)同一數(shù)據(jù)集。

        4)Fact對(duì)象

        Fact是JavaBean插入到規(guī)則工作內(nèi)存中的對(duì)象,是對(duì)原來(lái)JavaBean對(duì)象的引用。規(guī)則可以對(duì)Fact對(duì)象進(jìn)行任意讀寫(xiě)操作。

        4.4.2.2 關(guān)鍵程序代碼

        代碼演示了規(guī)則引擎完整的運(yùn)行處理過(guò)程。首先,使用KnowledgeBuilder將相關(guān)的規(guī)則文件進(jìn)行編譯,產(chǎn)生對(duì)應(yīng)的KnowledgePackage集合,再通過(guò)KnowledgeBase把產(chǎn)生的KnowledgePackage集合收集起來(lái),然后生成Stateful-KnowledgeSession對(duì)象,將規(guī)則中使用的fact對(duì)象插入,調(diào)用fireAllRules()方法觸發(fā)所有的規(guī)則執(zhí)行。

        采用本文方法開(kāi)發(fā)了艦艇作戰(zhàn)仿真決策系統(tǒng),規(guī)則庫(kù)有3000多條規(guī)則。程序運(yùn)行測(cè)試顯示響應(yīng)時(shí)間小于0.1s,完全能夠滿足系統(tǒng)的要求,驗(yàn)證了方法的可行性和有效性。

        5 結(jié)語(yǔ)

        本文提出的應(yīng)用規(guī)則引擎構(gòu)建艦艇作戰(zhàn)決策系統(tǒng)的方法,將作戰(zhàn)決策規(guī)則庫(kù)與艦艇作戰(zhàn)仿真軟件代碼獨(dú)立開(kāi)來(lái),并應(yīng)用高效率的開(kāi)源規(guī)則引擎Drools開(kāi)發(fā)了應(yīng)用系統(tǒng)軟件。解決了傳統(tǒng)的作戰(zhàn)決策系統(tǒng)開(kāi)發(fā)中難度大、升級(jí)困難、系統(tǒng)匹配效率不高的問(wèn)題。在作戰(zhàn)需求發(fā)生改變的情況下,可盡量不改動(dòng)系統(tǒng)程序代碼,提高了系統(tǒng)的靈活性,降低了系統(tǒng)維護(hù)風(fēng)險(xiǎn)。應(yīng)用該方法為大型作戰(zhàn)仿真軟件開(kāi)發(fā)了作戰(zhàn)決策系統(tǒng),經(jīng)過(guò)實(shí)際檢驗(yàn),該方法切實(shí)可行。

        [1]尹朝慶,尹皓.人工智能與專家系統(tǒng)[M].北京:中國(guó)水利水電出版社,2002.

        [2]鄭浩然,肖偉.基于規(guī)則引擎的JAVA聲明式編程[J].計(jì)算機(jī)應(yīng)用與軟件,2009,26(12):132-134.

        [3]朱強(qiáng).JAVA規(guī)則引擎在機(jī)場(chǎng)業(yè)務(wù)及資源管理中的應(yīng)用[D].濟(jì)南:濟(jì)南大學(xué),2008.

        [4]何振榮.基于業(yè)務(wù)規(guī)則引擎的費(fèi)用審核系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].廈門(mén):廈門(mén)大學(xué),2009.

        [5]高杰.Drools5規(guī)則引擎開(kāi)發(fā)教程[EB/OL].http://www.docin.com/p-234488581.html.

        [6]陸銘華.艦艇作戰(zhàn)模擬理論與方法[M].北京:海洋出版社,2000.

        [7]王記偉.基于規(guī)則推理的應(yīng)急事件自動(dòng)處理技術(shù)研究[D].上海:東華大學(xué),2009.

        [8]郭芳,白建軍.基于Rete算法的規(guī)則引擎JBoss Rules[J].計(jì)算機(jī)時(shí)代,2008(1):8-10.

        [9]劉亞琴,譚一兵.基于規(guī)則引擎的應(yīng)用程序開(kāi)發(fā)[J].邵陽(yáng)學(xué)院學(xué)報(bào)(自然科學(xué)版),2006,3(2):53-56.

        [9]LIU Ya-qin,TAN Yi-bing.Appliction development based on rule engine[J].Journal of Shaoyang University(Scince and Technoly),2006,3(2):53-56.

        [10]唐基宏.模式數(shù)據(jù)庫(kù)在智能規(guī)劃中的應(yīng)用[J].計(jì)算機(jī)與數(shù)字工程,2011,39(5).

        [11]Drools 5-The Business Logic Integration Platform[EB/OL].Http://www.jboss.org/drools/.

        猜你喜歡
        艦艇引擎規(guī)則
        艦艇入列
        海戰(zhàn)中的蒙面殺手——隱形艦艇
        撐竿跳規(guī)則的制定
        數(shù)獨(dú)的規(guī)則和演變
        讓規(guī)則不規(guī)則
        Coco薇(2017年11期)2018-01-03 20:59:57
        藍(lán)谷: “涉藍(lán)”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        TPP反腐敗規(guī)則對(duì)我國(guó)的啟示
        無(wú)形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        基于Cocos2d引擎的PuzzleGame開(kāi)發(fā)
        艦艇遠(yuǎn)航中開(kāi)展音樂(lè)健身操訓(xùn)練探討
        亚洲一区二区二区视频| 久久精品国产亚洲AV高清wy| 少妇高潮太爽了免费网站| 自拍偷自拍亚洲一区二区| 成人毛片av免费| 久久亚洲sm情趣捆绑调教| 亚洲日本VA午夜在线电影| 国产人妖视频一区二区| 少妇人妻中文字幕hd| 无遮挡边吃摸边吃奶边做| 亚洲av午夜成人片精品| 日本岛国一区二区三区四区| 比较有韵味的熟妇无码| 在线观看国产精品日韩av | 日本人妻少妇精品视频专区| 美腿丝袜日韩在线观看| 亚洲av无码国产精品永久一区| 精品视频一区二区三三区四区| 国产美女亚洲精品一区| 国产精品福利高清在线| 天天鲁在视频在线观看| 久久av无码精品一区二区三区| 亚洲精品一区二区三区蜜臀| 国产黄污网站在线观看| 精品国产午夜理论片不卡| 国产偷国产偷亚洲欧美高清| 中文字幕色一区二区三区页不卡 | 啪啪免费网站| 久久婷婷夜色精品国产| 国产区女主播在线观看| 久久精品人人爽人人爽| 阿v视频在线| 亚洲国产成人av毛片大全| 日韩av激情在线观看| 污污污污污污污网站污| 国内自拍视频在线观看| 日韩精品成人区中文字幕| 熟女人妻在线视频| 国产日韩久久久久69影院| 国产女优一区在线观看| 女人被狂躁高潮啊的视频在线看|