人工智能與專家系統(tǒng)試驗報告_第1頁
人工智能與專家系統(tǒng)試驗報告_第2頁
人工智能與專家系統(tǒng)試驗報告_第3頁
人工智能與專家系統(tǒng)試驗報告_第4頁
人工智能與專家系統(tǒng)試驗報告_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、暨南大學(xué)本科實驗報告專用紙課程名稱人工智能與專家系統(tǒng)成績評定0實驗項目名稱動物識別系統(tǒng)設(shè)計指導(dǎo)教師0實驗項目編號實驗項目類型綜合型0實驗地點南校區(qū)學(xué)生姓名學(xué)號0學(xué)院信息科學(xué)技術(shù)學(xué)院系計算機科學(xué)系專業(yè)0實驗時間2017年12月日-年月日溫度_C濕度(一)實驗?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。也可以使用其他語言。3 如果使用數(shù)據(jù)

2、庫做后臺,要求使用最簡單的Accesso4 .系統(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)生式的前提或語言變量使用,進(jìn)一步可構(gòu)成產(chǎn)生式系統(tǒng)。因此在通過有關(guān)特征識別動物的特征中

3、規(guī)定:識別動物的前件(即動物的特征):0:有毛發(fā)1:有奶2:4:會生蛋5:吃肉6:8:眼向前方9:有蹄10:12:有暗斑點13:有黑色條紋有羽毛3:會飛有鋒利牙齒7:有爪反芻11:黃褐色皮毛14:長脖子15:長腿16:不會飛17:會游泳18:黑白二色19:善飛產(chǎn)生的中間結(jié)果(即動物的類別)20:哺乳動物21.鳥22.食肉動物23.有蹄類動物最終結(jié)論:24.虎25.豹26.斑馬27.長頸鹿28.企鵝29.鴕鳥30.信天翁于是在綜合數(shù)據(jù)庫中,將設(shè)定int型數(shù)組facts30,數(shù)組的編號對應(yīng)著以上事實的編號,數(shù)組的值為1時,意味著對應(yīng)編號的事實為真,否則為假。2 .規(guī)則的格式的數(shù)據(jù)結(jié)構(gòu)說明;每條規(guī)則

4、都擁有前件與后件,建立規(guī)則的數(shù)據(jù)結(jié)構(gòu)時將前件與后件定義即可。前件往往有一個或多個,而后件只有一個。為了方便采用序號代替前后件,因此定義前件為數(shù)組intcondition6;定義后件intoutcome;規(guī)則的數(shù)據(jù)結(jié)構(gòu)也隨之敲定。|typedefstruct/存放規(guī)則的結(jié)構(gòu)體,由條件和結(jié)果構(gòu)成皆用序號int型表示intcondition6;/條件intoutcome;/結(jié)論Rule;將15條規(guī)則轉(zhuǎn)化為符號:0,20,/有毛發(fā)一哺乳動物1,20,/有奶一哺乳動物2,21,/有羽毛一鳥3,4,21,/會飛&會生蛋一鳥5,22,/吃肉一食肉動物6,7,8,22,/有鋒利牙齒&有爪&am

5、p;眼向前方一食肉動物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

6、,16,17,18,28,/鳥&不會飛&會游泳&黑白兩色一企鵝21,19,24;/鳥&善飛一信天翁3 .推理機(包括正向和反向推理)過程。在上述規(guī)則的基礎(chǔ)上,可以利用推理機對給出條件進(jìn)行推理:(1)正向推理:從下向上進(jìn)行推理。在建立規(guī)則庫時需要使子規(guī)則在父規(guī)則前。在進(jìn)行正向推理是只要將規(guī)則庫從前到后遍歷下來看是否能由給定規(guī)則推出相應(yīng)結(jié)果即可。通過判斷每次與規(guī)則匹配得到的結(jié)果,如果結(jié)果不是動物,則更新事實庫,將此次結(jié)果作為前件匹配下一個規(guī)則。若有多條規(guī)則可用,則使用沖突消解策略,選取一條規(guī)則執(zhí)行。直到最終結(jié)果是動物時,視為推理成功。具體步驟如下:a.輸入得到當(dāng)前事

7、實facts,針對15條rules輪流篩查可用規(guī)則。b.將rules所需的前件提取出來與facts中的事實進(jìn)行比對。若有多條規(guī)則可用時,沖突消解的方法是:選取規(guī)則表rules中順序最前的規(guī)則。找到可用規(guī)則。擴充facts,重復(fù)b步驟。c.在無可擴充時,檢查facts,若其中沒有結(jié)果是動物,則推理失??;若其中推理出超過兩個動物時,仍記為推理失敗。在只有一個結(jié)果是動物時,則推理成功。(2)反向推理:反向推理的思路是從事實庫的動物開始從前向后進(jìn)行匹配,如果所有動物都不能推出為識別失敗,若能推出其中一個,則識別成功。若有多條規(guī)則可用,則從中選出一條規(guī)則,將規(guī)則的前件添加到綜合數(shù)據(jù)庫。具體步驟如下:a,

8、假設(shè)有動物m,若其已經(jīng)在facts中,則假設(shè)成立搜索終止。b.若該假設(shè)動物不在facts中,則從rules中所有后件中含有該動物m的規(guī)則組成表。若該表為空,則詢問用戶fact的真假,若為真,則將fact添加到facts,搜索中止。c,若該表不為空,則逐個判斷表內(nèi)規(guī)則是否有規(guī)則的全部前件都包含在facts中,如果有,則證明假設(shè)可以直接被推出。識別成功。d,如果不能直接推出,則重新進(jìn)行步驟b,直至滿足步驟c。這時,我們認(rèn)為假設(shè)可以被間接推出,識別成功。否則若沒有可用規(guī)則,則識別失敗。(四)開發(fā)環(huán)境1 .工具:C-free5.02 .語言:C+3 .OS平臺說明:win10(五)綜合數(shù)據(jù)庫與推理機1

9、 .綜合數(shù)據(jù)庫char*animalBase="0.有毛發(fā)","1.有奶","2,有羽毛","3.會飛","4.會生蛋","5.吃肉","6.有鋒利牙齒","7.有爪","8.眼向前方","9.有蹄","10.反芻","11.有黃褐色皮毛","12.有暗斑點","13.有黑色條紋","14.長脖子"

10、,"15,長腿","16.不會飛","17.會游泳",”18.黑白二色","19.善飛","20.哺乳動物","21.鳥","22.食肉動物","23,有蹄類動物","24.虎","25.豹","26,斑馬","27.長頸鹿","28.企鵝","29,鴕鳥","30.信天翁");對應(yīng)以上特

11、征,設(shè)定整型數(shù)組存儲求解過程中產(chǎn)生的各種信息,包括初始事實、推理得到的中間結(jié)論,以及最終結(jié)論。intfacts30=0;/記錄被選擇的事實,初始化都為0,被選擇后賦值為1對三種不同的信息進(jìn)行區(qū)分的方法是利用序號區(qū)間進(jìn)行區(qū)分。0-19序號部分是存放原始信息,20-23存放的是中間結(jié)論,24-30存放了最后的結(jié)論。2 .推理機推理部分主要使用了兩個函數(shù),分別是deduce函數(shù)和animal函數(shù)。Deduce函數(shù)是用于根據(jù)原始信息,進(jìn)行規(guī)則的遍歷,不斷正向推理的函數(shù);animal函數(shù)是利用deduce函數(shù)推理得出的facts數(shù)組,即綜合數(shù)據(jù)庫,進(jìn)行結(jié)果的判斷,如果推理得出的結(jié)果唯一,則返回推理成功的

12、信息,輸出最終的結(jié)果,否則判定為推理失敗。for(i=0;i<15;i+)/依次對15條規(guī)則進(jìn)行檢測3j=0;f=rulei.conditionj;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

13、);/并輸出所用規(guī)則,以便查看j=0;while(rulei.conditionj!=-1)cout<<animalBaserulei.conditionj<<""輸出規(guī)則所用先決條件j+;cout<<"=>"<<animalBaseout1<<endl;/輸出規(guī)則所用結(jié)果上述就是Deduce函數(shù)的主要內(nèi)容,取出每一條規(guī)則的全部前件與事實庫facts中進(jìn)行比對,若滿足該規(guī)則,則該規(guī)則的后件將會被擴充到facts數(shù)組中,同時也文字輸出,以便使用者確認(rèn)運行過程中使用的規(guī)則。遍歷完15條規(guī)則后,

14、facts數(shù)組中就存放了推理得出的全部事實。接下來就將facts數(shù)組傳入animal函數(shù),從綜合數(shù)據(jù)庫中遴選最終結(jié)論:intanimal(intfacts)/判斷知識庫中是否有符合描述的動物(inti=24,a=0,b=0;/判斷有多少結(jié)果滿足特定動物區(qū)間while(i<=30)(if(factsi=1)(b=i;a+;i+;if(a=1)returnb;/恰巧有唯一動物滿足給出條件時,返回該動物編號elsereturn0;/否則返回0,記為推理失敗利用變量a累計最終結(jié)果白數(shù)目,如果a=0,說明知識庫中沒有滿足描述的動物;如果a>2,說明有多個動物滿足描述條件,仍然不能確定最終結(jié)果

15、。只有當(dāng)a=1時,有唯一的動物符合描述,這時推理成功,返回該動物的編號并輸出。(六)實驗結(jié)果1.輸入051112-1(這里末尾輸入-1代表結(jié)束輸入)即輸入有毛發(fā)、吃肉、有黃褐色皮毛、有暗斑點這四個特點,讓系統(tǒng)進(jìn)行推理??傻玫轿ㄒ坏慕Y(jié)果:豹3.會飛7.有爪11-有黃福色皮羌15.長腿19善飛23:看蹄類動物0.有空發(fā)。有羽毛4,會生蛋5,吃肉包有鑲利牙齒也眼向前方9.有蹄1。一反芻12.有暗斑點13.有黑色條就14.長脖子時不會飛17.會游泳黑白二色20.哺乳動物21.鳥22.食肉動物請輸入動物特征維號(-1結(jié)束):。51112TRULES):。.有毛發(fā)一一>20.哺乳動物RL1E(4):

16、5,吃肉>22.食肉動物RULE(8):20.哺乳動物22一食肉動物1L有黃褐色皮毛12有暗斑點>25物最終推理出您所描述的動物為:豹是否重新推理:(丫過2.輸入0231417-1即輸入有毛發(fā)、有羽毛、會飛、長脖子、會游泳這五個特點交由程序進(jìn)行推理。由于不存在這樣的動物,因此結(jié)果是:0.有毛發(fā)1.有奶2.有羽毛3.會飛4.會生蛋5.吃肉6.有鋒利牙齒7.有爪S.眼何刖方9.有躇10.反芻11.有黃碣色皮毛12.有暗斑點13.有黑色條較14.衣喙子15.長腿16.而叁飛17.會游泳18.黑白二色19.善飛20.哺乳動物21.鳥22.食肉動物23.有騰類動物情輸入動物特征編號CT結(jié)束)

17、:0231417TRULE(O):0.有毛發(fā)>20,哺乳動物RULE(2):Z有羽毛>21.4推理失??!沒有完全符合條件的動物,是否重新推理:(YA)3.輸入2022111213-1即輸入哺乳動物、食肉動物、有黃褐色皮毛、有暗斑點、有黑色條紋,根據(jù)這五個特點可以推導(dǎo)出兩種動物:豹和虎。因此也無法推理出正確的結(jié)果p.有毛發(fā)4一會生蛋8.眼向I前方12一有暗斑點16.不會飛20.哺乳動物5一吃肉9.有躇13.有黑色條St17.會游泳21.If睛輸入動物特征編號結(jié)束);2.有羽毛6一有鋒利牙齒10.反芻14-長脖子1民黑白二色2Z食肉動物202211123.會飛7.有爪11.有黃祕色皮毛

18、15.長腿19.善飛23.有牖類動物13-1RULE缶):加一哺乳動物四一食肉動物IL有黃褐色皮毛I(xiàn)工有暗斑點>25.豹RULE(9):20.哺乳動物22.食肉動物11.有黃褐色皮毛13.有黑色條紋>24.虎推理失?。]有完全符合條件的動物,是否重新推理:(Y/2(七)實驗體會通過本次實驗我對于人工智能的產(chǎn)生式系統(tǒng)有了進(jìn)一步的認(rèn)識,對于正向推理、反向推理兩種基本方式的原理和步驟都加深了理解。尤其是通過設(shè)計正向推理機,深切體會到了專家系統(tǒng)是根據(jù)知識和推理來求解問題的,這種模式與普通程序完全不同,就像我平日里處理問題時,是收集信息,而后根據(jù)常識與知識得出自己的結(jié)論這樣的模式,在寫這次實

19、驗的過程中帶來了很新奇的編程體驗,讓我受益匪淺。(八)源代碼#include<stdio.h>#include<iostream>usingnamespacestd;char*results="虎","豹","斑馬","長頸鹿","企鵝","鴕鳥","信天翁"char*animalBase口="0.有毛發(fā)","1.有奶","2.有羽毛","3.會飛",&

20、quot;4.會生蛋","5.吃肉","6.有鋒利牙齒","7.有爪","8.眼向前方","9.有蹄","10.反芻","11.有黃褐色皮毛","12.有暗斑點","13.有黑色條紋","14.長脖子","15.長月退","16.不會飛","17.會游泳",”18.黑白二色","19.善飛",&qu

21、ot;20.哺乳動物","21.鳥","22.食肉動物","23.有蹄類動物","24.虎","25.豹","26.斑馬","27.長頸鹿","28.企鵝","29.鴕鳥","30.信天翁"typedefstruct/存放規(guī)則的結(jié)構(gòu)體,由條件和結(jié)果構(gòu)成皆用序號int型表示intcondition6;/條件,末尾用-1表示結(jié)束intoutcome;/結(jié)論Rule;Rulerule15=/定

22、義15個規(guī)則0,-1,20,1,-1,20,2,-1,21,3,4,-1,21,5,-1,22,/有毛發(fā)一哺乳動物/有奶一哺乳動物/有羽毛一鳥/會飛&會生蛋一鳥/吃肉一食肉動物6,7,8,-1,22,20,8,-1,23,20,9,-1,23,/有鋒利牙齒&有爪&眼向前方一食肉動物/哺乳動物&有蹄一有蹄類動物/哺乳動物&反芻一有蹄類動物20,22,11,12,-1,25,20,22,11,13,-1,2423,14,15,12,-1,27,哺乳動物&食肉動物&有黃褐色皮毛&W暗斑點一豹,/哺乳動物&食肉動物&W黃褐

23、色皮毛&有黑色條紋一虎/有蹄類動物&長脖子&長月1&有暗斑點一長頸鹿23,13,-1,26,/有蹄類動物&有黑色條紋一斑馬21,16,14,15,18,-1,29,21,16,17,18,-1,28,21,19,-1,24;intfacts30=0;/鳥&不會飛&長脖子&長腿&黑白兩色一鴕鳥/鳥&不會飛&會游泳&黑白兩色一企鵝/鳥研飛一信天翁/記錄被選擇的事實,初始化都為0,被選擇后賦值為1voidlist();/列出事實可供描述者選擇voidinput();/描述者輸入特征事實intdeduce(

24、);/推理機根據(jù)既得事實推理intanimal(intfacts);/判斷知識庫中是否有符合描述的動物voidlist()/列出事實可供描述者選擇inti;for(i=0;i<=30;i+)(factsi=0;)for(i=0;i<24;i+)(if(i%4=0&&i!=0)cout<<endl;/每列出4個事實換行printf("%-15s",animalBasei);列出前24個事實)voidinput()/描述者輸入特征事實(intf=0;/f用于接收描述者輸入的特征編號cout<<"n請輸入動物特征編號(

25、-1結(jié)束):"while(f!=-1)/當(dāng)f=-1時意味著輸入結(jié)束(cin>>f;if(f>=0&&f<=23)factsf=1;/接收描述者輸入的事實,并在flag數(shù)組將其賦值為1/其余未接收的事實仍為0elseif(f!=-1)(cout<<"error!請輸入023之間的數(shù)字!"<<endl;/因為這里接收的事實僅限0-23區(qū)間內(nèi)cin.clear();cin.sync();)intdeduce()/推理機根據(jù)既得事實推理(intf;inti,j;intout1;cout<<endl;for(i=0;i<15;i+)/依次對15條規(guī)則進(jìn)行檢測(j=0;f=rulei.conditionj;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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論