




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上動物識別專家系統動物識別專家系統是流行的專家系統實驗模型,它用產生式規則來表示知識,共15 條規則、可以識別七種動物,這些規則既少又簡單,可以改造他們,也可以加進新的規則,還可以用來識別其他東西的新規則來取代這些規則。動物識別15 條規則的中文表示是:規則1:如果:動物有毛發則 :該動物是哺乳動物規則2:如果:動物有奶則 :該單位是哺乳動物規則3:如果:該動物有羽毛則 :該動物是鳥規則4:如果:動物會飛,且會下蛋則 :該動物是鳥規則5:如果:動物吃肉則 :該動物是肉食動物規則6:如果:動物有犬齒,且有爪,且眼盯前方則 :該動物是食肉動物規則7:如果:動物是哺乳動物,且
2、有蹄則 :該動物是有蹄動物規則8:如果:動物是哺乳動物,且是反芻動物則 :該動物是有蹄動物規則9:如果:動物是哺乳動物,且是食肉動物,且是黃褐色的,且有暗斑點則 :該動物是豹規則10:如果:如果:動物是黃褐色的,且是哺乳動物,且是食肉,且有黑條紋則 :該動物是虎規則11:如果:動物有暗斑點,且有長腿,且有長脖子,且是有蹄類則 :該動物是長頸鹿規則12:如果:動物有黑條紋,且是有蹄類動物則 :該動物是斑馬規則13:如果:動物有長腿,且有長脖子,且是黑色的,且是鳥,且不會飛則 :該動物是鴕鳥規則14:如果:動物是鳥,且不會飛,且會游泳,且是黑色的則 :該動物是企鵝規則15:如果:動物是鳥,且善飛則
3、 :該動物是信天翁動物分類專家系統由15 條規則組成,可以識別七種動物,在15 條規則中,共出現 30 個概念(也稱作事實),共30 個事實,每個事實給一個編號,從編號從1 到30,在規則對象中我們不存儲事實概念,只有該事實的編號,同樣規則的結論也是事實概念的編號,事實與規則的數據以常量表示,其結構如下:char *str="chew_cud反芻動物","hooves蹄類動物","mammal哺乳動物","forward_eyes眼盯前方","claws有爪","pointed_tee
4、th有犬齒","eat_meat吃肉","lay_eggs會下蛋","fly會飛","feathers有羽毛","ungulate有蹄","carnivore食肉動物","bird鳥","give_milk能產奶","has_hair有毛發","fly_well善飛","black&white_color黑白色","can_swim會游泳"
5、,"long_legs長腿","long_neck長脖子","black_stripes黑條紋","dark_spots黑斑點","tawny_color黃褐色","albatross信天翁","penguin企鵝","ostrich駝鳥","zebra斑馬","giraffe長頸鹿","tiger老虎","cheetah獵豹",0;程序用編號序列的方式表達
6、了產生式規則,如資料中規則15,如果動物是鳥,且善飛,則該動物是信天翁。相應的規則數組第七條是16,13,0,0,0,0,第十三個是“bird”(鳥),如果事實成立,詢問使用者下一個事實,第十六個“fly_weil”(善飛),如果也成立,則查找結論斷言編號數組30,29,28,27,26,25,24,3,3,13,12,12,11,11,0中第七個“24”,這里24 對應事實數組中的“albatross”(信天翁)。上述就是程序的推理過程,也是程序中的重點,該部分是由規則類(類rule)中的Query 方法實現。程序完整代碼:#include <string.h>#include
7、<math.h>#include <stdio.h>#include <iostream.h>#define True 1#define False 0#define DontKnow -1char *str="chew_cud反芻動物","hooves蹄類動物","mammal哺乳動物","forward_eyes眼盯前方","claws有爪","pointed_teeth有犬齒","eat_meat吃肉","
8、;lay_eggs會下蛋","fly會飛","feathers有羽毛","ungulate有蹄","carnivore食肉動物","bird鳥","give_milk能產奶","has_hair有毛發","fly_well善飛","black&white_color黑白色","can_swim會游泳","long_legs長腿","long_neck
9、長脖子","black_stripes黑條紋","dark_spots黑斑點","tawny_color黃褐色","albatross信天翁","penguin企鵝","ostrich駝鳥","zebra斑馬","giraffe長頸鹿","tiger老虎","cheetah獵豹",0;int rulep6=22,23,12,3,0,0,21,23,12,3,0,0,22,19,20,11
10、,0,0,21,11,0,0,0,0,17,19,20,13,-9,0,17,18,13,-9,0,0,16,13,0,0,0,0,15,0,0,0,0,0,14,0,0,0,0,0,10,0,0,0,0,0,8,7,0,0,0,0,7,0,0,0,0,0,4,5,6,0,0,0,2,3,0,0,0,0,1,3,0,0,0,0;int rulec=30,29,28,27,26,25,24,3,3,13,13,12,12,11,11,0;class factprivate:int Number;char Name21;int Active;int Succ;public:fact *Next;f
11、act(int Num,char *L)strcpy(Name,L);Number=Num;Active=False;/-1 是已經推理,不符合。1 是已經推理,符合。Succ=DontKnow; /0 是無,-1 是不知道,1 是有。Next=NULL;char *GetName()char *L;L=new char21;strcpy(L,Name);return L;int GetNumber()return Number;int GetAct()return Active;int GetSucc()return Succ;void PutAct(const int Act0,int S
12、uc0)Active=Act0;Succ=Suc0;fact *Fact;class listprivate:int Number;public:list *Next;list(int Num)Number=Num;Next=NULL;int GetNumber()return Number;class rulechar *Name;list *Pre;int Conc;public:rule *Next;rule(char *N,int P,int C);rule();int Query();void GetName()cout<<Name;rule:rule()list *L;
13、while(Pre)L=Pre->Next;delete Pre;Pre=L;delete Name;rule:rule(char *N,int P,int C)int i;list *L;Pre=NULL;Next=NULL;Name=new charstrlen(N)+1;strcpy(Name,N);i=0;while(Pi!=0)L=new list(Pi+);L->Next=Pre;Pre=L;Conc=C;int rule:Query()char c;int Tag=0;list *L;fact *F;F=Fact;L=Pre;if(L=NULL)cout<<
14、;"nError"while(L!=NULL)F=Fact;for(;)if(abs(L->GetNumber()=F->GetNumber()break;F=F->Next;/查找與規則前提鏈中前提號相同的事實if(L->GetNumber()>0)if(F->GetSucc()=true) L=L->Next;continue;if(F->GetSucc()=false) return false;/如果事實的斷言為真則判斷下一個前提,為假,則表示該規則不適合elseif(F->GetSucc()=True)retu
15、rn False;if(F->GetSucc()=False)L=L->Next;continue;cout<<F->GetName()<<"(Y/N)"<<endl;c=getchar();/事實斷言為不知道的時候,向用戶詢問flushall();if(c='Y')|(c='y')if(L->GetNumber()>0)F->PutAct(1,True);/設置事實的斷言和激活標志if(L->GetNumber()<0)F->PutAct(1,True
16、);Tag=-1;return False;elseif(L->GetNumber()<0)F->PutAct(-1,False);elseF->PutAct(-1,False);Tag=-1; /已經推理,不符合。return False;L=L->Next;F=Fact;for(;)if(Conc=F->GetNumber()break;/查找結論斷言對應的事實F=F->Next;if(Conc<24)F->PutAct(1,True);return False;if(Tag!=-1)F=Fact;for(;)if(Conc=F->
17、;GetNumber()break;F=F->Next;if(Conc<24)F->PutAct(1,True);return False;cout<<"nThis aniamal is "<<F->GetName()<<endl;return True;return False;int main()fact *F,*T;rule *Rule,*R;char ch8;int i=1;Fact=NULL;while(stri-1) /初始化事實庫,倒序排列。F=new fact(i,stri-1);F->Next=Fact;Fact=F;i+;F=Fact;Fact=NULL;while(F) /把倒序排列正過來。T=F;F=F->Next;T->Next=Fact;Fact=T;i=0;ch0='R'ch1='U'ch2='L'ch3='E'ch4='_'ch5='a'ch6='0'Rule=NULL;for(i=0;i<15;i+) /初始化規則庫
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 管理崗位績效管理辦法
- 學校地基歸誰管理辦法
- 競賽教練考核管理辦法
- 腸息肉中醫教學課件
- 福建第三次質檢數學試卷
- 汾陽初中二模數學試卷
- 畢業設計(論文)-家用照明智能控制系統的設計
- 2025至2030大米行業市場深度研究與戰略咨詢分析報告
- 德國職業教育的數字化轉型:戰略規劃、項目布局與效果評估
- 麗水農林技師學院招聘教師筆試真題2024
- 煙臺市開發區行業報告
- 臨床男科學與男科疾病診療
- 乳腺癌輔助化療
- 10kV試驗報告模板-大全
- 醫院保潔服務投標方案(完整技術標)
- 范卿平人教版初三化學講義全集
- 產科運用PDCA循環降低入室新生兒低血糖發生率品管圈成果匯報
- 菜鳥WMS(大寶)操作手冊 (修復的)
- 70歲以上老人考駕照,三力測試題庫答案
- 文件簽收回執單
- 《尋找快樂》教案
評論
0/150
提交評論