rete_Rete之外的生活– RIP Rete 2013 :)
生活随笔
收集整理的這篇文章主要介紹了
rete_Rete之外的生活– RIP Rete 2013 :)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
rete
我只是對我的新算法做最后的修改。 它融合了Leaps , 面向集合的Match和Left / Right取消鏈接的概念 ,以及我自己的一些想法。 該代碼已提交,但我正在積累工作并編寫更多測試。 我將在一周左右的時間內寫一個完整的博客,詳細介紹它,并希望為人們提供一個alpha版本。 該算法解決了Rete的貪婪和浪費性質。 如果我們使用GWT進行JS移植,這將使其適合于更受限的環境,例如移動設備或瀏覽器。 此外,它在設計時考慮了多核的使用-盡管我還沒有實現。 對于那些了解術語的人,這里是我到目前為止所做的要點列表。
規則解除連結
- 使用細分來保留共享。 位掩碼用于正確的輸入和段,以進行有效檢查。
- 當所有正確的輸入都設置了位時,Segment設置了位。
- 當每個段都設置了位時,將鏈接一個規則。
- 在一條規則都完全鏈接到議程中之前,不會進行beta測試(請參閱惰性規則評估)
- 當任何正確的輸入沒有數據時,可以取消鏈接的規則
- 將保留所有完整和部分聯接數據。
- 我懷疑我們可以使用弧度一致性來進一步延遲設置的時間,而不是簡單地存在正確的輸入
懶惰規則評估
- 鏈接時不會評估Rule的beta網絡。 而是將其添加到優先級隊列中,僅當它彈出時,我們才評估其Beta網絡
面向集合的傳播
- 為正確的輸入暫存所有插入,更新和刪除操作,直到評估規則為止。
- Beta網絡評估從根本開始
- 所有插入/更新/刪除操作將一起處理,從而導致一組元組被傳播到下一個節點
- 確保課程粒度節點評估,是多核調度的理想選擇。
- 單次傳播而不是典型的Rete,深度搜索會影響網絡。
- 請注意,我們還沒有進行面向集合的匹配,這會折疊節點中的匹配空間。
- 當我們借用集合傳播概念時,面向集合的匹配的碎片整理過程需要更多考慮,因為它有缺點。
就地修改/差異更新
- 修改是真實的,而不是撤消+斷言
- 允許補償“撤消”操作,因為我們知道真正刪除了什么,更新了什么。
- 保留對象,以避免GC命中。
物業React
- 模式可以偵聽并對特定的屬性更改做出React
- 將其視為屬性更改偵聽器,而不是當前類更改偵聽器
基于樹的圖
- 撤回只需要迭代圖
- 允許有效的“就地修改”
子網支持
- 不存在,積累可以支持的嵌套組和模式
- 作為單程網絡評估的一部分得到支持
- 我們的元組集到達左輸入,然后遞歸地評估subetnworks。
雖然還不完善,但我可以想到以下一些TODO項目,以提出近期和長期的想法:
更有效的子網
- 新的設計允許子網內更有效的執行,但是我們還沒有利用這一點。
GC加盟
- 如果未使用聯接,則允許它們在一段時間后進行GC處理,但還必須在不使規則執行順序無效的情況下支持重新創建(即,如果已觸發,則不能再次觸發該規則)
不同的網絡拓撲
- Rete網絡始終從左到右連接,這并不總是有效的。 Treat和Gator網絡著眼于不同的拓撲如何減少加入嘗試的次數,它還可以改善與我們新的基于分段的網絡的共享。
多核工作
- 該設計現在已經基于隊列,并且支持粗粒度的工作單元。 現在,我們需要開始創建線程模型,并更好地隔離和分離alpha網絡傳播過程。 這涉及重構我們現有的鎖定模型。
- 需要對重疊規則進行有效測試-即一個規則與另一條規則共享段。 這將使我們能夠評估規則,而無需同步點。
智能鏈接
- 當正確的輸入接收到單個事實時,通過設置位完成鏈接。 弧度一致性可用于進一步延遲此鏈接過程,僅在實現弧度一致性時才在規則段以及規則中進行鏈接。
MVCC和交易
- 傳播模型應支持多版本并行控制。 這對于獲得更好的多核支持是必不可少的,它將使事務支持成為可能。
參考: Drools&jBPM博客上來自JCG合作伙伴 Geoffrey De-Smet的《超越Rete的生活– RIP Rete 2013:》 。
翻譯自: https://www.javacodegeeks.com/2013/04/life-beyond-rete-r-i-p-rete-2013.html
rete
總結
以上是生活随笔為你收集整理的rete_Rete之外的生活– RIP Rete 2013 :)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java命令行界面(第22部分):arg
- 下一篇: 查看linux io负载(查看linux