重庆大学人工智能作业(动物识别系统).doc

上传人:文库****9 文档编号:151685458 上传时间:2020-11-16 格式:DOC 页数:7 大小:101KB
返回 下载 相关 举报
重庆大学人工智能作业(动物识别系统).doc_第1页
第1页 / 共7页
重庆大学人工智能作业(动物识别系统).doc_第2页
第2页 / 共7页
重庆大学人工智能作业(动物识别系统).doc_第3页
第3页 / 共7页
重庆大学人工智能作业(动物识别系统).doc_第4页
第4页 / 共7页
重庆大学人工智能作业(动物识别系统).doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《重庆大学人工智能作业(动物识别系统).doc》由会员分享,可在线阅读,更多相关《重庆大学人工智能作业(动物识别系统).doc(7页珍藏版)》请在金锄头文库上搜索。

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;typedef struct Fact/定义综合

3、数据库 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() strcpy(r0.Condition0,

4、有毛发); 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,鸟); r3.Cnum=2; r3.used=fa

5、lse; 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.Result,有蹄动物); r6.Cnum=2;

6、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=false; strcpy(r9.Condit

7、ion0,哺乳动物); 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,长颈鹿); r10.Cnum=4; r10.us

8、ed=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.Result,鸵鸟); r12.Cnum=5; r1

9、2.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=false;void Create_Facts()

10、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(char * str); int i=0,j;/

11、 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);/插入事实 cout新增加的事实为:f.itemf.Fnum-1

12、endl; 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.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; el

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号