重慶大學(xué)人工智能作業(yè)(動(dòng)物識(shí)別系統(tǒng))_第1頁(yè)
重慶大學(xué)人工智能作業(yè)(動(dòng)物識(shí)別系統(tǒng))_第2頁(yè)
重慶大學(xué)人工智能作業(yè)(動(dòng)物識(shí)別系統(tǒng))_第3頁(yè)
重慶大學(xué)人工智能作業(yè)(動(dòng)物識(shí)別系統(tǒng))_第4頁(yè)
重慶大學(xué)人工智能作業(yè)(動(dòng)物識(shí)別系統(tǒng))_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、人工智能及其應(yīng)用作業(yè) 姓名: 學(xué)號(hào):一、作業(yè)題目:設(shè)計(jì)一個(gè)動(dòng)物識(shí)別系統(tǒng),運(yùn)用產(chǎn)生式系統(tǒng)的思想,設(shè)在綜合數(shù)據(jù)庫(kù)中存放下列已知事實(shí):該動(dòng)物身上有暗斑點(diǎn),長(zhǎng)脖子,長(zhǎng)腿,奶,蹄,這些事實(shí)與規(guī)則庫(kù)中的知識(shí)從第一條開始匹配,最終得出該動(dòng)物是長(zhǎng)頸鹿。二、程序設(shè)計(jì)分析:根據(jù)產(chǎn)生式系統(tǒng)的原理,該系統(tǒng)一般由規(guī)則庫(kù)、綜合數(shù)據(jù)庫(kù)、控制系統(tǒng)三部分構(gòu)成。先定義規(guī)則庫(kù)結(jié)構(gòu)體,里面包括Condition620,result20和規(guī)則數(shù)Cnum,再定義綜合數(shù)據(jù)庫(kù)即事實(shí)庫(kù),里面包括item2020,和事實(shí)數(shù)Fnum,主要用到的參數(shù)就是這些。然后初始化規(guī)則庫(kù)和綜合數(shù)據(jù)庫(kù),編輯規(guī)則庫(kù)。之后就是主程序,也就是推理機(jī)的作用:先讓用戶輸入

2、事實(shí),然后與規(guī)則庫(kù)中的知識(shí)從第一條開始逐條匹配,當(dāng)匹配成功時(shí),將結(jié)論插入事實(shí)庫(kù)并更新事實(shí)庫(kù),再逐條匹配,依次循環(huán).最終如果能匹配成功就顯示該動(dòng)物是.,否則顯示無法識(shí)別該動(dòng)物,程序結(jié)束。三、程序流程圖如下圖:圖一、系統(tǒng)程序流程圖四、我的源程序如下:#include iostream.h#include stdio.h#include conio.h#include string.htypedef struct Rule/定義規(guī)則庫(kù) char Condition620; char Result20; int Cnum; bool used;rule;typedef struct Fact/定義綜合

3、數(shù)據(jù)庫(kù) char item2020; int Fnum;fact;rule r100;fact f;void Create_Rules();/初始化規(guī)則庫(kù)void Create_Facts();/初始化綜合數(shù)據(jù)庫(kù)int Get_RulesNum();void Ratiocinate(int n);void main() int Rnum=0; Create_Rules(); Create_Facts(); Rnum=Get_RulesNum(); /coutRnumendl; Ratiocinate(Rnum);void Create_Rules() strcpy(r0.Condition0,

4、有毛發(fā)); strcpy(r0.Result,哺乳動(dòng)物); r0.Cnum=1; r0.used=false; strcpy(r1.Condition0,奶); strcpy(r1.Result,哺乳動(dòng)物); r1.Cnum=1; r1.used=false; strcpy(r2.Condition0,有羽毛); strcpy(r2.Result,鳥); r2.Cnum=1; r2.used=false; strcpy(r3.Condition0,會(huì)飛); strcpy(r3.Condition1,會(huì)下蛋); strcpy(r3.Result,鳥); r3.Cnum=2; r3.used=fa

5、lse; strcpy(r4.Condition0,吃肉); strcpy(r4.Result,食肉動(dòng)物); r4.Cnum=1; r4.used=false; strcpy(r5.Condition0,有犬齒); strcpy(r5.Condition1,有爪); strcpy(r5.Condition2,眼盯前方); strcpy(r5.Result,食肉動(dòng)物); r5.Cnum=3; r5.used=false; strcpy(r6.Condition0,哺乳動(dòng)物); strcpy(r6.Condition1,蹄); strcpy(r6.Result,有蹄動(dòng)物); r6.Cnum=2;

6、r6.used=false; strcpy(r7.Condition0,有蹄動(dòng)物); strcpy(r7.Condition1,嚼反芻動(dòng)物); strcpy(r7.Result,有蹄動(dòng)物); r7.Cnum=2; r7.used=false; strcpy(r8.Condition0,哺乳動(dòng)物); strcpy(r8.Condition1,食肉動(dòng)物); strcpy(r8.Condition2,黃褐色); strcpy(r8.Condition3,身上有暗斑點(diǎn)); strcpy(r8.Result,金錢豹); r8.Cnum=4; r8.used=false; strcpy(r9.Condit

7、ion0,哺乳動(dòng)物); strcpy(r9.Condition1,食肉動(dòng)物); strcpy(r9.Condition2,黃褐色); strcpy(r9.Condition3,有黑色條紋); strcpy(r9.Result,虎); r9.Cnum=4; r9.used=false; strcpy(r10.Condition0,有蹄動(dòng)物); strcpy(r10.Condition1,長(zhǎng)腿); strcpy(r10.Condition2,長(zhǎng)脖子); strcpy(r10.Condition3,身上有暗斑點(diǎn)); strcpy(r10.Result,長(zhǎng)頸鹿); r10.Cnum=4; r10.us

8、ed=false; strcpy(r11.Condition0,有蹄類動(dòng)物); strcpy(r11.Condition1,身上有黑色條紋); strcpy(r11.Result,斑馬); r11.Cnum=2; r11.used=false; strcpy(r12.Condition0,鳥); strcpy(r12.Condition1,有長(zhǎng)脖子); strcpy(r12.Condition2,長(zhǎng)腿); strcpy(r12.Condition3,不會(huì)飛); strcpy(r12.Condition4,有黑白兩色); strcpy(r12.Result,鴕鳥); r12.Cnum=5; r1

9、2.used=false; strcpy(r13.Condition0,鳥); strcpy(r13.Condition1,會(huì)游泳); strcpy(r13.Condition2,不會(huì)飛); strcpy(r13.Condition3,有黑白兩色); strcpy(r13.Result,企鵝); r13.Cnum=4; r13.used=false; strcpy(r14.Condition0,鳥); strcpy(r14.Condition1,善飛); strcpy(r14.Result,海燕); r14.Cnum=2; r14.used=false;void Create_Facts()

10、printf(請(qǐng)輸入該動(dòng)物特性(中間加空格,Enter鍵結(jié)束)n); scanf(%s%s%s%s%s,&f.item0,&f.item1,&f.item2,&f.item3,&f.item4); f.Fnum=5;int Get_RulesNum() int num=0; int i=0; while(1) if(ri.Condition00=0) break; i+; num+; return num;void Ratiocinate(int n) bool FindFact(char * str); void InsertIntoFact(char * str); int i=0,j;/

11、 i用來控制查找的是第幾條規(guī)則,j用來控制查找的規(guī)則中的第幾條 while(1) if(ri.used=false) for(j=0;jri.Cnum;j+) if(FindFact(ri.Conditionj) continue; else cout規(guī)則i+1匹配失敗endl; break; if(j=ri.Cnum) /如果所有的前件都滿足 ri.used=true; cout規(guī)則i+1匹配成功,結(jié)論插入到綜合數(shù)據(jù)庫(kù)endl; if(!FindFact(ri.Result) InsertIntoFact(ri.Result);/插入事實(shí) cout新增加的事實(shí)為:f.itemf.Fnum-1

12、endl; i=0; /continue; else i+;/查看下條規(guī)則 if(i=n) cout沒有你要找符合要求的動(dòng)物,請(qǐng)?jiān)黾有碌囊?guī)則endl; break; else if(strcmp(f.itemf.Fnum-1,老虎)=0|strcmp(f.itemf.Fnum-1,金錢豹)=0|strcmp(f.itemf.Fnum-1,長(zhǎng)頸鹿)=0|strcmp(f.itemf.Fnum-1,斑馬)=0|strcmp(f.itemf.Fnum-1,鴕鳥)=0|strcmp(f.itemf.Fnum-1,企鵝)=0|strcmp(f.itemf.Fnum-1,海燕)=0) cout與你給的事實(shí)匹配的動(dòng)物:f.itemf.Fnum-1endl; break; /查看綜合數(shù)據(jù)庫(kù)中的事實(shí)否否等于前件,或者是存在這條事實(shí),那么新的結(jié)論就不用加到綜合數(shù)據(jù)庫(kù)中bool F

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論