freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

drools使用手冊(cè)第六--十章-資料下載頁(yè)

2024-11-08 16:38本頁(yè)面

【導(dǎo)讀】持多個(gè)規(guī)則引擎。JSR94不本身不對(duì)規(guī)則語(yǔ)言進(jìn)行任何處理。InterchangeFormat,而OMG則開(kāi)始在RuleML的基礎(chǔ)上建立一個(gè)標(biāo)準(zhǔn),當(dāng)前Haley系統(tǒng)已經(jīng)提議一種規(guī)則語(yǔ)言標(biāo)準(zhǔn)稱為RML。思是說(shuō)JSR94API中的功能要比DroolsAPI提供的功能要少。Drools需要暴露出更多的功能,像全。提供的一小部分功能,能夠獲得的好處很有限。因此當(dāng)我們?yōu)閳?jiān)持使用JSR94. 的程序員提供API的同時(shí),我們強(qiáng)烈建議使用DroolsAPI。JSR94分為兩部分工作。第一部分是管理API用來(lái)創(chuàng)建和注冊(cè)RuleExecutionSet。第二部分是運(yùn)行時(shí)Session,用來(lái)執(zhí)行這些RuleExecutionSet。冊(cè)通過(guò)一個(gè)靜態(tài)模塊注冊(cè),在大多數(shù)情況下JDBC驅(qū)動(dòng)也使用同樣的方式。列化的本地源中裝載RuleExecutionSet,如數(shù)據(jù)流中。當(dāng)Null傳入時(shí),默認(rèn)裝載的輸入是DRL。允許為映射提供的關(guān)鍵。Source使用drl或xml作為它的值,設(shè)置source為drl. Dsl可以獲得一個(gè)讀取流或一個(gè)字符串作為值。當(dāng)注冊(cè)RuleExecutionSet時(shí)必須指定名稱,用于取回它。這也是一個(gè)輸入屬性。的字段,當(dāng)前沒(méi)有使用它,因此輸入空即可。

  

【正文】 設(shè)置的座位正確激發(fā)規(guī)則。雖然深度策略的執(zhí)行是任意的,但 Manners 對(duì)于 Jess 和 Clip在使用深度策略后正確的執(zhí)行。 Clips 支持,通過(guò)公共論壇,稱 Manner 是: [譯者注:上一段的翻譯不太清晰,保留原文 The creation of all these redundant Activations might seem pointless, but it must be remembered that Manners is not about good rule design。 its purposefully designed as a bad rule to full stress test the cross product matching process, which this clearly does. Notice that each Activation has the same time tag of 35, as they were all activated by the change in Context to ASSIGN_SEATS. With OPS5 and LEX it would correctly fire the Activation with the last asserted Seating. With Depth strategy the execution is arbitrary yet Manners does correctly execute for Jess and Clips using the Depth strategy. Clips support, via the public forums, have said that Manners was] 深度算法,作為 Clips 默認(rèn)的沖突解決策略,不同于在 OPS5 中默認(rèn)使用的策略。因此,如果你直接將一個(gè) OPS5 程序移植到CLIPS 中,但是使用默認(rèn)的深度沖突解決策略,你只能在偶然情況下獲得正確的行為。在 Clips 中提供的 Lex 和 Mea 沖突解決策略允許你快速轉(zhuǎn)換并正確的在 Clips 中運(yùn)行 OPS5 程序。 Clips Support Forum 早期的 版本,實(shí)現(xiàn)深度算法,當(dāng)出現(xiàn)激活規(guī)則有相同的優(yōu)先級(jí)并且依靠隨意激發(fā)時(shí)無(wú)法工作,意味著有著低 pid 的座位先激發(fā)。一個(gè) Lex風(fēng)格的鄰近性策略被實(shí)現(xiàn),并且這個(gè)基準(zhǔn)正確工作。這留下了問(wèn)題, Jess 和 Clips 如何工作 ,即使是偶然可以工作。我并沒(méi)有看 Jess 或 Clips 的代碼, Peter Lin 已經(jīng)證實(shí) Clips 為內(nèi)存使用鏈接的列表( LinkedLists),就像下面的 Clips 的PartialMatch 結(jié)構(gòu)中的 *next 屬性: struct partialMatch { unsigned int betaMemory : 1。 unsigned int busy : 1。 unsigned int activationf : 1。 unsigned int dependentsf : 1。 unsigned int notOriginf : 1。 unsigned int counterf : 1。 unsigned int bcount : 9。 struct partialMatch *next。 struct genericMatch binds[1]。 }。 這個(gè)方法使得鏈接記住并且嘗試連接,基于 fact 設(shè)置到節(jié)點(diǎn)中的順序;這樣激活規(guī)則的激發(fā)將基于 fact 的設(shè)置順序。當(dāng) Manners 在 Clips 中使用寬度( Breadth)策略執(zhí)行時(shí)不會(huì)進(jìn)入無(wú)限循環(huán),在下一節(jié)會(huì)說(shuō)明,它同樣不會(huì)根據(jù)座位的最高 pid 來(lái)激發(fā)已激活的規(guī)則,從沒(méi)有發(fā)現(xiàn)這種解決方案。這個(gè)發(fā)現(xiàn)說(shuō)明,被放在 Agenda 中,有同樣時(shí)間標(biāo)簽的激活規(guī)則的順序仍然按照 LIFO/FIFO 的序列進(jìn)行。更晚一點(diǎn)版本的 Drools 已經(jīng)從 BetaNode 內(nèi)存中移除了 HashMap,開(kāi)始依靠 Lex 風(fēng)格的鄰近性策略代而使用 LinkedLists 根據(jù) Fact 設(shè)置的順序來(lái)控制LIFO(看起來(lái)更像是 Clips 的 manner)。因此在 Drools 中 Manners 可以工作,但是偶然才能產(chǎn)生結(jié)果,用戶不能對(duì)此有任何期望。仍然不知道 Jess 怎樣處理這種情況, Peter Lin 相信 Jess 可能有一些簡(jiǎn)單的未公開(kāi)的 fact 鄰近性解決方案。 . Make Path and Path Done 建立并完成路徑 建立路徑規(guī)則必須在完成路徑 規(guī)則之前調(diào)用。為每一個(gè)座位會(huì)安排一個(gè)路徑,直到最后設(shè)置的座位。注意,完成路徑是建立路徑的一個(gè)子集,因此我們?cè)鯓哟_信建立路徑可以首先激發(fā)呢? rule makePath() { when { context : Context( state == ) Seating( seatingId:id, seatingPid:pid, pathDone == false ) Path( id == seatingPid, pathGuestName:guest, pathSeat:seat ) (not Path( id == seatingId, guestName == pathGuestName ) } else { ( new Path( seatingId, pathSeat, pathGuestName ) )。 } } rule pathDone() { when { context : Context( state == ) seating : Seating( pathDone == false ) } then { ( true )。 ( )。 } } 圖 . Rete 圖 OPS5 Lex 的鄰近性策略規(guī)定,如果所有比較的 Fact 有同樣的時(shí)間標(biāo)簽,那么匹配更多的 Fact 的激活規(guī)則先被激發(fā);這點(diǎn)能保證建立路徑在完成路徑之前激發(fā)。Clips 成功的完成了 Manners,不論規(guī)則在規(guī)則 文件中是以什么樣的順序定義的。如果一個(gè)系統(tǒng)不依靠鄰近性,并且規(guī)則定義的順序不影響執(zhí)行,那么 Rete 網(wǎng)絡(luò)建立的過(guò)程必須以這樣的一種方式連接 —— 確認(rèn)最復(fù)雜的規(guī)則最后被執(zhí)行,一種內(nèi)建的復(fù)雜度策略,但這是不公開(kāi)的,這樣通過(guò) LIFO 最初建立的激活規(guī)則將最后激發(fā)。當(dāng) Manners 在 CLIPS 中使用寬度( breadth)策略執(zhí)行時(shí),如果完成路徑在建立路徑之前激發(fā),它將陷入一個(gè)無(wú)限的循環(huán)。這是因?yàn)橥瓿陕窂揭?guī)則修改了上下文環(huán)境,并且刪除了建立路徑規(guī)則所產(chǎn)生的激活規(guī)則。為了正確地執(zhí)行Manners,建立路徑規(guī)則所建立的激活規(guī)則 必須在完成路徑規(guī)則之前激活。這再次說(shuō)明在 Agenda中的應(yīng)當(dāng)按任意順序執(zhí)行的激活規(guī)則同樣遵循 LIFO/FIFO策略。 . Continue and Are We Done Are We Done規(guī)則僅在最后一個(gè)座位被設(shè)置后激活,這時(shí)所有的規(guī)則都已經(jīng)激活過(guò)?;谂c建立路徑要比完成路徑先執(zhí)行的同樣原因, Continue 規(guī)則要比 Are We Down 規(guī)則優(yōu)先執(zhí)行。 rule areWeDone() { when { context : Context( state == ) LastSeat( lastSeat: seat ) Seating( rightSeat == lastSeat ) } then { ( )。 } } rule continue() { Context context。 when { context : Context( state == ) } then { ( )。 } } . 結(jié)論 從這里我們學(xué)到了什么? Manners 被設(shè)計(jì)為運(yùn)行在 OPS5 的 Recency(鄰近性)策略下,如果它在 Jess 或 Clips 的深度策略下工作,那從用戶的角度看,它具有完全的偶然性,即使是由開(kāi)發(fā)者專門的設(shè)計(jì)。當(dāng) manners 完成了正確的輸出時(shí),它也向連接節(jié)點(diǎn)提供了很好的壓力測(cè)試;但是,如果基于鄰近性策略的 Fact 被使用,只有 Agenda 沖突解決方案將被測(cè)試。 ? 對(duì)客人的興趣使用數(shù)組,代替將它們作為單獨(dú)的 fact 設(shè)置。這將大量減少叉集。 ? 改變數(shù)據(jù)的順序也可以減少匹配的次數(shù),增加執(zhí)行速度 ? [譯者注:本句無(wú)法正確理解翻譯,保留原文 Changing NOT CE (conditional element) such that the test algorithm only uses the firstbestmatch. Basically, changing the test algorithm to backward chaining. the results are only parable to other backward chaining rule engines or ports of Manners.] ? 刪除上下文,這樣規(guī)則引擎可以更早的匹配客人和座位。一個(gè)合適的接口可以阻止使用上下文匹配得到的 fact 啟動(dòng)。 [譯者注:原文如下 Removing the context so the rule engine matches the guests and seats prematurely. A proper port will prevent facts from matching using the context start.] ? 任何可以阻止規(guī)則引擎執(zhí)行組合模式匹配的改變 ? 如果沒(méi)有 fact 在論證循環(huán)中被刪除,作為一個(gè)非條件元素的結(jié)果,接口是不正確的。 所有上面的是外部最優(yōu)化,這些情況容易發(fā)現(xiàn)并且使得結(jié)果無(wú)效。但是它也可能內(nèi)部?jī)?yōu)化,這可以從 Leaps 算法看到; Drools 有一個(gè)實(shí)驗(yàn)性質(zhì)的實(shí)現(xiàn)。 Manners是對(duì)不同連接的叉集算法速度的殘酷壓力測(cè)試。 Leaps 避免完全的叉集算法測(cè)試,僅僅留意主要的連接,因此當(dāng) Rete 可能建立數(shù)以百計(jì) 的激活規(guī)則時(shí), Leaps僅僅建立一個(gè),這導(dǎo)致了速度的量級(jí)增加?,F(xiàn)代的基于 Rete 算法的規(guī)則引擎開(kāi)始分析網(wǎng)絡(luò)并實(shí)現(xiàn)這種類型的優(yōu)化,不管它是一個(gè) leaps 風(fēng)格的懶惰評(píng)估或者一個(gè)預(yù)編譯的優(yōu)化以避免錯(cuò)誤的連接。 Drools ReteOO 目前沒(méi)有實(shí)現(xiàn)這些優(yōu)化,雖然預(yù)編譯優(yōu)化在下一個(gè)版本中會(huì)進(jìn)行研究。這些優(yōu)化使得 Manners 小姐的基準(zhǔn)變成多余的,并且在這個(gè) manner 中建立一個(gè)最適宜的系統(tǒng)的結(jié)果將被考慮避免。這個(gè)觀點(diǎn)之前也被 James Own 提出過(guò),他發(fā)表了 20202020 Benchmarks。 由于在 BRMS 引擎中的重大提升, 2020 2020 Benchmarks 將在2020 有重大的改變和超越。例如, Miss Manners 和 Waltz 50 將不再討論,并且我們將僅僅用 WaltzDB 測(cè)試所有的引擎(在這個(gè)時(shí)候),并且仍然決定連續(xù)的基準(zhǔn)或許將不會(huì)使用 Rete 算法。 James Own, 20202020 Benchmarks, KnowledgeBased Systems Corporation . 輸出摘要 Assign First seat =[fid:13:13]:[Seating id=1, pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5] =[fid:14:14]:[Path id=1, seat=1, guest=n5] ==[ActivationCreated(16): rule=findSeating [fid:13:13]:[Seating id=1, pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5] [fid:9:9]:[Guest name=n5, sex=f, hobbies=h1] [fid:1:1]:[Guest name=n1, sex=m, hobbies=h1] ==[ActivationCreated(16): rule=findSeating [fid:13:13]:[Seating id=1 , pid=0, done=true, ls=1, ln=n5, rs=1, rn=n5] [fid:9:9]:[Guest name=n5, sex=f, hobbies=h1] [fid:5:5]:[Guest name=n4, sex=m, hobbies=h1]* Assign Seating =[fid:15:17] :[Seating id=2 , pid=1 , done=false, ls=1, lg=n5, rs=2, rn=n4] =[fid:16:18]:[Path id=2, seat=2, guest=n4] =[fid:17:
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1