人工智能导论实验报告题目基于产生式的动物识别专家系统java.docx
《人工智能导论实验报告题目基于产生式的动物识别专家系统java.docx》由会员分享,可在线阅读,更多相关《人工智能导论实验报告题目基于产生式的动物识别专家系统java.docx(12页珍藏版)》请在冰豆网上搜索。
人工智能导论实验报告题目基于产生式的动物识别专家系统java
人工智能导论实验报告------题目-基于产生式的动物识别专家系统--java
人工智能导论实验报告
题目基于产生式的动物识别专家系统
学院信息科学与工程学院
专业计算机科学与技术
∙实验题目:
基于产生式的动物识别专家系统
∙实验目的及要求:
1.理解和掌握产生式知识表示方法及产生式系统的基本过程,能够利用编程技术建立一个基于产生式知识表示的简单的专家系统。
2.建立一个动物识别系统的规则库(至少包含15条规则),用以识别虎、豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁等7种动物(至少7种动物,规则可增加)。
3.初始事实可以任意给定,输入初始事实后能够得到推理结果。
三、小组成员及分工
四、实验过程
1.实验环境:
Java;
2.算法原理:
基于产生式知识表示,采用前向推理的方式;
3.系统设计:
(1)人机接口
初始状态显示已知事实,用户可以勾选知识,进行推理,推理过程一步一步显示出来;
(2)知识获取机构
直接从写好的文本里获取;
(3)知识库及其管理系统
知识库存放产生式规则,推理时用到的一般知识和领域知识,比如动物的特征、动物的分类标准等,再具体地添加得到的具体动物;管理系统负责将上次推理裁剪出去的规则重新加回来;
(4)推理机
采用正向推理,推理机是动物识别的逻辑状态,它控制、协调系统的推理,并利用知识库中的规则对综合数据库中的数据进行逻辑操作。
匹配每一条规则的前件是否全部包含于用户输入的已知事实中,若匹配成功则看该结论是否作为最终结论,如果是则结束,否则继续推理;
(5)数据库及其管理系统
数据库用来存放用户回答的问题,存放初始状态、中间推理结果、最终结果;管理系统负责查找新产生的结论是否已经存在于数据库中;
(6)解释机构
通过输出匹配成功的产生式知识来表明推理的过程;
1.实现流程:
开始
选择动物特征MainGui.java
得出结论并shuchuInfer.java.getconclusion()
结束
5.关键代码:
推理:
publicclassInfer{
publicstaticArrayListESARuleList=newArrayList();
publicstaticArrayListdatabase=null;
publicstaticString[]fact={"有毛发","有奶","有羽毛","会飞","会下蛋","吃肉","有犬牙","有爪子","眼盯前方","有蹄",
"反刍","黄褐色","暗斑点","黑色条纹","长脖子","不会飞","长腿","黑白两色","会游泳","善飞"};
publicstaticvoidinit(){
ESARuleList.add(newRuleMatch("哺乳动物","有毛发"));
ESARuleList.add(newRuleMatch("哺乳动物","有奶"));
ESARuleList.add(newRuleMatch("食肉动物","吃肉"));
ESARuleList.add(newRuleMatch("食肉动物","有犬牙","有爪子",
"眼盯前方"));
ESARuleList.add(newRuleMatch("蹄类动物","哺乳动物","有蹄"));
ESARuleList.add(newRuleMatch("蹄类动物","哺乳动物","反刍"));
ESARuleList.add(newRuleMatch("金钱豹","哺乳动物","食肉动物",
"黄褐色","暗斑点"));
ESARuleList.add(newRuleMatch("老虎","哺乳动物","食肉动物",
"黄褐色","黑色条纹"));
ESARuleList.add(newRuleMatch("长颈鹿","蹄类动物","长脖子",
"长腿","暗斑点"));
ESARuleList.add(newRuleMatch("斑马","蹄类动物","黑色条纹"));
ESARuleList.add(newRuleMatch("鸵鸟","鸟类","不会飞","长脖子",
"长腿","黑白两色"));
ESARuleList.add(newRuleMatch("企鹅","鸟类","会游泳","不会飞",
"黑白两色"));
ESARuleList.add(newRuleMatch("信天翁","鸟类","善飞"));
ESARuleList.add(newRuleMatch("鸟类","会飞","会下蛋"));
ESARuleList.add(newRuleMatch("鸟类","有羽毛"));
}
publicstaticString[]conclusions={"金钱豹","老虎","长颈鹿","斑马","鸵鸟","企鹅","信天翁"};
publicstaticStringtuili(ArrayListdatabase){
intdatabaseSize;
databaseSize=database.size();
for(intz=0;z<2;z++)
for(inti=0;iif(ESARuleList.get(i).isMatch(database)){
StringBuffersbuff=newStringBuffer();
ArrayListdatabase1=(ArrayList)database.clone();
addData(database,ESARuleList.get(i).conclusion);
for(intk=0;ksbuff.append(ESARuleList.get(i).conditions[k]+'');
JOptionPane.showMessageDialog(null,sbuff+"\n=>"+ESARuleList.get(i).conclusion,"中间推断",JOptionPane.PLAIN_MESSAGE);
System.out.println(ESARuleList.get(i).conclusion);
if(("金钱豹".equals(ESARuleList.get(i).conclusion))||(ESARuleList.get(i).conclusion=="老虎")||(ESARuleList.get(i).conclusion=="长颈鹿")||(ESARuleList.get(i).conclusion=="斑马")||(ESARuleList.get(i).conclusion=="鸵鸟")||(ESARuleList.get(i).conclusion=="企鹅")||(ESARuleList.get(i).conclusion=="信天翁"))
break;
}
}
returngetConclusion(database.get(database.size()-1));
}
privatestaticvoidaddData(ArrayListlist,Stringdata){
for(inti=0;iif(list.get(i).equals(data))
return;
}
list.add(data);
}
privatestaticStringgetConclusion(Stringcon){
for(inti=0;iif(con.equals(conclusions[i])){
returnconclusions[i];
}
}
return"未得到最终结论,请继续补充事实";
}
}
规则库:
publicclassRuleMatch{
publicString[]conditions=null;
publicStringconclusion=null;
privateBooleanisExist;
publicRuleMatch(StringconclusionString,String...conditionStrings){
conclusion=conclusionString;
conditions=conditionStrings;
}
publicBooleanisMatch(ArrayListlist){
intsize=list.size();
for(StringmyCondition:
conditions){
isExist=false;
for(inti=0;iif(list.get(i).equalsIgnoreCase(myCondition)){
isExist=true;
break;
}
}
if(!
isExist){
returnfalse;
}
}
returntrue;
}
}
五、实验结果与分析:
1实验结果(截图):
2分析:
(包括实验心得或体会,调试心得)
本次实验让我推理机和产生式系统有了更深的理解,特别是对正向推理和反向推理的理解,同时也明白了知识库对于系统的重要性——对知识库进行合适的管理,可以检测并排除那些冗余及矛盾的知识,保持知识的一致性,提高规则库的质量。
锻炼了我的编程能力,更提高了我的逻辑推理能力,该系统由规则库、综合数据库、控制系统三部分构成,但是该程序的缺点是只有正向推理的过程,没有反向推理的过程。
通过这次课程设计我对专业课的学习有了更加深刻的认识,让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我人生旅途上一段美好的回忆。
以后我要更加努力学好每门专业课,让自己拥有更多的知识,才能解决更多问题。
六、成绩评定:
成绩: