




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生实验报告实验课名称:人工智能实验项目名称: 基于回溯推理的小型专家系统题 目: 一个关于植物分类的小型专家系统专 业 名 称:计算机科学与技术班 级:24020704学 号:2402070427学 生 姓 名:杨孟拓教 师 姓 名:慕晨 2010 年 10 月 27 日一、 实验名称:一个关于植物分类的小型专家系统二、 实验目的与要求:1、确定推理方法(正向还是反向),并根据问题设计实现一个简单的不通用推理机(匹配、冲突消解)2、规则库要求至少包含15条规则3、初始事实可以任意给定,输入初始事实后能够得到推理结果4、设计人机界面,解释模块提供查询规则的功能5、可以不考虑知识库管理模块6、提交实验报告7、报告中要有推理树三、 实验内容:本次实验将做一个关于植物分类的小型专家系统,在植物分类系统中,要区分各种植物,可以对每种植物构造一条识别规则,其中规则右部为识别出的植物名,左部为该植物的特征。本次实验设计了一个简单的不通用推理机。推理机给出的推理结果是“苹果”。系统结构:知识库,推理机,动态数据库,人机界面,解释模块,知识库管理模块。人机界面解释模块推理机 知识库规则库动态数据库知识库管理模块 专家系统结构图四、 程序设计思想本次实验采用的推理方法为正向推理,正向推理是从已知事实出发,通过规则库求的结论。这种推理方式是正向使用规则,即问题的初始状态作为初始数据库,仅当数据库中的事实满足某条规则的前提时,该规则才能被使用。正向推理的推理基础是逻辑演绎的推理链。从一组事实出发,使用一组规则,来证明目标的成立。正向推理的步骤步1 将初始事实置入动态数据库;步2 用动态数据库中的事实,匹配目标条件,若目标条件满足,则推理成功,结束。 步3 用规则库中各规则的前件匹配动态数据库中的事实,将匹配成功的规则组成冲突集;步4 若冲突集为空,则运行失败,退出。步5 对冲突集做冲突消解,对选择执行的各规则,将其结论加入动态数据库,或执行其动作,转步2。 正向推理的流程图五、 程序实现过程初始事实:它的果肉为乳黄色它的果实里无石细胞它的果实为梨果它的果实无毛它的花托呈杯形它种子的胚有两个子叶规则:R1:if它种子的胚有两个子叶它的叶脉为网状then它是双子叶植物R2:if它种子的胚只有一个子叶 then它是单子叶植物R3:if它的果肉为白色 then 它是梨R4:if它的叶脉平行 then 它是单子叶植物R5:if它是双子叶植物它的花托呈杯形then它是蔷薇科植物R6:if它的花托呈圆柱形它的花瓣有5枚then它是蔷薇科植物R7:if它是双子叶植物它的花托呈圆柱形then它是蔷薇科植物R8:if它是蔷薇科植物它的果实为核果then它是李亚科植物R9:if 它是蔷薇科植物它的果实为梨果then它是苹果亚科植物R10:if它是李亚科植物它的果实有毛then它是桃R11:if它是李亚科植物它的果实无毛then 它是李R12:if它的果实为扁圆形它的果实外有纵沟then它是桃R13:if它是苹果亚科植物它的果实里无石细胞then它是苹果R14:if它是苹果亚科植物它的果实里有石细胞then它是梨R15:if它的果肉为乳黄色它的果肉质脆then它是苹果推理过程:初始事实写入动态数据库 果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶第一次循环用动态数据库的事实匹配目标条件,目标条件不成立用规则库中的规则逐一与数据库匹配R1:if它种子的胚有两个子叶它的叶脉为网the它是双子叶植物 “双子叶胚”匹配成功,加入冲突集R2:if它种子的胚只有一个子叶 then它是单子叶植物 匹配失败,该条规则放弃R3:if它的果肉为白色 then 它是梨 匹配失败,该条规则放弃R4:if它的叶脉平行 then 它是单子叶植物 匹配无结果,该条规则加入待测试规则集R5:if它是双子叶植物它的花托呈杯形then它是蔷薇科植物 “双子叶植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R6:if它的花托呈圆柱形它的花瓣有5枚then它是蔷薇科植物 匹配失败,该条规则放弃R7:if它是双子叶植物它的花托呈圆柱形then它是蔷薇科植物 匹配失败,该条规则放弃R8:if它是蔷薇科植物它的果实为核果then它是李亚科植物 “果实为核果”匹配失败,该条规则放弃R9:if 它是蔷薇科植物它的果实为梨果then它是苹果亚科植物 “蔷薇科植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R10:if它是李亚科植物它的果实有毛then它是桃 “果实有毛”匹配失败,该条规则放弃R11:if它是李亚科植物它的果实无毛then 它是李 “李亚科植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R12:if它的果实为扁圆形它的果实外有纵沟then它是桃“果实为扁圆形”和“果实外有从纵沟”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R13:if它是苹果亚科植物它的果实里无石细胞then它是苹果“苹果亚科植物”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集R14:if它是苹果亚科植物它的果实里有石细胞then它是梨“果实有石细胞” 匹配失败,该条规则放弃R15:if它的果肉为乳黄色它的果肉质脆then它是苹果“果肉质脆”目前的动态数据库无法匹配,匹配无结果,该条规则加入待测试规则集冲突消解 冲突集R1无冲突,则将后件加入动态数据库果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶 第二次循环用动态数据库的事实匹配目标条件,目标条件不成立用待测试规则库中的规则与数据库匹配 R4,R5,R9,R11,R12,R13,R15 果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶R5:if它是双子叶植物它的花托呈杯形then它是蔷薇科植物匹配成功,加入冲突集R4、R9、R11、R12、R13、R15 :匹配无结果,新待测试规则集 R4、R9、R11、R12、R13、R15冲突消解 冲突集R5无冲突,则将后件加入动态数据库果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶,蔷薇科第三次循环用动态数据库的事实匹配目标条件,目标条件不成立用待测试规则库中的规则与数据库匹配R4,R9,R11,R12,R13,R15果肉为乳黄色,果实里无石细胞,果实为梨果,果实无毛,花托呈杯形,种子的胚有两个子叶,双子叶,蔷薇科R9:if 它是蔷薇科植物它的果实为梨果then它是苹果亚科植物匹配成功,加入冲突集R4、R11、R12、R13、R15 :匹配无结果,新待测试规则集R4、R11、R12、R13、R15冲突消解 冲突集R9无冲突,则将后件加入动态数据库 果肉为乳黄色, 果实里无石细胞, 果实为梨果, 果实无毛,花托呈杯形, 种子的胚有两个子叶, 双子叶, 蔷薇科, 苹果亚科第四次循环用动态数据库的事实匹配目标条件,目标条件不成立用待测试规则库中的规则与数据库匹配R4、R11、R12、R13、R15果肉为乳黄色, 果实里无石细胞, 果实为梨果, 果实无毛,花托呈杯形, 种子的胚有两个子叶, 双子叶, 蔷薇科, 苹果亚科R13:if它是苹果亚科植物它的果实里无石细胞then它是苹果 匹配成功,加入冲突集R4、R11、R12、R15:匹配无结果,新待测试规则集 R4、R11、R12、R15冲突消解 冲突集R13无冲突,则将后件加入动态数据库 果肉为乳黄色, 果实里无石细胞, 果实为梨果, 果实无毛,花托呈杯形, 种子的胚有两个子叶, 双子叶, 蔷薇科, 苹果亚科, 苹果第五次循环动态数据库的事实没有变化,推理结束,即结束循环结果为苹果苹果苹果亚科植物蔷薇科双子叶植物乳黄色果肉果实无毛无石细胞梨果花托呈杯形双叶子胚 推理树图六、 程序显示结果七、体会与总结通过这次实验,使我更加深了对产生式系统的推理方式(正向推理)的理解。正向推理是从已知事实出发,通过规则库求的结论。这种推理方式是正向使用规则,即问题的初始状态作为初始数据库,仅当数据库中的事实满足某条规则的前提时,该规则才能被使用。正向推理的推理基础是逻辑演绎的推理链。从一组事实出发,使用一组规则,来证明目标的成立。这次实验需要编程,我使用的语言是VC+,编写的程序有些麻烦,人机界面也不算太友好,但是这是自己慢慢敲出来的,以后会慢慢改进,争取使自己的编程能力更进一步。通过这次实验,我相信,只要自己在每一次实践中都能仔细思考,其实都不会很难,关键在于自己能不能认真思考,能不能亲自动手去做;其次还要多操作,只有多操作才能从中发现问题,才能及时向老师和同学请教,解决问题,从而更好的掌握书本中知识。我会更加努力。附录(部分代码): /* 比较两个字符串*/bool equals(char a255,char b255) int i; if(strlen(a) = strlen(b) for(i = 0; i (int)strlen(a); i+) if(ai != bi) return false;return true;return 0;/* 显示事实 */void showfact() int n;n=sizeof(fact)/4;cout事实:;for(int i=0;in;i+) coutfacti,;coutendl;/* 显示规则 */void showrule() int m;m=sizeof(rule)/4;cout规则库中的规则:endl;for(int k=0;km;k+) coutrulekendl;/* 第一次单条件匹配 */void one_match()char m255;char n255;char b255;coutm; coutn;int k; k=sizeof(fact)/4;int successCount=0;char c1255,c2255,c3255,c4255; memcpy(c1,fact20,strlen(fact20)+1); memcpy(c2,fact21,strlen(fact21)+1); memcpy(c3,fact22,strlen(fact22)+1); memcpy(c4,fact23,strlen(fact23)+1);if(equals(m,c1)=1)|(equals(m,c2)=1)|(equals(m,c3)=1)|(equals(m,c4)=1) for(int j=0;jk;j+) memcpy(b,factj,strlen(factj)+1); if(equals(n,b)=1) +successCount; if(successCount=1) cout匹配成功endl; else cout匹配失败,该条规则放弃endl;elsecout匹配无结果,该条规则加入待测试规则集endl;/* 第一次双条件(关系为或)匹配 */void two_or_match()char m255;char n255;char b255;coutm;coutOR;coutn;int k; k=sizeof(fact)/4;int successCount= 0;for(int j=0;jk;j+) memcpy(b,factj,strlen(factj)+1); if(equals(m,b)=1) +successCount; if(equals(n,b)=1) +successCount; if(successCount=1)|(successCount=2) cout匹配成功,加入冲突集endl;elsecout匹配无结果,该条规则加入待测试规则集endl;/* 第一次双条件(关系为与)匹配1(模糊条件不同) */void two_and_match1()char m255;char n255;char a255;char b255;char c255;coutm;coutn; couta;coutAND;coutb;int k; k=sizeof(fact)/4;int successCount= 0;char c1255,c2255,c3255,c4255; memcpy(c1,fact20,strlen(fact20)+1); memcpy(c2,fact21,strlen(fact21)+1); memcpy(c3,fact22,strlen(fact22)+1); memcpy(c4,fact23,strlen(fact23)+1);if(equals(m,c1)=1)|(equals(m,c2)=1)|(equals(m,c3)=1)|(equals(m,c4)=1)|(equals(n,c1)=1)|(equals(n,c2)=1)|(equals(n,c3)=1)|(equals(n,c4)=1) for(int j=0;jk;j+) memcpy(c,factj,strlen(factj)+1); if(equals(a,c)=1) +successCount; if(equals(b,c)=1) +successCount; if(successCount=1)cout匹配无结果,该条规则加入待测试规则集endl;else cout匹配失败,该条规则放弃endl; elsecout匹配无结果,该条规则加入待测试规则集endl;/* 第一次双条件(关系为与)匹配2(模糊条件相同) */void two_and_match2()char m255;char n255;char a255;char b255;char c255;coutm;coutn; couta;coutAND;coutb;int k; k=sizeof(fact)/4;int successCount= 0;char c1255,c2255,c3255,c4255; memcpy(c1,fact20,strlen(fact20)+1); memcpy(c2,fact21,strlen(fact21)+1); memcpy(c3,fact22,strlen(fact22)+1); memcpy(c4,fact23,strlen(fact23)+1);if(equals(m,c1)=1)|(equals(m,c2)=1)|(equals(m,c3)=1)|(equals(m,c4)=1)&(equals(n,c1)=1)|(equals(n,c2)=1)|(equals(n,c3)=1)|(equals(n,c4)=1) for(int j=0;jk;j+) memcpy(c,factj,strlen(factj)+1); if(equals(a,c)=1) +successCount; if(equals(b,c)=1) +succ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新型储能材料生产线项目节能评估报告
- 2025年福建美术学科真题及答案
- 2025年血站采血考试试题及答案
- 灌云县2024-2025学年第一学期四年级数学期末学业评价题库及答案
- 拆除过程中材料搬运与堆放方案
- 离异父母子女抚养费支付及家庭财产分配调整合同
- 离婚房产分割及赡养费支付协议范本
- 沙盘模拟经营试题及答案
- 主题公园舞台租赁与互动体验项目合作协议
- 航空安全员上岗培训及答案
- 麻醉科降低围术期低体温PDCA
- GB 42590-2023民用无人驾驶航空器系统安全要求
- 《精神科护理学》练习题及答案
- 护士执业注册体检表
- 直升机结构与系统版
- 新生儿疾病诊疗规范诊疗指南诊疗常规2022版
- 外科学 胃十二指肠疾病
- 《智能投顾 大数据智能驱动投顾创新》读书笔记思维导图
- 职工自愿放弃社会保险协议
- 高中英语Unit5Firstaid文章BasicFirstAid人教版必修五
- 2021北京昌平初二(上)期中数学(A)(教师版)
评论
0/150
提交评论