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

正文內(nèi)容

clips中文用戶手冊(cè)-資料下載頁

2025-06-29 06:12本頁面
  

【正文】 則的模式均被滿足,程序輸出“Go”。你可以在一條規(guī)則中加入多條模式或行為。重要的一點(diǎn)是,只有當(dāng)規(guī)則中所有的模式都被事實(shí)表中的事實(shí)滿足時(shí),規(guī)則才能被觸發(fā)。這種約束類型被稱為邏輯與條件元素(logical AND conditional element(CE)),是關(guān)于布爾型的“與”關(guān)系。AND關(guān)系只有當(dāng)所有的條件都為真時(shí)才為真。因?yàn)槟J綖锳ND類型,如果只有一個(gè)模式被滿足,規(guī)則不會(huì)被觸發(fā)。只有給出規(guī)則LHS中所有的模式滿足,規(guī)則才能被放入到議程中。 策略的問題策略(strategy)一詞最初是一個(gè)軍事術(shù)語,用在戰(zhàn)爭(zhēng)的謀劃和行動(dòng)中?,F(xiàn)在,該術(shù)語普遍被用在商海(商海即是戰(zhàn)場(chǎng))中,適用于一個(gè)組織為了達(dá)到他們的目的所做的高級(jí)計(jì)劃等?!氨仁澜缟掀渌娜速u出更多的多脂漢堡,賺更多的錢!”在專家系統(tǒng)中,strategy術(shù)語的一個(gè)用法是激活的沖突消解。那么你也許會(huì)說,“那好,我現(xiàn)在就將設(shè)計(jì)好我的專家系統(tǒng),以便同一時(shí)刻僅有一條規(guī)則可能被激活,那么就用不上沖突消解了。”好消息是:如果你成功了,那么沖突消解確實(shí)無關(guān)緊要,壞消息是:你的成功證明了你的應(yīng)用軟件能被一個(gè)連續(xù)的程序很好的表達(dá)出來,那么你還不如首選在C,Java或者Ada中編寫代碼,犯不著去編寫一個(gè)專家系統(tǒng)。CLIPS提供了七種不同的沖突消解策略:深度優(yōu)先(depth),廣度優(yōu)先(breadth),LEX,MEA,plexity,simplicity和隨機(jī)(random)。在不考慮具體的應(yīng)用軟件程序時(shí),很難說清哪一種策略更好。即使那樣,判斷上面的七種策略哪一個(gè)是“最好”的,也相當(dāng)困難。如果你想了解更多關(guān)于這些策略的詳細(xì)信息,請(qǐng)參考CLIPS參考指南。深度優(yōu)先策略(depth strategy)是CLIPS標(biāo)準(zhǔn)默認(rèn)策略(default strategy)。當(dāng)CLIPS第一次啟動(dòng)時(shí),該默認(rèn)設(shè)置便會(huì)被自動(dòng)設(shè)置,后面,你可以更改默認(rèn)設(shè)置。在深度優(yōu)先策略中,在高權(quán)值的激活后,同權(quán)值或低權(quán)值之前,新的激活將會(huì)被放到議程中。這就是說議程中是從高權(quán)值到低權(quán)值進(jìn)行排序的。在本書中,所有的討論和例子均是在假設(shè)為深度優(yōu)先策略前提下的?,F(xiàn)在,你知道了所有的這些可選設(shè)置是多么的有用,一定得記住:當(dāng)你運(yùn)行一個(gè)由你和其他人共同編寫的專家系統(tǒng)時(shí),要保證你們的設(shè)置是一致的。否則,你會(huì)發(fā)現(xiàn)操作無效或者甚至是錯(cuò)誤的。事實(shí)上,最好的辦法是在你開發(fā)的過程中,對(duì)任何系統(tǒng)進(jìn)行顯式的設(shè)置編碼,以保證正確配置。自定義事實(shí)當(dāng)你使用CLIPS的時(shí)候,你也許會(huì)對(duì)在頂層中輸入相同的聲明事實(shí)而感到厭煩。如果你準(zhǔn)備在程序運(yùn)行的時(shí)候用到相同的聲明,首先你可以用批處理文件加載磁盤里的聲明,其次,你還可以使用自定義事實(shí)關(guān)鍵字:deffacts。舉例如下:CLIPS(unwatch facts)CLIPS(unwatch activations)CLIPS(clear)CLIPS(deffacts walk “Some facts about walking”(status walking) 。 被聲明的事實(shí)(walksign walk)) 。 被聲明的事實(shí)CLIPS(reset) 。 引入被自定義聲明的事實(shí)CLIPS(facts)f0 (initialfact)f1 (status walking)f2 (walksign walk)For a total of 3 facts.CLIPS自定義事實(shí)聲明,必需指定一個(gè)事實(shí)名,如上面的walk,跟在關(guān)鍵字deffacts的后面,事實(shí)名后面可以跟由雙引號(hào)包含的注釋。同規(guī)則中的注釋一樣,當(dāng)CLIPS載入(deffacts)事實(shí)時(shí),(deffacts)的注釋將會(huì)被保留。事實(shí)名或注釋后面便是將要被聲明到事實(shí)表中的事實(shí),自定義的事實(shí)由CLIPS的(reset)命令聲明添加。事實(shí)(initialfact)由(reset)命令自動(dòng)添加進(jìn)來,并且它的事實(shí)標(biāo)識(shí)符一直是f0。即使沒有任何自定義的聲明,(reset)命令也會(huì)自動(dòng)聲明事實(shí)(initialfact)。在CLIPS的早期版本中,該事實(shí)被用來激活一些類型的規(guī)則,但是現(xiàn)在它早已不作此目的使用了。它被用來對(duì)那些顯式匹配于該事實(shí)的程序向后兼容。(reset)命令較之(clear)命令的一個(gè)好處是,它不會(huì)丟棄所有的規(guī)則。(reset)命令使規(guī)則完整無缺,而(clear)命令將會(huì)移除所有議程中的規(guī)則,并移除所有事實(shí)表中的舊的事實(shí)。用(reset)命令是開始一個(gè)程序執(zhí)行的首選方法,特別是之前程序已經(jīng)在運(yùn)行并且事實(shí)表已經(jīng)被舊的事實(shí)打亂時(shí)??偠灾?,(reset)命令作用于事實(shí)有三點(diǎn):(1)將存在的事實(shí)從事實(shí)表中移除,同時(shí)也會(huì)移除議程中的激活規(guī)則。(2)聲明事實(shí)(initialfact)(3)聲明已自定義(deffacts)聲明的事實(shí)。事實(shí)上,(reset)命令對(duì)于對(duì)象也有相似的作用。它可以刪除實(shí)例,創(chuàng)建initialobject,聲明添加自定義實(shí)例(definstances)。選擇性消除undeffacts命令的作用是通過消除內(nèi)存中的自定義事實(shí)來撤銷(deffacts)聲明事實(shí)。舉個(gè)例子:CLIPS(undeffacts walk)CLIPS(reset)CLIPS(facts)f0 (initialfact)For a total of 1 fact.CLIPS這個(gè)例子演示了怎樣將自定義的事實(shí)walk消除。如果執(zhí)行了(undeffacts)后,想保存一個(gè)自定義事實(shí)聲明,則必須重新定義。你甚至還可以使用(undeffacts)清除initialfact事實(shí)。除了事實(shí)之外,CLIPS還允許使用undefrule命令消除選定的規(guī)則。注意你可以對(duì)議程監(jiān)視規(guī)則(watch rules)觸發(fā)和監(jiān)視激活(watch activations)。監(jiān)視統(tǒng)計(jì)(watch statistics)給出已經(jīng)觸發(fā)規(guī)則數(shù),執(zhí)行時(shí)間,每秒規(guī)則數(shù),事實(shí)的平均數(shù),事實(shí)的最大數(shù),激活的平均數(shù)和激活的最大數(shù)等信息。這些統(tǒng)計(jì)信息對(duì)于調(diào)整專家系統(tǒng)、優(yōu)化運(yùn)行速度非常有用。另一個(gè)命令叫:“watch pilations”,用來顯示當(dāng)規(guī)則被加載時(shí)的信息。watch all命令監(jiān)視所有的項(xiàng)目。使用dribble命令打印和查看信息到屏幕或磁盤,將會(huì)使你的程序稍微變慢,這是因?yàn)镃LIPS需要花較多的時(shí)間去打印或保存信息到磁盤中去。dribbleon命令會(huì)將所有的信息存儲(chǔ)到被選入對(duì)話框的磁盤文件中,直到dribbleoff命令的輸入才終止。這在提供任何事情發(fā)生時(shí)的參數(shù)記錄是非常方便的。這兩個(gè)命令如下:(dribbleon filename)(dribbleoff filename)另外一個(gè)有用的調(diào)試命令是(run),該命令提供了一個(gè)觸發(fā)規(guī)則數(shù)目的可選參數(shù)。舉個(gè)例子,(run 21)命令將會(huì)告知CLIPS運(yùn)行,并當(dāng)21個(gè)規(guī)則觸發(fā)后停止。(run 1)命令允許你每次只能執(zhí)行一步程序。(step)命令等同于(run 1)。像其它的編程語言一樣,CLIPS也提供斷點(diǎn)(breakpoints)支持,斷點(diǎn)作為CLIPS的一個(gè)簡(jiǎn)單指示符,停止順序執(zhí)行而優(yōu)先執(zhí)行指定規(guī)則。斷點(diǎn)由setbreak命令設(shè)置。removebreak命令將移除已經(jīng)設(shè)置的斷點(diǎn)。showbreaks命令顯示所有設(shè)置斷點(diǎn)的規(guī)則。帶參數(shù)(rulename)的規(guī)則句法如下所示:(setbreak fulename)(removebreak rulename)(showbreaks)合適的匹配你可能會(huì)遭遇到這種情況:當(dāng)你確定某條規(guī)則應(yīng)該被激活卻沒有被激活。這也許是你的CLIPS中存在有漏洞,因?yàn)閷?duì)于一個(gè)技術(shù)非常好的CLIPS的程序員來說,應(yīng)該不可能是他們的問題(注意:為開發(fā)者做些商業(yè)宣傳)(這里是反語,幽默)。多數(shù)情況下,出現(xiàn)錯(cuò)誤的原因是你書寫規(guī)則的方式不對(duì)。為了給調(diào)試提供幫助,CLIPS有一個(gè)被稱為matches的命令,這個(gè)命令可以告訴你那些規(guī)則中的模式與事實(shí)可以匹配,哪些模式不能匹配而使規(guī)則不被激活。出現(xiàn)錯(cuò)誤的一個(gè)普遍原因是,模式中的元素拼寫錯(cuò)誤導(dǎo)致與事實(shí)不匹配或增加的事實(shí)有拼寫錯(cuò)誤。(matches)的參數(shù)為需要被檢查匹配規(guī)則的規(guī)則名。讓我們來看看(matches)起著怎樣的作用,首先輸入(clear)命令,然后輸入下面的規(guī)則:(defrule takeavacation(work done) 。 條件因素1(money plenty) 。 條件因素2(reservations made) 。 條件因素3= (printout t “Let’s go!!!” crlf))下面將顯示(matches)命令的用法,輸入所示的命令,注意(watch facts)命令被開啟,當(dāng)你手動(dòng)聲明事實(shí)的時(shí)候,這是一個(gè)不錯(cuò)的方法,它可以提供給你一次檢查事實(shí)拼寫的機(jī)會(huì)。CLIPS(watch facts)CLIPS(assert (work done))==f1 (work done)Fact1CLIPS(matches takeavacation)Matches for Pattern 1f1Matches for Pattern 2NoneMatches for Pattern 3NonePartial matches for CEs 1 – 2 。 CE即條件元素NonePartial matches for CEs 1 – 3NoneActivationsNoneCLIPS通過(matches)命令,可以看到事實(shí)標(biāo)識(shí)為f1的事實(shí)與規(guī)則中的第一個(gè)模式或稱之為條件因素可匹配。規(guī)則可能有N條模式,術(shù)語部分匹配(partial matches)是關(guān)于第N個(gè)模式與第一個(gè)事實(shí)匹配的所有設(shè)置,也就是說,部分匹配開始于規(guī)則的第一個(gè)模式,終止于任何一個(gè)模式,但不包含最后一個(gè)模式。當(dāng)一個(gè)部分匹配不能成立時(shí),CLIPS將不會(huì)繼續(xù)檢查后面的匹配。舉個(gè)例子,一個(gè)規(guī)則有四個(gè)模式,有可能第一個(gè)和第二個(gè)模式或第三個(gè)模式都可能匹配成功,但,只有當(dāng)所有的模式都匹配,這條規(guī)則才能被激活。其他特性這里有一些其他有用的關(guān)于自定義事的命令。舉個(gè)例子,listdeffacts命令將會(huì)列出當(dāng)前CLIPS載入的所有自定義事實(shí)的事實(shí)名。另一個(gè)有用的命令是ppdeffacts,它將所有存儲(chǔ)的自定義事實(shí)信息打印出來。函數(shù) 作用assertstring 以字符串作為參數(shù)執(zhí)行一個(gè)字符聲明和作為一個(gè)無字符串事實(shí)的聲明strcat 通過字符串(string concatenation)從單項(xiàng)目中構(gòu)建一個(gè)單引號(hào)字符串strindex 返回第一次出現(xiàn)子串的字符串索引(string index)substring 返回一個(gè)字符串的子字符串strpare 執(zhí)行字符串比較(string pare)strlength 返回字符串的長(zhǎng)度(string pare)symcat 返回連結(jié)符號(hào) 如果你想不用圓括號(hào)來輸出多變量,最簡(jiǎn)單的方法就是用string implode function,implode$。 第四章 變量沒改變更甚于改變。迄今為止,你已經(jīng)了解了一些規(guī)則的類型,簡(jiǎn)單的闡述了規(guī)則的模式與事實(shí)匹配的一些內(nèi)容。在本章中,你將會(huì)學(xué)到一些更有用的匹配和處理事實(shí)的方法。認(rèn)識(shí)變量同其他編程語言一樣,CLIPS也通過變量(variables)來存儲(chǔ)值。與事實(shí)不同的是,事實(shí)是靜態(tài)的且不會(huì)改變,而變量的內(nèi)容是隨著其分配的值的改變而動(dòng)態(tài)(dynamic)變化的。相比之下,一旦一個(gè)事實(shí)被聲明,它的字段僅僅只能被撤銷和重新聲明一個(gè)該字段的事實(shí)而修改,甚至,這些事實(shí)的撤銷和聲明修改(將在本章后面的deftemplate中詳細(xì)描述)是通過你所知道的修改事實(shí)索引執(zhí)行的。變量名,或者稱之為變量標(biāo)識(shí)符(variable identifier),通常被寫在一個(gè)問號(hào)的后面,即變量名。通用格式如下:?variablename全局變量將在后面詳細(xì)講到,與上面的句法比較有些許不同。如同其他的編程語言一樣,變量名應(yīng)該有一種好的命名方式,具有明確的含義。一些有效的變量名實(shí)例如下: ?x ?noun ?color ?sensor ?valve ?duckseaten在一個(gè)變量能夠被使用之前,它必須被分配一個(gè)值。下面是一個(gè)沒有分配值的例子,嘗試輸入下面的代碼,你將會(huì)看到CLIPS會(huì)響應(yīng)一個(gè)錯(cuò)誤消息:CLIPS(unwatch all)CLIPS(clear)CLIPS(defrule test=(printout t ?x crlf))[PRCCPDE3] Undefined variable x referenced in RHS of defrule.ERROR:(defrule MAIN::test=(printout t ?x crlf))CLIPS當(dāng)CLIPS不能找到?x變量的約束值(value bound)時(shí),便會(huì)拋出一個(gè)錯(cuò)誤的提示。術(shù)語bound意味著對(duì)變量所分配的值。只有全局變量約束于所有的規(guī)則。其他所有的變量均約束于一條規(guī)則。在一條規(guī)則被觸發(fā)前后,如果非全局變量沒有被約束,那么當(dāng)你嘗試調(diào)用該變量時(shí),CLIPS就會(huì)給出一個(gè)錯(cuò)誤提示。果斷點(diǎn)一個(gè)變量的慣用方式是:在LHS中匹配一個(gè)值,隨后在RHS中對(duì)該變量進(jìn)行約束。舉例如下:(defrule makequack(ducksound ?sound)=(assert (soundis ?sound)))聲明事實(shí)(ducksound quack),然后用(run)命令運(yùn)行程序,檢查規(guī)則,你
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1