实验一产生式系统.docx
- 文档编号:14046274
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:14
- 大小:46.61KB
实验一产生式系统.docx
《实验一产生式系统.docx》由会员分享,可在线阅读,更多相关《实验一产生式系统.docx(14页珍藏版)》请在冰点文库上搜索。
实验一产生式系统
实验一产生式系统——动物识别系统
一、实习目的和意义
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.算法
函数名
函数说明
learn
functionlearn(arr_category,arr_feature)主函数
checkRule
function[arr_category,arr_feature,arr_rule,ifMore,mark]=
checkRule(arr_category,arr_feature,arr_rule,ifMore,mark)
规则符合检测
showCategory
functionshowCategory()
类别选项打印函数
showFeature
functionshowFeature()
特征选项打印函数
showResult
functionshowResult(mark)
结果显示
b.测试
测试数据一
arr_category[5]
10001
arr_feature[20]
00000000000001110000
测试数据二
arr_category[5]
00000
arr_feature[20]
10000000000000000000
五、实习总结
1.实习总结
本次实验主要复习了产生式规则,利用正向推理和15条规则,建立简单的动物识别专家系统,并具有一定的容错性。
2.附录:
代码
MATLAB代码:
functionlearn(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;
whilebusy==1
ifmark>-1
showResult(mark);
break;
end
ififMore==0
disp('无法判断具体是哪种动物!
');
break
end
ifMore=0;
[arr_category,arr_feature,arr_rule,ifMore,mark]=checkRule(arr_category,arr_feature,arr_rule,ifMore,mark);
end
end
function[arr_category,arr_feature,arr_rule,ifMore,mark]=checkRule(arr_category,arr_feature,arr_rule,ifMore,mark)
%正向推理函数
%逐条检查规则是否满足,若满足,则增加新信息
ifMore=0;
fori=1:
1:
15
ifarr_rule(i)==0
switchi
case1
ifarr_feature
(1)>0
arr_category
(1)=1;
arr_rule(i)=1;
ifMore=1;
disp(['根据规则',num2str(i)]);
disp('新增信息:
该动物是哺乳动物');
end
%break;
case2
ifarr_feature
(2)>0
arr_category
(1)=1;
arr_rule(i)=1;
ifMore=1;
disp(['根据规则',num2str(i)]);
disp('新增信息:
该动物是哺乳动物');
end
%break;
case3
ifarr_feature(3)>0
arr_category
(2)=1;
arr_rule(i)=1;
ifMore=1;
disp(['根据规则',num2str(i)]);
disp('新增信息:
该动物是鸟');
end
%break;
case4
ifarr_feature(4)*arr_feature(5)>0
arr_category
(2)=1;
arr_rule(i)=1;
ifMore=1;
disp(['根据规则',num2str(i)]);
disp('新增信息:
该动物是鸟');
end
%break;
case5
ifarr_feature(6)>0
arr_category(3)=1;
arr_rule(i)=1;
ifMore=1;
disp(['根据规则',num2str(i)]);
disp('新增信息:
该动物是食肉动物');
end
%break;
case6
ifarr_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;
case7
ifarr_category
(1)*arr_feature(10)>0
arr_category(4)=1;
arr_rule(i)=1;
ifMore=1;
disp(['根据规则',num2str(i)]);
disp('新增信息:
该动物是有蹄类动物');
end
%break;
case8
ifarr_category
(1)*arr_category(5)>0
arr_category(4)=1;
arr_rule(i)=1;
ifMore=1;
disp(['根据规则',num2str(i)]);
disp('新增信息:
该动物是有蹄类动物');
end
%break;
case9
ifarr_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;
case10
ifarr_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;
case11
ifarr_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;
case12
ifarr_category(4)*arr_feature(13)>0
arr_animal(3)=1;
arr_rule(i)=1;
ifMore=1;
mark=3;
disp(['根据规则',num2str(i)]);
end
%break;
case13
ifarr_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;
case14
ifarr_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;
case15
ifarr_category
(2)*arr_feature(20)>0
arr_animal(7)=1;
arr_rule(i)=1;
ifMore=1;
mark=7;
disp(['根据规则',num2str(i)]);
end
end
end
end
end
functionshowCategory()
%类别选项显示
%
disp('请选择分类(1:
是,0:
其他):
');
disp('0.哺乳动物');
disp('1.鸟');
disp('2.食肉动物');
disp('3.蹄类动物');
disp('4.反刍动物');
end
functionshowFeature()
%具体特征列表
%此处显示详细说明
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.擅飞');
end
functionshowResult(mark)
%结果显示
%此处显示详细说明
disp('****识别结果****');
disp('该动物是:
');
switchmark
case1
disp('虎');
%break;
case2
disp('金钱豹');
%break;
case3
disp('斑马');
%break;
case4
disp('长颈鹿');
%break;
case5
disp('企鹅');
%break;
case6
disp('鸵鸟');
%break;
case7
disp('信天翁');
%break;
end
end
..
.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 产生 系统