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