應用drools規則引擎做產生式規則不確定性推理

2021-07-03 08:27:39 字數 1110 閱讀 2014

drools規則引擎,能以rete演算法為核心進行高效的規則匹配。我們可以借助其高效的匹配能力,完成產生式規則的推理工作。

rete網在首次載入完成之後,其載入和推理的時間隨著規則的增加,僅有很小幅度的增加。

推理需要連續的匹配動作,所以我們要控制drools迴圈不斷地進行規則匹配,並記錄每一步過程。每次匹配成功,都做相應的記錄,並將該規則的後件加入事實庫,同時關閉該規則。再用現有的事實庫尋求下乙個能成功匹配的規則,直至沒有規則可以匹配,獲得我們的記錄,就獲得了推理鏈。至於匹配過程中同時有多條規則可以匹配的問題,由agenda機構處理,我們不用過多擔心。

產生式規則的不確定性推理,我們要考慮到規則前件的可信度,前件的權重,和規則的可信度,這些相關的計算和處理,都可以在每次匹配成功後做相應記錄的時候完成。

我做了乙個實現的[demo],託管在[我的github]。其中實現了上述的推理能力。想要的可以找我要。

我們可以在控制台輸入相應的事實,就可以得到根據我們給定的規則獲得的推理鏈。由於我手裡沒有能拿來公開演示的真實規則,所以demo中只是用了並沒有實際意義的名稱和字母組成的規則,只是作為示例。

rule "7"        //規則編號

salience 4 //配合迴圈控制規則

no-loop true //防止規則重複執行

when

$message10 : message(a == 10) //規則前件匹配元素10、15

$message15 : message(a == 15)

$assistant : assistant() //獲取記錄推理鏈的輔助類

then

mapfactandweight = new hashmap();

factandweight.put(10, 0.6); //前件元素10,佔前件權重60%

factandweight.put(15, 0.4); //前件元素15,佔前件權重40%

$assistant.inferenceonestep(26, factandweight, 95); //後件元素26,規則可信度95%

insert(new message(0));

end

Drools規則引擎介紹

規則引擎起源於基於規則的專家系統,而基於規則的專家系統又是專家系統的其中乙個分支。專家系統屬於人工智慧的範疇,它模仿人類的推理方式,使用試探性的方法進行推理,並使用人類能理解的術語解釋和證明它的推理結論 規則引擎一般由3部分組成 規則庫 knowledge base working memory f...

Drools 規則引擎 入門

參考網上前輩的例子,自己把drools整合在了springboot中能正常執行。特此記錄一下 pom檔案引入jar包 org.drools drools core 7.0.0.final org.drools drools compiler 7.0.0.final org.drools drools...

10042 Drools規則引擎

原文 通過學習rete演算法之後,這篇部落格來介紹一下乙個 rete 演算法實現的規則引擎的框架 drools。drools是 jboss 公司旗下一款開源的規則引擎,有如下特點 完整的實現了rete 演算法 提供了強大的eclipse plugin 開發支援 通過使用其中的dsl domain s...