文档详情

人工智能 动物识别专家系统

人***
实名认证
店铺
DOCX
118.40KB
约10页
文档ID:404919903
人工智能 动物识别专家系统_第1页
1/10

二. 实验目的1. 理解并掌握基于规则系统的表示与推理2. 学会编写小型的生产式系统,理解正向推理和反向推理的过程以及两者的区 别3. 学会设计简单的人机交互界面三. 实验内容动物识别专家系统是流行的专家系统实验模型,它用产生式规则来表示知识, 共 15 条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以 加进新的规则,还可以用来识别其他东西的新规则来取代这些规则四. 实验要求1、确定推理方法(正向还是反向),并根据问题设计实现一个简单的不通用推理 机(匹配、冲突消解)2、规则库要求至少包含 15 条规则3、初始事实可以任意给定,输入初始事实后能够得到推理结果4、设计人机界面,解释模块提供查询规则的功能5、可以不考虑知识库管理模块6、提交实验报告,7、报告中要有推理树五. 实验原理动物识别专家系统是流行的专家系统实验模型,它用产生式规则来表示知识,共15 条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以加 进新的规则,还可以用来识别其他东西的新规则来取代这些规则动物识别 15条 规则:规则 1:如果:动物有毛发则 :该动物是哺乳动物规则 2: 如果:动物能产奶 则 :该单位是哺乳动物规则 3:如果:该动物有羽毛 则 :该动物是鸟规则 4:如果:动物会飞,且会下蛋 则 :该动物是鸟规则 5:如果:动物吃肉则 :该动物是肉食动物规则 6:如果:动物有犬齿,且有爪,且眼盯前方则 :该动物是食肉动物规则 7:如果:动物是哺乳动物,且有蹄则 :该动物是有蹄动物规则 8:如果:动物是哺乳动物,且是反刍动物则 :该动物是有蹄动物规则 9: 如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点 则 :该动物是豹规则 10: 如果:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹 则 :该动物是虎规则 11:如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类则 :该动物是长颈鹿规则 12:如果:动物有黑条纹,且是有蹄类动物则 :该动物是斑马规则 13: 如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞则 :该动物是鸵鸟规则 14: 如果:动物是鸟,且不会飞,且会游泳,且是黑色的 则 :该动物是企鹅规则 15: 如果:动物是鸟,且善飞 则 :该动物是信天翁六. 推理树七. 代码#include #include #include #include #define True 1#define False 0#define DontKnow -1char *str[]={"chew_cud 反 刍 动 物 ","hooves 蹄 类 动 物 ","mammal 哺 乳 动 物","forward_eyes 眼盯前方","claws 有爪","pointed_teeth 有犬齿",“eat_meat 吃肉",“lay_eggs 会下蛋","fly 会飞", "feathers 有羽毛"‘"ungulate 有蹄"‘"carnivore 食肉动物","bird 鸟",“give_milk 能产奶 !!"has_hair 有毛发","fly_well 善飞","black&white_color 黑白色","can_swim 会游泳", "long_legs 长腿","long_neck 长脖子","black_stripes 黑条纹","dark_spots 黑斑点", "tawny_color 黄褐色","albatross 信天翁","penguin 企鹅","ostrich 驼鸟","zebra 斑马 !!"giraffe 长颈鹿","tiger 老虎"‘"cheetah 猎豹",0};int rulep[][6]={{22,23,12,3,0,0},{21,23,12,3,0,0},{22,19,20,11,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 fact {private:int Number;char Name[21];int Active;int Succ;public:fact *Next;fact(int Num,char *L){strcpy(Name,L); Number=Num; Active=False; Succ=DontKnow;Next=NULL;}char *GetName(){char *L;L=new char[21]; strcpy(L,Name);return L;}int GetNumber(){ return Number;}int GetAct(){return Active;}int GetSucc(){return Succ;}void PutAct(const int Act0,int Suc0) {Active=Act0;Succ=Suc0;}};fact *Fact; class list {private: int Number; public: list *Next; list(int Num) { Number=Num;Next=NULL;}int GetNumber(){ return Number;}}; class rule{ char *Name; list *Pre; int Conc;public: rule *Next;rule(char *N,int P[],int C); ~rule();int Query(); void GetName(){ cout<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 char[strlen(N)+1]; strcpy(Name,N);i=0;while(P[i]!=0){L=new list(P[i++]);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<<"\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;}else{if((F->GetSucc())==True)return False;if((F->GetSucc())==False){L=L->Next; continue;}}cout<GetName()<<"(Y/N)"<GetNumber()>0) F->PutAct(1,True);if(L->GetNumber()<0){F->PutAct(1,True);Tag=-1;return False;}}else{if(L->GetNumber()<0) F->PutAct(-1,False);else{F->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->GetNumber())break;F=F->Next;}if(Conc<24){F->PutAct(1,True);return False;}cout<<"\nThis aniamal is "<GetName()<Next=Fact;Fact=F;i++;}F=Fact;Fact=NULL;while(F){T=F;F=F->Next;T->Next=Fact;Fact=T;}i=0;ch[0]='R';ch[1]='U';ch[2]='L';ch[3]='E';ch[4]='_';ch[5]='a';ch[6]='\0';Rule=NULL;for(i=0;i<15;i++){R=new rule(ch,rulep[i],rulec[i]);R->Next=Rule;Rule=R;ch[5]++;}R=Rule; for(;;) { i=R->Query();if((i==1)||(i==-1)) break;R=R->Next; if(!R) break;}if(!R)coutvv"没有这种动物."vvendl;cout<<"press any key to exit."<

我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座 峰的后面还有更高的山峰在等着你挫折是一份财富,经历是一份拥有这次课 程设计必将成为我人生旅途上一段美好的回忆以后我要更加努力学好每门专业 课,让自己 拥有更多的知识,才能解决更多问题。

下载提示
相似文档
正为您匹配相似的精品文档