《重庆大学人工智能作业(动物识别系统).doc》由会员分享,可在线阅读,更多相关《重庆大学人工智能作业(动物识别系统).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除人工智能及其应用作业 姓名: 学号:一、作业题目:设计一个动物识别系统,运用产生式系统的思想,设在综合数据库中存放下列已知事实:该动物身上有暗斑点,长脖子,长腿,奶,蹄,这些事实与规则库中的知识从第一条开始匹配,最终得出该动物是长颈鹿。二、程序设计分析:根据产生式系统的原理,该系统一般由规则库、综合数据库、控制系统三部分构成。先定义规则库结构体,里面包括Condition620,result20和规则数Cnum,再定义综合数据库即事实库,里面包括item2020,和事实数Fnum,主要用到的参数就是这些。然后初始化规则库和综合数据库,编辑规则库。
2、之后就是主程序,也就是推理机的作用:先让用户输入事实,然后与规则库中的知识从第一条开始逐条匹配,当匹配成功时,将结论插入事实库并更新事实库,再逐条匹配,依次循环.最终如果能匹配成功就显示该动物是.,否则显示无法识别该动物,程序结束。三、程序流程图如下图:图一、系统程序流程图四、我的源程序如下:#include iostream.h#include stdio.h#include conio.h#include string.htypedef struct Rule/定义规则库 char Condition620; char Result20; int Cnum; bool used;rule;
3、typedef struct Fact/定义综合数据库 char item2020; int Fnum;fact;rule r100;fact f;void Create_Rules();/初始化规则库void Create_Facts();/初始化综合数据库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
4、() strcpy(r0.Condition0,有毛发); strcpy(r0.Result,哺乳动物); r0.Cnum=1; r0.used=false; strcpy(r1.Condition0,奶); strcpy(r1.Result,哺乳动物); r1.Cnum=1; r1.used=false; strcpy(r2.Condition0,有羽毛); strcpy(r2.Result,鸟); r2.Cnum=1; r2.used=false; strcpy(r3.Condition0,会飞); strcpy(r3.Condition1,会下蛋); strcpy(r3.Result,鸟
5、); r3.Cnum=2; r3.used=false; strcpy(r4.Condition0,吃肉); strcpy(r4.Result,食肉动物); r4.Cnum=1; r4.used=false; strcpy(r5.Condition0,有犬齿); strcpy(r5.Condition1,有爪); strcpy(r5.Condition2,眼盯前方); strcpy(r5.Result,食肉动物); r5.Cnum=3; r5.used=false; strcpy(r6.Condition0,哺乳动物); strcpy(r6.Condition1,蹄); strcpy(r6.R
6、esult,有蹄动物); r6.Cnum=2; r6.used=false; strcpy(r7.Condition0,有蹄动物); strcpy(r7.Condition1,嚼反刍动物); strcpy(r7.Result,有蹄动物); r7.Cnum=2; r7.used=false; strcpy(r8.Condition0,哺乳动物); strcpy(r8.Condition1,食肉动物); strcpy(r8.Condition2,黄褐色); strcpy(r8.Condition3,身上有暗斑点); strcpy(r8.Result,金钱豹); r8.Cnum=4; r8.used
7、=false; strcpy(r9.Condition0,哺乳动物); strcpy(r9.Condition1,食肉动物); strcpy(r9.Condition2,黄褐色); strcpy(r9.Condition3,有黑色条纹); strcpy(r9.Result,虎); r9.Cnum=4; r9.used=false; strcpy(r10.Condition0,有蹄动物); strcpy(r10.Condition1,长腿); strcpy(r10.Condition2,长脖子); strcpy(r10.Condition3,身上有暗斑点); strcpy(r10.Result,
8、长颈鹿); r10.Cnum=4; r10.used=false; strcpy(r11.Condition0,有蹄类动物); strcpy(r11.Condition1,身上有黑色条纹); strcpy(r11.Result,斑马); r11.Cnum=2; r11.used=false; strcpy(r12.Condition0,鸟); strcpy(r12.Condition1,有长脖子); strcpy(r12.Condition2,长腿); strcpy(r12.Condition3,不会飞); strcpy(r12.Condition4,有黑白两色); strcpy(r12.Re
9、sult,鸵鸟); r12.Cnum=5; r12.used=false; strcpy(r13.Condition0,鸟); strcpy(r13.Condition1,会游泳); strcpy(r13.Condition2,不会飞); 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=fa
10、lse;void Create_Facts() printf(请输入该动物特性(中间加空格,Enter键结束)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(
11、char * str); int i=0,j;/ i用来控制查找的是第几条规则,j用来控制查找的规则中的第几条 while(1) if(ri.used=false) for(j=0;jri.Cnum;j+) if(FindFact(ri.Conditionj) continue; else cout规则i+1匹配失败endl; break; if(j=ri.Cnum) /如果所有的前件都满足 ri.used=true; cout规则i+1匹配成功,结论插入到综合数据库endl; if(!FindFact(ri.Result) InsertIntoFact(ri.Result);/插入事实 co
12、ut新增加的事实为:f.itemf.Fnum-1endl; i=0; /continue; else i+;/查看下条规则 if(i=n) cout没有你要找符合要求的动物,请增加新的规则endl; break; else if(strcmp(f.itemf.Fnum-1,老虎)=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|strcmp(f.itemf.Fnum-1,企鹅)=0|strcmp(f.itemf.
13、Fnum-1,海燕)=0) cout与你给的事实匹配的动物:f.itemf.Fnum-1endl; break;/查看综合数据库中的事实否否等于前件,或者是存在这条事实,那么新的结论就不用加到综合数据库中bool FindFact(char * str) int i; for(i=0;if.Fnum;i+) if(strcmp(f.itemi,str) continue; else return true; return false;/插入新的事实void InsertIntoFact(char * str) strcpy(f.itemf.Fnum,str); f.Fnum+;五、程序运行结果:【精品文档】第 5 页