产生式—动物识别系统

上传人:公**** 文档编号:562521477 上传时间:2023-03-23 格式:DOCX 页数:9 大小:119.68KB
返回 下载 相关 举报
产生式—动物识别系统_第1页
第1页 / 共9页
产生式—动物识别系统_第2页
第2页 / 共9页
产生式—动物识别系统_第3页
第3页 / 共9页
产生式—动物识别系统_第4页
第4页 / 共9页
产生式—动物识别系统_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《产生式—动物识别系统》由会员分享,可在线阅读,更多相关《产生式—动物识别系统(9页珍藏版)》请在金锄头文库上搜索。

1、一 实验题目 动物识别专家系统二 实验目的1. 理解并掌握基于规则系统的表示与推理2. 学会编写小型的生产式系统,理解正向推理和反向推理的过程以及两者的区 别3. 学会设计简单的人机交互界面三 实验内容动物识别专家系统是流行的专家系统实验模型,它用产生式规则来表示知识, 共 15 条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以 加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。 四实验要求1、确定推理方法(正向还是反向),并根据问题设计实现一个简单的不通用推理 机(匹配、冲突消解)2、规则库要求至少包含 15 条规则3、初始事实可以任意给定,输入初始事实后能够得到

2、推理结果4、设计人机界面,解释模块提供查询规则的功能5、可以不考虑知识库管理模块6、提交实验报告,7、报告中要有推理树 五实验原理 动物识别专家系统是流行的专家系统实验模型,它用产生式规则来表示知识,共 15 条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以加 进新的规则,还可以用来识别其他东西的新规则来取代这些规则。动物识别 15条 规则:规则 1:如果:动物有毛发则 :该动物是哺乳动物规则 2:如果:动物能产奶则 :该单位是哺乳动物规则 3:如果:该动物有羽毛则 :该动物是鸟规则 4: 如果:动物会飞,且会下蛋 则 :该动物是鸟规则 5:如果:动物吃肉则 :该动物是肉食动

3、物规则 6:如果:动物有犬齿,且有爪,且眼盯前方则 :该动物是食肉动物规则 7:如果:动物是哺乳动物,且有蹄则 :该动物是有蹄动物规则 8:如果:动物是哺乳动物,且是反刍动物则 :该动物是有蹄动物规则 9: 如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点 则 :该动物是豹规则 10: 如果:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹 则 :该动物是虎规则 11:如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类则 :该动物是长颈鹿规则 12:如果:动物有黑条纹,且是有蹄类动物则 :该动物是斑马规则 13: 如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞

4、 则 :该动物是鸵鸟规则 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 会下

5、蛋,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 rulep6=22,2

6、3,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 factprivate:int Number;char Name21

7、;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 char21;strcpy(L,Name);return L;int GetNumber()return Number;int GetAct() return Active;int GetSucc() return Succ;void PutAct(const int Act0,int Suc0

8、) 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 rulechar *Name; list *Pre; int Conc;public: rule *Next; rule(char *N,int P,int C); rule();int Query();void GetName() coutNext; delete Pre

9、;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) coutGetNumber()=F-GetNumber() break;F=F-Next

10、; 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;coutGetName()(Y/N)GetNumber()0) F-PutAct(1,True);if(L-GetNumber()PutAct(1,True);Tag=-1;return False;elseif(L-GetNumber()PutAct

11、(-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(ConcPutAct(1,True);return False;if(Tag!=-1)F=Fact;for(;)if(Conc=F-GetNumber() break;F=F-Next;if(ConcPutAct(1,True);return False;coutnThis aniamal is GetName()Next=Fact;Fact=F; i+;F=Fac

12、t; 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;iNext=Rule;Rule=R; ch5+;R=Rule; for(;) i=R-Query(); if(i=1)|(i=-1) break;R=R-Next;if(!R)break;if(!R)coutvv没有这种动物.vvendl;coutvvpress any key to exit.vvendl; getchar();return True;八.截图九.实验感悟虽然还没有具体学习过产生式算法,但是通过本次实践,对正向推理反向推理的过程 可以说已经有了大概的了解和一些自己的看法,对代码的控制能力也有了一定的提 高,递归函数的设计,流程的控制都得到了一定的强化。我觉得本次实验的算法还是 比较简单的,关键是数据结构的设计,我运用了很多自定义的结构体想使程序显得简 单一些,但是效果并不好,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

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