日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【采用】规则引擎Pyke与PyClips对比研究报告(高大上啊,第一次听说pyke和pyclips这俩词~)

發布時間:2025/3/21 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【采用】规则引擎Pyke与PyClips对比研究报告(高大上啊,第一次听说pyke和pyclips这俩词~) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.?背景綜述

?

規則引擎主要實現的功能是存儲、分類和管理規則,執行規則、推斷其它事實的應用程序。其中的規則主要是指企業或商務業務邏輯、法律條款等。在規則引擎發展的過程中,Rete算法和Prolog語言是兩個重要的理論分支,多數規則引擎都是基于以上二者擴展而來的。在工業活動鑄造中,發展時間較長、應用廣泛的兩個體系是Clips體系和Prolog體系。

Clips是美國航空航天局NASA- JOHNSON太空中心為彌補LISP 語言的不足而開發的C語言內核的專家系統。它的推理機是基于正向推理(Rete算法)的控制策略,即在事實的基礎上通過設定的規則推演新的事實。因為LISP語言編寫規則復雜、引擎不支持反向推理等原因也在一定程度限制了它的發展,但在其他語言開發(javaEE、Python等)的規則引擎仍有很多參考、引用了Clips,包括Drools、Jess、PyClips等。

Prolog語言基于謂詞邏輯的理論。最基本的寫法是定立物件與物件之間的關系,之后可以用詢問目標的方式來查詢各種物件之間的關系,進行匹配及回溯,找出所詢問的答案。因而Prolog具備作為規則引擎的充分條件,也有若干開源項目(java為主)沿用其思路設計規則引擎,如tuProlog、jena等。下文所提到的Pyke,普遍說法其前身也是Prolog。此外,有文獻提到prolog基于Markov算法。Markov算法可以作為規則引擎的基本準則,但是如果系統中存在著大量的規則,那么效率就會變低。

?

針對項目開發的實際需要,依據?“Python語言驅動引擎、規則語言語義全面、時間開銷適中”的原則選取規則引擎,具體操作過程中選擇了Pyke和PyClips分別進行研究,二者分別對應上文提到的Prolog體系和Clips體系,有一定代表性。經過手冊研讀和實驗測試,目前可得到的結論是:PyClips在規則表達和性能效率方面優于Pyke,更符合應用開發的需要。具體分析見下文。

?

2.PyClips與Pyke的規則表達方式比較

?

2.1 Pyke的規則描述方式和特性

?

Pyke的優勢、特點:

l?支持正向推理和反向推理兩種推理方式,可以針對不同問題選用不同方式定義規則;

l?可以在規則中嵌入Python代碼段補充描述;

l?專用謂詞較多,如first,notany等可以簡化表達。

?

Pyke的不便、局限:

l?數據傾倒方式單一,只顯式支持將結果推送到控制臺輸出(只能間接從其內部取得數據List);

l?不支持批量的事實導入;

l?正反向推理不能在同一個規則庫中并存。

?

2.2 PyClips的規則描述方式和特性

?

PyClips的優勢、特點:

l?在規則定義環節,支持聲明函數。支持OO(面向對象):包括類的定義,模板(類似C++中的template)的定義。針對未來復雜的規則描述可能適用;

l?規則定義時,支持事件觸發;

l?支持動態地撤銷事實或規則(不可逆,需謹慎)。

l?互動性良好,方法完全“繼承”自0Clips。PyClips相當于對Clips做了Python的“客戶端”封裝。運行時,在內存中既有PyClips的存在,也有Clips的存在。因而只要Clips支持的功能,都可以由PyClips發送指令操作Clips。

?

PyClips的不便、局限:

l?規則描述使用LISP語言,上手難度較高(例如數值計算式的書寫、各關鍵字的語法格式);

l?只顯式支持正向推理。相關英文文獻也指出Clips本身不能使用反向推理,只有部分中文文獻給出了通過事件觸發來自定義反向推理的方案,但可重現性都很差,沒有一個完備的解決方案目前。所以保留意見認為,PyClips不支持反向推理;

l?不支持批量的事實或規則導入;

?

3.?PyClips與Pyke的性能比較

?

3月20日-3月22日,Pyke性能測試數據截取,見表1、表2:

 

側重較多事實

 

規則數

事實數

時間開銷(秒)

5

10000

21

10

10000

27

5

20000

65

10

20000

96

 

側重較多規則

 

規則數

事實數

時間開銷(秒)

500

500

23

600

500

28

700

500

32

800

500

37

900

500

42

1000

500

46

1100

500

51

1200

500

55

 

均等

 

規則數

事實數

時間開銷(秒)

500

500

23

600

600

34

700

700

46

800

800

59

900

900

73

1000

1000

88

表1

?

規則數

事實數

(運行時加載)

事實

加載時間(秒)

反向推理

時間(秒)

1

20000

16.656

1.18

5

20000

16.828

1.40

10

20000

18.588

1.678

15

20000

17.996

1.92

20

20000

17.987

2.324

25

20000

16.021

2.434

30

20000

15.959

2.699

表2

?

3月27日,PyClips性能測試,見表3:

規則數

事實數

(運行時加載)

事實

加載時間(秒)

正向推理

時間(秒)

1

20000

3.516

5.514

5

20000

3.314

6.024

10

20000

2.892

6.566

15

20000

2.934

7.244

20

20000

3.445

7.472

25

20000

2.832

7.918

30

20000

3.116

9.168

表3

?

將3張表中紅色的數據行進行對比可以發現:

l?在事實加載環節上,兩種引擎都只能逐條加載,?PyClips的加載效率遠高于Pyke;

l?客觀環境不變,推理方式及引擎算法不同的情況下,推理效率排序應為:

Pyke反向推理時間開銷?< ?PyClips正向推理時間開銷?<< Pyke正向推理時間開銷

雖然Pyke在推理階段(2萬條事實數據)可以通過推理方式同比節約4-6秒,但它在事實加載階段比PyClips慢12-14秒。

時間開銷應是所有環節消耗時間的總和,故而在實際使用中能明顯感覺到PyClips的運行速度優于Pyke。

?

原文鏈接:https://blog.csdn.net/u010159842/article/details/78889576

總結

以上是生活随笔為你收集整理的【采用】规则引擎Pyke与PyClips对比研究报告(高大上啊,第一次听说pyke和pyclips这俩词~)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。