实验一产生式系统.doc_第1页
实验一产生式系统.doc_第2页
实验一产生式系统.doc_第3页
实验一产生式系统.doc_第4页
实验一产生式系统.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

实验一 产生式系统动物识别系统一、实习目的和意义1、掌握人工智能的知识表示技术,能用产生式表示法表示知识;2、掌握基于规则推理的基本方法;3、掌握产生式系统的运行机制。二、实习内容参考教材规则库包含15条规则,开发一个专家系统可以识别老虎,金钱豹,斑马,长颈鹿,企鹅,鸵鸟等6种动物。三、实习要求1、本次实验语言MATLAB;2、系统能通过正向推理得到正确的动物识别结果。四、实习过程1. 实验原理正向推理(事实驱动推理)1) 从初始已知事实出发,在知识库KB中找出当前可适用的知识,构成可适用知识集KS;2) 按某种冲突消解策略,从KS中选出一条知识进行推理,并将推出的新事实加入到数据库DB中,作为下一步推理的已知事实,再在KB中选取可适用知识构成KS;3) 重复步骤二,直到求得问题的解,或KB中再无可适用的知识。2. 问题背景根据课本P33的15调动物识别的专家知识,建立规则库。3. 算法设计主要利用数组下标和元素的0,1值表示知识,规则,及相关标记。4. Matlab实现a. 算法函数名函数说明learnfunction learn(arr_category, arr_feature)主函数checkRulefunction arr_category,arr_feature,arr_rule,ifMore,mark= checkRule(arr_category,arr_feature,arr_rule,ifMore,mark )规则符合检测showCategoryfunction showCategory( )类别选项打印函数showFeaturefunction showFeature()特征选项打印函数showResultfunction showResult(mark)结果显示b. 测试测试数据一arr_category51 0 0 0 1arr_feature200 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0测试数据二arr_category50 0 0 0 0arr_feature201 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0五、实习总结1.实习总结本次实验主要复习了产生式规则,利用正向推理和15条规则,建立简单的动物识别专家系统,并具有一定的容错性。2.附录:代码MATLAB代码:function learn(arr_category, arr_feature)%产生式规则-正向推理-主函数% 标记函数初始化,规则函数调用arr_rule=zeros(1,15);mark=-1;ifMore=0;disp(arr_category);disp(arr_feature);%showCategory();%arr_category=input(输入信息:);%showFeature();%arr_feature=input(输入信息);arr_category,arr_feature,arr_rule,ifMore,mark= checkRule(arr_category,arr_feature,arr_rule,ifMore,mark); busy=1;while busy=1 if mark-1 showResult(mark); break; end if ifMore=0 disp(无法判断具体是哪种动物!); break end ifMore=0; arr_category,arr_feature,arr_rule,ifMore,mark= checkRule(arr_category,arr_feature,arr_rule,ifMore,mark);end endfunction arr_category,arr_feature,arr_rule,ifMore,mark= checkRule(arr_category,arr_feature,arr_rule,ifMore,mark )%正向推理函数% 逐条检查规则是否满足,若满足,则增加新信息ifMore=0;for i = 1:1:15 if arr_rule(i)=0 switch i case 1 if arr_feature(1)0 arr_category(1)=1; arr_rule(i)=1; ifMore=1; disp(根据规则,num2str(i); disp(新增信息:该动物是哺乳动物); end %break; case 2 if arr_feature(2)0 arr_category(1)=1; arr_rule(i)=1; ifMore=1; disp(根据规则,num2str(i); disp(新增信息:该动物是哺乳动物); end %break; case 3 if arr_feature(3)0 arr_category(2)=1; arr_rule(i)=1; ifMore=1; disp(根据规则,num2str(i); disp(新增信息:该动物是鸟); end %break; case 4 if arr_feature(4)*arr_feature(5)0 arr_category(2)=1; arr_rule(i)=1; ifMore=1; disp(根据规则,num2str(i); disp(新增信息:该动物是鸟); end %break; case 5 if arr_feature(6)0 arr_category(3)=1; arr_rule(i)=1; ifMore=1; disp(根据规则,num2str(i); disp(新增信息:该动物是食肉动物); end %break; case 6 if arr_feature(7)*arr_feature(8)*arr_feature(9)0 arr_category(3)=1; arr_rule(i)=1; ifMore=1; disp(根据规则,num2str(i); disp(新增信息:该动物是食肉动物); end %break; case 7 if arr_category(1)*arr_feature(10)0 arr_category(4)=1; arr_rule(i)=1; ifMore=1; disp(根据规则,num2str(i); disp(新增信息:该动物是有蹄类动物); end %break; case 8 if arr_category(1)*arr_category(5)0 arr_category(4)=1; arr_rule(i)=1; ifMore=1; disp(根据规则,num2str(i); disp(新增信息:该动物是有蹄类动物); end %break; case 9 if arr_category(1)*arr_category(3)*arr_feature(11)*arr_feature(12)0 arr_animal(2)=1; arr_rule(i)=1; ifMore=1; mark=2; disp(根据规则,num2str(i); end %break; case 10 if arr_category(1)*arr_category(3)*arr_feature(11)*arr_feature(13)0 arr_animal(1)=1; arr_rule(i)=1; ifMore=1; mark=1; disp(根据规则,num2str(i); end %break; case 11 if arr_category(4)*arr_feature(14)*arr_feature(15)*arr_feature(16)0 arr_animal(4)=1; arr_rule(i)=1; ifMore=1; mark=4; disp(根据规则,num2str(i); end %break; case 12 if arr_category(4)*arr_feature(13)0 arr_animal(3)=1; arr_rule(i)=1; ifMore=1; mark=3; disp(根据规则,num2str(i); end %break; case 13 if arr_category(2)*arr_feature(14)*arr_feature(15)*arr_feature(17)*arr_feature(18)0 arr_animal(6)=1; arr_rule(i)=1; ifMore=1; mark=6; disp(根据规则,num2str(i); end %break; case 14 if arr_category(2)*arr_feature(19)*arr_feature(17)*arr_feature(18)0 arr_animal(5)=1; arr_rule(i)=1; ifMore=1; mark=5; disp(根据规则,num2str(i); end %break; case 15 if arr_category(2)*arr_feature(20)0 arr_animal(7)=1; arr_rule(i)=1; ifMore=1; mark=7; disp(根据规则,num2str(i); end end endend end function showCategory( )%类别选项显示% disp(请选择分类(1:是,0:其他):);disp(0.哺乳动物);disp(1.鸟);disp(2.食肉动物);disp(3.蹄类动物);disp(4.反刍动物);end function showFeature()%具体特征列表% 此处显示详细说明disp(请选择具体特征(1:是,0:其他):);disp(0.有毛发);disp(1.有奶);disp(2.有羽毛);disp(3.会飞);disp(4.会下蛋);disp(5.吃肉);disp(6.有犬齿);disp(7.有爪);disp(8.眼盯前方);disp(9.有蹄);disp(10.黄褐色);disp(11.身上有斑点);disp(12.身上有黑色条纹);disp(13.有长脖子);disp(14.有长腿);disp(15.身上有暗斑点);disp(16.不会飞);disp(17.有黑白两色);disp(18.会游泳);disp(19.擅飞);endfunction showResult(mark)%结果显示

温馨提示

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

最新文档

评论

0/150

提交评论