人工智能 卢童.doc

上传人:博****1 文档编号:552945310 上传时间:2022-12-20 格式:DOC 页数:23 大小:568.50KB
返回 下载 相关 举报
人工智能 卢童.doc_第1页
第1页 / 共23页
人工智能 卢童.doc_第2页
第2页 / 共23页
人工智能 卢童.doc_第3页
第3页 / 共23页
人工智能 卢童.doc_第4页
第4页 / 共23页
人工智能 卢童.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《人工智能 卢童.doc》由会员分享,可在线阅读,更多相关《人工智能 卢童.doc(23页珍藏版)》请在金锄头文库上搜索。

1、人工智能与专家系统教学实习设计题目:一个关于植物分类的专家型系统 系 名: 计算机科学与信息工程系 专 业: 信息管理与信息系统 班 级: 信息一班 姓 名: 卢童 学 号:0808044127 指导老师: 郭鹏 目录1. 设计任务1.1 设计题目31.2设计要求31.3设计任务32方案设计2.1原理32.2 具体设计方法33系统实施3.1 系统开发环境53.2系统主要功能介绍53.3处理流程图53.4 核心源程序63.5系统运行结果64开发心得4.1设计存在的问题74.2经验和体会85参考文献9 1.设计任务1.1 设计题目利用Prolog设计一个关于植物分类的专家型系统 1.2设计要求利用

2、Prolog语言实现基于产生式规则的正向推理和反向推理,通过设计一个关于植物分类的专家型系统进一步熟悉和了解Prolog语言。并对人工智能技术有更加深入的了解。1.3设计任务 一个关于植物分类的小型专家系统,在植物分类系统中,要区分各种植物,可以对每种植物构造一条识别规则,其中规则右部为识别出的植物名,左部为该植物的特征。2方案设计2.1原理 本次实验采用的推理方法为正向推理,正向推理是从已知事实出发,通过规则库求的结论。这种推理方式是正向使用规则,即问题的初始状态作为初始数据库,仅当数据库中的事实满足某条规则的前提时,该规则才能被使用。正向推理的推理基础是逻辑演绎的推理链。从一组事实出发,使

3、用一组规则,来证明目标的成立。正向推理的步骤步1 将初始事实置入动态数据库;步2 用动态数据库中的事实,匹配目标条件,若目标条件满足,则推理成功,结束。 步3 用规则库中各规则的前件匹配动态数据库中的事实,将匹配成功的规则组成冲突集;步4 若冲突集为空,则运行失败,退出。步5 对冲突集做冲突消解,对选择执行的各规则,将其结论加入动态数据库,或执行其动作,转步2。2.2 具体设计方法/* 比较两个字符串*/bool equals(char a255,char b255) int i; if(strlen(a) = strlen(b) for(i = 0; i (int)strlen(a); i+

4、) 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 b

5、255;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)=

6、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 success

7、Count= 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 b2

8、55;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)|(

9、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匹配

10、无结果,该条规则加入待测试规则集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)|(eq

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

当前位置:首页 > 生活休闲 > 科普知识

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