人工智能实验二打印版_第1页
人工智能实验二打印版_第2页
人工智能实验二打印版_第3页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告课程名称 人工智能与专家系统实验名称动物分类专家系统设计系别电子信息科学学院专业班级指导教师马航飞学号 姓名实验日期 2013/11/27 实验成绩一、实验目的1、加深理解专家系统的结构原理与实际应用。2、初步掌握知识获取的基本方法。3、掌握产生式规则知识表示方法及其编程实现方法。4、初步掌握知识库的组建方法。5、加深理解推理机的算法原理并初步掌握其编程实现方法。二、实验环境1、硬件环境:微机2、 软件环境: Windows XP ; Microsoft Visual C+6.0集成开发环境。三、实验原理三、实验内容 运用下列规则,设计并实现一个小型动物分类专家系统。规则 1: 如果:

2、动物有毛发 则 :该动物是哺乳动物规则 2: 如果:动物有奶 则 :该单位是哺乳动物规则 3: 如果:该动物有羽毛 则 :该动物是鸟规则 4: 如果:动物会飞,且会下蛋 则 :该动物是鸟规则 5: 如果:动物吃肉 则 :该动物是肉食动物规则 6: 如果:动物有犬齿,且有爪,且眼盯前方 则 :该动物是食肉动物规则 7: 如果:动物是哺乳动物,且有蹄 则 :该动物是有蹄动物规则 8: 如果:动物是哺乳动物,且是反刍动物 则 :该动物是有蹄动物规则 9: 如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点 则 :该动物是豹规则 10: 如果:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且

3、有黑条纹 则 :该动物是虎规则 11: 如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类 则 :该动物是长颈鹿规则 12: 如果:动物有黑条纹,且是有蹄类动物 则 :该动物是斑马规则 13: 如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞 则 :该动物是鸵鸟规则 14: 如果:动物是鸟,且不会飞,且会游泳,且是黑色的 则 :该动物是企鹅规则 15: 如果:动物是鸟,且善飞 则 :该动物是信天翁1)知识获取:老虎金钱豹有黑色条纹黄褐色食肉动物有蹄动物有黑色斑点哺乳动物有蹄有犬齿有爪有奶有毛发目盯前方有暗斑点长脖子吃肉:长腿长颈鹿(2)知识表示:提示:动物分类专家系统由15条规则组

4、成,可以识别七种动物,在15条规则中,共出现30个概念(也称作事实), 共30个事实,每个事实给一个编号,从编号从1到30,在规则对象中不存储事实概念,只有该事实的编号,同样规则的结论也是事实概念的编号,事实与规则的数据以常量表示,其结构如下:Char *str="chew_cud","hooves","mammal","forward_eyes","claws","poi nted_teeth","eat_meat","lay_eggs&quo

5、t;,"fly","feathers","U ngulate","carnivore","bird","give_milk","has_hair","fly_well","black&white_color","ca n_ swim","l on g_legs","lo ng_n eck","black_stripes",&quo

6、t;dark_spots","taw ny_color","albatross","pe ngui n","ostrich","zebra","giraffe","tiger","cheetah","0"程序用编号序列的方式表达了产生式规则,如资料中规则15,如果动物是鸟,且善飞,则该动物是信天翁。相应的规则数组第七条是16,13,0,0,0,0,第十三个是“ bird ”(鸟),如果事实成立,询问使用者下

7、一个事实,第十六个“ fly_well ”(善飞),如果也成立,则查找结论断言编号数组30,29,28,27,26,25,24,3,3,13,12,12,11,11,0中第七个“ 24”,这里24对应事实数组中的“ albatross”(信天翁)。(3)推理机设计: 正向推理原理:正向推理又称数据驱动推理, 是按照由条件推出结论的方向进行的推理方式, 它从一组事实出发, 使用一定 的推理规则,来证明目标事实或命题的成立。一般的推理过程是先向综合数据库提供一些初始已知事实, 控制系 统利用这些数据与知识库中的知识进行匹配, 被触发的知识,将其结论作为新的事实添加到综合数据库中。 重复 上述过程,

8、用更新过的综合数据库中的事实再与知识库中另一条知识匹配, 将其结论更新至综合数据库中, 直到 没有可匹配的新知识和不再有新的事实加入到综合数据库中为止。 然后测试是否得到解,有解则返回解,无解则 提示运行失败。正向推理的步骤1)将用户提供的初始已知事实送入综合数据库;2)检查综合数据库中是否已经包含问题的解,若有则求解结束,否则执行下一步;3) 将初始已知事实与知识库中的知识做匹配,若有,则转4),否则转6);4)将所有的匹配成功的知识构建成一个知识集;5 )若知识集不为空,则按某种冲突消解策略选择一条规则进行推理,并将其推出的新事实更新至综合数据库, 然后转2);若知识集为空,则转 6)6)

9、询问用户是否可提供新的事实,若有则将其添加至综合数据库,转3);否则表示问题求解失败,退出。用该条規刚的翫件乜功島 敖4K用中的Hr有爭实匹配规则取下一乐肢后件加入曲态数朗汗. 型抉廿理动作正向推理的流程图(4 )实验代码#in elude <stri ng.h>#in elude <math.h>#i nclude <stdio.h>#in elude <iostream.h>#defi ne True 1#defi ne False 0#defi ne Don tK now -1char*str="chew_cud",&q

10、uot;hooves","mammal","forward_eye s","claws","poi nted_teeth","eat_meat","lay_eggs","fly", "feathers","u ngulate","carnivore","bird","give_milk", "has_hair","fl

11、y_well","black&white_color","can_swimII5"Ion g_legs","l ong_n eck","black_stripes","dark_spots", "taw ny_color","albatross","pe nguin ”,"ostrich","zebra", "giraffe","tiger"

12、;,"cheetah",O;int rulep6=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,05intrulec=30,29,28,27,26,25,24,3,3,13,13,12,12,11,11,0 ;c

13、lass factprivate:int Number;char Name21;int Active;int Succ;public:fact *Next;fact(int Num,char *L)strcpy(Name,L);Number=Num;Active=False;Succ=D ontKnow;Next=NULL;char *GetName()char *L;L=new char21;strcpy(L,Name);return L;int GetNumber()return Number;return Active;int GetSucc()return Succ;void PutA

14、ct(co nst int Act0,i nt Suc0) 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 Cone;public:rule *Next;rule(char *N,int P,int C);rule();int Query();void GetName() cout<&

15、lt;Name;rule:rule()list *L;while(Pre) L=Pre->Next; delete Pre; Pre=L;delete Name;rule:rule(char *N,int P,int C)int i;int GetAct()list *L;Pre=NULL;Next=NULL;Name=new charstrle n( N)+1;strcpy(Name,N);i=0;while(Pi!=O)L=new list(Pi+);L->Next=Pre;Pre=L;Con c=C;int rule:Query()char c;int Tag=0;list

16、*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;con ti nue;if(F->GetSucc()=False)retur n False;elseif(F->GetSucc()=True)retur

17、n False;if(F->GetSucc()=False)L=L->Next;con ti nue;cout<<F->GetName()<<"(Y/N)"<<e ndl; c=getchar();flushall();if(c='Y')|(c='y')if(L->GetNumber()>0) F->PutAct(1,True);if(L->GetNumber()<0)F->PutAct(1,True);Tag=-1;retur n False;else

18、if(L->GetNumber()<0)F->PutAct(-1,False);elseF->PutAct(-1,False);Tag=-1;retur n False;L=L->Next;F=Fact;for(;)if(Co nc=F->GetNumber()break;F=F->Next;if(Co nc<24)F->PutAct(1,True);retur n False;if(Tag!=-1)F=Fact;for(;)if(Co nc=F->GetNumber() break;F=F->Next;if(Co nc<

19、24)F->PutAct(1,True); retur n False;cout<<"nThis ani amal is "<<F->GetName()<<e ndl; return True;retur n False;int mai n()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; Fac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论