




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、.專業(yè)整理.暨南大學(xué)本科實驗報告專用紙課程名稱人工智能與專家系統(tǒng)成績評定0實驗項目名稱 動物識別系統(tǒng)設(shè)計指導(dǎo)教師0實驗項目編號實驗項目類型 綜合型0實驗地點 南校區(qū) 學(xué)生姓名學(xué)號0學(xué)院 信息科學(xué)技術(shù)學(xué)院 系 計算機科學(xué)系 專業(yè)0實驗時間2017年12月日- 年_月日 溫度濕度(一)實驗?zāi)康耐ㄟ^建立動物識別產(chǎn)生式系統(tǒng),理解并體會知識庫與控制系統(tǒng)相互獨立的智 能產(chǎn)生式系統(tǒng)與一般程序的區(qū)別。(二)實驗要求1. 系統(tǒng)的設(shè)計和完成可以使用各種編程語言和實用工具,不采用人工智能語 言和工具,這樣能夠使你更加了解專家系統(tǒng)。2. 推薦使用語言:C、java、php、javascript 、delphi。也可以
2、使用其他語 言。3如果使用數(shù)據(jù)庫做后臺,要求使用最簡單的 Access o4.系統(tǒng)可以使用圖形界面,簡單的也可以使用字符界面,不要求。(三)設(shè)計并完成知識庫本課程設(shè)計的主旨是設(shè)計并實現(xiàn)具有 15條規(guī)則能自動識別7種動物的產(chǎn)生 式系統(tǒng)。知識庫與控制系統(tǒng)相互獨立,系統(tǒng)完成后除了能識別已有的7種動物外, 按產(chǎn)生式知識表示方法向知識庫中添加、修改新的知識后,系統(tǒng)能在不修改控制 系統(tǒng)程序的情況下仍然能正確識別。1.綜合數(shù)據(jù)庫中數(shù)據(jù)結(jié)構(gòu)說明;產(chǎn)生式通過滿足前件,得到后件的結(jié)論或者執(zhí)行后件的相應(yīng)動作, 即后 件由前件來觸發(fā)。同時,一個產(chǎn)生式生成的結(jié)論可以作為另一個產(chǎn)生式的前提或語言變量使用,進一步可構(gòu)成產(chǎn)生
3、式系統(tǒng)。因此在通過有關(guān)特征識別動物的特征中規(guī)定:識別動物的前件(即動物的特征):0:有毛發(fā)1:有奶2:有羽毛3:會飛4:會生蛋5:吃肉6:有鋒利牙齒7:有爪8:眼向前方9:有蹄10:反芻11:黃褐色皮毛12:有暗斑點13:有黑色條紋 14:長脖子15:長腿16:不會飛17:會游泳18:黑白二色19:善飛產(chǎn)生的中間結(jié)果(即動物的類別)20:哺乳動物 最終結(jié)論:|21.鳥22.食肉動物23.有蹄類動物24.虎 25.豹26.斑馬27.長頸鹿28.企鵝29.鴕鳥30.信天翁于是在綜合數(shù)據(jù)庫中,將設(shè)定int型數(shù)組facts30,數(shù)組的編號對應(yīng) 著以上事實的編號,數(shù)組的值為1時,意味著對應(yīng)編號的事實為真
4、,否則為假。2. 規(guī)則的格式的數(shù)據(jù)結(jié)構(gòu)說明;每條規(guī)則都擁有前件與后件,建立規(guī)則的數(shù)據(jù)結(jié)構(gòu)時將前件與后件定義 即可。前件往往有一個或多個,而后件只有一個。為了方便采用序號代替前后件, 因此定義前件為數(shù)組int condition6;定義后件int outcome;規(guī)則的數(shù)據(jù)結(jié)構(gòu)也隨之敲定。typedef struct /存放規(guī)則的結(jié)構(gòu)體,由條件和結(jié)果構(gòu)成皆用序號int型表示int condition6;/ 條件int outcome; / 結(jié)論Rule;將15條規(guī)則轉(zhuǎn)化為符號:0,20,有毛發(fā)一哺乳動物1,20,有奶一哺乳動物2,21,有羽毛一鳥3,4,21,會飛&會生蛋一鳥5,22,吃肉一食肉
5、動物6,7,8,22,有鋒利牙齒&有爪別眼向前方一食肉動物20,8,23,哺乳動物&有蹄一有蹄類動物20,9,23,哺乳動物&反芻一有蹄類動物20,22,11,12,25,哺乳動物&食肉動物&有黃褐色皮毛&有暗斑點一豹20,22,11,13,24,哺乳動物&食肉動物&有黃褐色皮毛&有黑色條紋-虎23,14,15,12,27,有蹄類動物&長脖子&長腿&有暗斑點一長頸鹿23,13,26,有蹄類動物&有黑色條紋一斑馬21,16,14,15,18,29,鳥&不會飛&長脖子&長腿&黑白兩色一鴕鳥21,16,17,18,28,鳥&不會飛&會游泳&黑白兩色一企鵝21,19,24;鳥&善飛一信天翁3. 推理機
6、(包括正向和反向推理)過程。在上述規(guī)則的基礎(chǔ)上,可以利用推理機對給出條件進行推理:(1)正向推理:從下向上進行推理。在建立規(guī)則庫時需要使子規(guī)則在父規(guī)則前。在進行正向推理是只要將規(guī)則庫從前到后遍歷下來看是否能由給定規(guī)則推出 相應(yīng)結(jié)果即可。通過判斷每次與規(guī)則匹配得到的結(jié)果,如果結(jié)果不是動物, 則更新事實庫,將此次結(jié)果作為前件匹配下一個規(guī)則。若有多條規(guī)則可用, 則使用沖突消解策略,選取一條規(guī)則執(zhí)行。直到最終結(jié)果是動物時,視為 推理成功。具體步驟如下:a. 輸入得到當前事實facts,針對15條rules輪流篩查可用規(guī) 貝U。b. 將rules所需的前件提取出來與facts中的事實進行比對。若有 多條
7、規(guī)則可用時,沖突消解的方法是:選取規(guī)則表rules中順序最前的規(guī) 貝U。找到可用規(guī)則。擴充facts,重復(fù)b步驟。c. 在無可擴充時,檢查facts ,若其中沒有結(jié)果是動物,則推理失.學(xué)習(xí)幫手.專業(yè)整理.敗;若其中推理出超過兩個動物時,仍記為推理失敗。在只有一個結(jié)果是 動物時,則推理成功。(2)反向推理:反向推理的思路是從事實庫的動物開始從前向后進行匹配,如果所 有動物都不能推出為識別失敗,若能推出其中一個,則識別成功。若有多 條規(guī)則可用,則從中選出一條規(guī)則,將規(guī)則的前件添加到綜合數(shù)據(jù)庫。具體步驟如下:a. 假設(shè)有動物m若其已經(jīng)在facts中,則假設(shè)成立搜索終止。b. 若該假設(shè)動物不在fact
8、s中,則從rules中所有后件中含有該動 物m的規(guī)則組成表。若該表為空,貝U詢問用戶 fact的真假,若為真,則 將fact添加到facts,搜索中止。c. 若該表不為空,則逐個判斷表內(nèi)規(guī)則是否有規(guī)則的全部前件都包 含在facts中,如果有,則證明假設(shè)可以直接被推出。識別成功。d. 如果不能直接推出,則重新進行步驟b,直至滿足步驟c。這時, 我們認為假設(shè)可以被間接推出,識別成功。否則若沒有可用規(guī)則,則識別 失敗。(四)開發(fā)環(huán)境1. 工具:C-free 5.02. 語言:C+3.OS平臺說明:win10(五)綜合數(shù)據(jù)庫與推理機1.綜合數(shù)據(jù)庫char *a nimalBase = 0.有毛發(fā),1.
9、有奶,2.有羽毛,3.會飛,4.會生蛋,5 .吃肉,6.有鋒利牙齒,7.有爪,8.眼向前方,9.有蹄, 10.反芻, 11.有黃褐色皮毛,12.有暗斑點,13.有黑色條紋, 14.長脖子, 15.長腿, 16.不會飛,17.會游泳, 18.黑白二色, 19.善飛I!20.哺乳動物,21.鳥,22.食肉動物,23.有蹄類動物,24.虎,25.豹, 26.斑馬,27.長頸鹿,28.企鵝,29.鴕鳥,30.信天翁;5.學(xué)習(xí)幫手.專業(yè)整理.對應(yīng)以上特征,設(shè)定整型數(shù)組存儲求解過程中產(chǎn)生的各種信息,包括初始 事實、推理得到的中間結(jié)論,以及最終結(jié)論。int facts30 = 0 ;/記錄被選擇的事實,初始
10、化都為0,被選擇后賦值為1對三種不同的信息進行區(qū)分的方法是利用序號區(qū)間進行區(qū)分。0-19序號部分是存放原始信息,20-23存放的是中間結(jié)論,24-30存放了最后的結(jié)論。2.推理機推理部分主要使用了兩個函數(shù),分別是 deduce函數(shù)和animal函數(shù)。Deduce函數(shù)是用于根據(jù)原始信息,進行規(guī)則的遍歷,不斷正向推理的函 數(shù);animal函數(shù)是利用deduce函數(shù)推理得出的facts數(shù)組,即綜合數(shù)據(jù)庫,進 行結(jié)果的判斷,如果推理得出的結(jié)果唯一,則返回推理成功的信息,輸出最終的 結(jié)果,否則判定為推理失敗。for (i = 0;i15;i+)/依次對15條規(guī)則進行檢測j = 0;f = rulei.c
11、on diti on j;while (f != -1)/推理是否滿足第i條規(guī)則if (factsf = 0)/第i條規(guī)則有一個條件不滿足,即為不滿足該條規(guī)則break;/從此次i規(guī)則檢驗循環(huán)中跳岀j+;f = rulei.conditionj;/取岀i規(guī)則中所需的條件序號if (f = -1)/若經(jīng)過上一個循環(huán)有f=-1 ,則代表滿足第i條規(guī)則out1 = rulei.outcome;factsout1 = 1;/將得岀的結(jié)論加入已知事實printf(運用了規(guī)則(%d) :, i);/并輸岀所用規(guī)則,以便查看j = 0;while (rulei.conditionj != -1)cout a
12、nimalBaserulei.conditionj ; / 輸岀規(guī)則所用先決條件j+;cout animalBaseout1 endl; / 輸岀規(guī)則所用結(jié)果上述就是Deduce函數(shù)的主要內(nèi)容,取出每一條規(guī)則的全部前件與事實庫facts中進行比對,若滿足該規(guī)則,則該規(guī)則的后件將會被擴充到facts數(shù)組中, 同時也文字輸出,以便使用者確認運行過程中使用的規(guī)則。遍歷完15條規(guī)則后,facts數(shù)組中就存放了推理得出的全部事實。接下來就將facts數(shù)組傳入animal函數(shù),從綜合數(shù)據(jù)庫中遴選最終結(jié)論:int animal( int facts ) /判斷知識庫中是否有符合描述的動物int i = 24
13、, a = 0, b = 0;/判斷有多少結(jié)果滿足特定動物區(qū)間while (i 2,說明有多個動物滿足描述條件,仍然不能確定最終結(jié)果。 只有當a=1時,有唯一的動物符合描述,這時推理成功,返回該動物的編號并輸 出。(六) 實驗結(jié)果1.輸入0 5 11 12 -1(這里末尾輸入-1代表結(jié)束輸入)3會飛7 一有爪1L有黃褐色皮毛15.往陰la H飛21看蹄類動物即輸入有毛發(fā)、吃肉、有黃褐色皮毛、有暗斑點這四個特點,讓系統(tǒng)進行 推理??傻玫轿ㄒ坏慕Y(jié)果:豹0一有毛發(fā)L有奶2有羽毛4一會生蛋匚有鋒利牙憐艮眼向前方9.10,反芻12.有時斑點 有黑色條紅14,棧脖子 応不會飛17.fr游泳13.白二色加哺
14、乳功物21鳥22食離動初請輸入動物特征蕭號(-1): 0 0 11 1 1RULE(O): 0.有毛發(fā) 20.哺乳勃物25. ftRULE 眾一債肉動物RULE:ZOL哺乳劫物ZZ.-fr肉劫物1L有黃趨色皮毛12-Wffi斑點慨終推理蟲您所描述的動物為:跆是否堇新推理:(Y/M2.輸入0 2 3 14 17 -1即輸入有毛發(fā)、有羽毛、會飛、長脖子、會游泳這五個特點交由程序進行推理。由于不存在這樣的動物,因此結(jié)果是:1.WW2-有羽毛3一會飛4.余牛慣5吃肉6.有鐳利牙齒7 WMS.眼向前方d有瑋10.反芻1L有黃褐色皮毛吐有暗斑點13.有黑邑黑紋14.栓脖子15.區(qū)腿不會飛17.會游泳18.
15、黑自二色19,善飛20.哺乳勁物21.fi22合肉功軻23.有蹄類動物聲輸人動皈特征辭導(dǎo)結(jié)東);0 2 3 14 17 -1klE(O):反有W發(fā) Z0,哺乳動物KITE(2): 有期毛 21.鳥推理失??!沒有芫全符合條件的動物.是習(xí)重新推理,:Y/N)3.輸入20 22 11 12 13 -1即輸入哺乳動物、食肉動物、有黃褐色皮毛、有暗斑點、有黑色條紋,根據(jù)這五個特點可以推導(dǎo)出兩種動物:豹和虎。因此也無法推理出正確的結(jié)果卩有毛喪1 一克奶2-有羽毛3一盤飛5.吃肉6.有粋耗牙齒7.WM8.眼向前方9.右蹄10.反芻1L有黃福色皮毛有昂丟點1生有黑隹條紋2一長畔子is 屜BB16.瑋會飛1會游
16、沬1圧黑白二色19.善飛面-哺乳幼柳21.522.肉動物23有眸類動物聲輸入動物特征絢號卜1軸束):20 器 11 1Z 13-1Rllt -lB) : 20. 25.fiRL1E(9)! 20. 乳砂物 盟-您肉動物11.有黃福色皮毛1工有詈色條紋- 24.虎推理失敗!沒有完全符合爭件的動物口辱否篁新推理:(V/N)(七)實驗體會通過本次實驗我對于人工智能的產(chǎn)生式系統(tǒng)有了進一步的認識,對于正向推理、反向推理兩種基本方式的原理和步驟都加深了理解。尤其是通過設(shè)計正向推理機,深切體會到了專家系統(tǒng)是根據(jù)知識和推理來求解問題的,這種模式與普通程序完全不同,就像我平日里處理問題時,是收集信息,而后根據(jù)常
17、識與知識 得出自己的結(jié)論這樣的模式,在寫這次實驗的過程中帶來了很新奇的編程體驗, 讓我受益匪淺。(八)源代碼#include #inelude using n amespace std;char *results = 虎,豹,斑馬,長頸鹿,”企鵝,鴕鳥,信天翁;char *animalBase = 0.有毛發(fā),1.有奶,2.有羽毛,3.會飛,4.會生蛋,5.吃肉,”6.有鋒利牙齒,7.有爪,”8.眼向前方,”9.有蹄, 10.反芻,11.有黃褐色皮毛 ,12.有暗斑點”,13.有黑色條紋,”14.長脖子”,15.長腿”,16.不會飛”,17.會游泳 ,18.黑白二色, 19.善飛,20.哺乳動
18、物,21.鳥, 22.食肉動物,23.有蹄類動物,24.虎 ”,25.豹 ”,”26.斑馬 ”,27.長頸鹿,28.企鵝 ”,”29.鴕鳥 ”,”30.信天翁 ” ;typedef struct /存放規(guī)則的結(jié)構(gòu)體,由條件和結(jié)果構(gòu)成皆用序號int型表示int condition6;/條件,末尾用-1表示結(jié)束int outcome; / 結(jié)論 Rule;/有毛發(fā)t哺乳動物/有奶t哺乳動物/有羽毛t鳥/會飛&會生蛋t鳥Rule rule15 = / 定義 15 個規(guī)則 0,-1 ,20 , 1,-1 ,20 , 2,-1 ,21 , 3,4,-1 ,21 , 5,-1 ,22 , II吃肉t食肉動
19、物 6,7,8,-1 ,22 ,II有鋒利牙齒&有爪&眼向前方t食肉動物 20,8,-1 ,23 , 20,9,-1 ,23 ,II哺乳動物&有蹄t有蹄類動物II哺乳動物&反芻t有蹄類動物 20,22,11,12,-1 ,25 , 20,22,11,13,-1 ,24 , 23,14,15,12,-1 ,27 ,II哺乳動物&食肉動物&有黃褐色皮毛&有暗斑點t豹II哺乳動物&食肉動物&有黃褐色皮毛&有黑色條紋t虎II有蹄類動物&長脖子&長腿&有暗斑點T長頸鹿 23,13,-1 ,26 ,II有蹄類動物&有黑色條紋t斑馬 21,16,14,15,18,-1 ,29 ,II鳥&不會飛&長脖子&長腿
20、&黑白兩色t鴕鳥 21,16,17,18,-1 ,28 ,II鳥&不會飛&會游泳&黑白兩色t企鵝 21,19,-1 ,24 ;II鳥&善飛T信天翁int facts30 = 0 ;II記錄被選擇的事實,初始化都為0,被選擇后賦值為1 void list(); II列出事實可供描述者選擇void input(); II描述者輸入特征事實int deduce(); II推理機根據(jù)既得事實推理int animal( int facts ); II判斷知識庫中是否有符合描述的動物 void list() II列出事實可供描述者選擇int i;for (i = 0;i = 30;i+)factsi =
21、0;for (i = 0;i24;i+)if (i % 4 = 0 & i != 0) cout endl; / 每列出 4 個事實換行printf( %-15s , animalBasei); / 列出前 24 個事實void input() II描述者輸入特征事實int f = 0; I/f用于接收描述者輸入的特征編號cout f;if (f = 0 & f = 23)factsf = 1; II接收描述者輸入的事實,并在flag數(shù)組將其賦值為1II其余未接收的事實仍為0else if (f != -1)cout error!請輸入023之間的數(shù)字! endl; II因為這里接收的事實僅限0-23區(qū)間內(nèi)cin. clear();int deduce()cin.syn c();II推理機根據(jù)既得事實推理int f;int i, j;int out1;cout endl;for (i = 0;i15;i+) II依次對15條規(guī)則進行檢測j = 0;f = rulei.c on diti on j;while (f != -1) II推理是否滿足第i條規(guī)則if (factsf = 0)/第i條規(guī)則有一個條件不滿足,即為不滿足該條規(guī)則break;/從此次i規(guī)則檢驗循環(huán)中跳出j+;f = rulei.conditionj;/取出i規(guī)則中所需的條件序號if (f =
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 15415:2024 EN Automatic identification and data capture techniques - Bar code symbol print quality test specification - Two-dimensional symbols
- 2025年度化工生產(chǎn)工廠技術(shù)許可合同協(xié)議
- 2025年城市管道天然氣項目建議書
- 設(shè)備管理科設(shè)備維護與更新計劃
- 提升倉庫服務(wù)質(zhì)量的個人策略計劃
- 社區(qū)個人工作計劃改善社區(qū)供水設(shè)施
- 2025年特種大型鋁合金型材合作協(xié)議書
- 新聞媒體安全管理的必要性計劃
- 社團交流合作的網(wǎng)絡(luò)平臺計劃
- 2025年中大型重載軸承項目建議書
- 消防工程管理辦法附流程圖
- 幼兒園手工教學(xué)中教師指導(dǎo)行為研究-以自貢市幼兒園為例
- 初中物理實驗教學(xué)
- 雨水管道中粗砂回填
- 團意操作流程詳解課件
- SH/T 0356-1996燃料油
- 第1課中華優(yōu)秀傳統(tǒng)文化的內(nèi)涵與特點課件(共28張PPT)
- 耳鼻咽喉頭頸外科學(xué)-鼻科癥狀學(xué)課件
- 輪胎使用日常說明
- 第8章 動車組空調(diào)裝置檢修動車組維護與檢修
- 《幼小銜接存在的問題及對策研究(論文)6400字》
評論
0/150
提交評論