欢迎来到天天文库
浏览记录
ID:15631686
大小:361.00 KB
页数:21页
时间:2018-08-04
《产生式系统实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、学生实验报告实验课名称:人工智能实验项目名称:产生式系统实验专业名称:计算机科学与技术班级:2013240202学号:201324020226学生姓名:程文迪教师姓名:陈亮亮2015年10月25日实验日期:2015年10月23日实验室名称:明远2203一.实验名称:产生式系统实验二.实验目的与要求:1、确定推理方法(正向还是反向),并根据问题设计并实现一个简单的推理机(要求涉及:匹配、冲突消解)2、规则库要求至少包含15条规则(知识规则如何存储?)3、推理机和知识库必须分离4、初始事实可以任意给定,输入初始事实后
2、能够得到推理结果5、设计合理的人机界面,解释模块提供查询规则的功能6、可以不考虑知识库管理模块7、提交实验报告8、报告中要有推理树三.实验内容:本实验我设计了一个动物识别的小型专家系统,主要是根据一些观察到的事实,依据系统给出的一系列规则来进行正向推理,将逐渐的推导出结果。本次实验设计了一个简单的推理机,推理机给出的推理结果有“它是__动物”、“条件不足,不能推出它是什么动物”、“条件有冲突,没有这样的动物”或“条件不完全,但它有__的部分特征”。部分推理树如下:四、算法描述:1.表示事实和特征的知识。在本程序中
3、,我将动物的特征写入data.txt,将规则记入rules.txt,将动物种类记为goal.txt。通过函数voidreadFiles(){readGoal();readCod();readRule();}//reaFiles读入所有数据分别存放于goal[],rule[],cod[]自定义数组中。2.综合数据库和规则库实现综合数据库(包括特征和目标)typedefstruct{intxuh;//存放编号charvalu[50];//存放具体内容}Node;Nodegoal[20];Nodecod[50];voi
4、dreadCod(){FILE*fp;inti;if((fp=fopen("data.txt","r"))==NULL){printf("cannotopendata");exit(0);}i=0;while((fscanf(fp,"%d%s",&cod[i].xuh,&cod[i++].valu))!=EOF);fclose(fp);}//readCodvoidreadGoal(){FILE*fp;inti;if((fp=fopen("goal.txt","r"))==NULL){printf("canno
5、topengoal");exit(0);}i=0;while((fscanf(fp,"%d%s",&goal[i].xuh,&goal[i++].valu))!=EOF);fclose(fp);}//readGoal规则库typedefstruct{intrslt;intcodNum;//记载前提的个数intcod[10];//记载前提的序号intused;//记载是否已匹配成功}Nrule;Nrulerule[50];voidreadRule(){FILE*fp;inti;inttempxuh,tempco
6、dn;charch;if((fp=fopen("rules.txt","r"))==NULL){printf("cannotopenrules");exit(0);}i=0;rule[i].codNum=0;while((ch=fgetc(fp))!=EOF){if(i==15)i=i;tempcodn=0;while(ch!=''&&ch!=EOF)//每一条规则{tempxuh=0;while(ch<='9'&&ch>='0'){tempxuh=tempxuh*10+ch-'0';//ch=fgetc
7、(fp);}rule[i].cod[tempcodn++]=tempxuh;tempxuh=0;if(ch=='=')//下一个是结论{ch=fgetc(fp);while(ch<='9'&&ch>='0'){tempxuh=tempxuh*10+ch-'0';ch=fgetc(fp);}rule[i].rslt=tempxuh;}//ifelseif(ch=='*'){ch=fgetc(fp);}rule[i].codNum++;}i++;ch=fgetc(fp);}rulenum=i;fclose(fp);}
8、3.规则库的匹配算法是什么?如何选用可用规则集中的规则?分别使用哪些函数实现的?程序中的正向搜索是在voidmain()中调用forwardFinger实现的。正向搜索是从下向上的推理。由于建立规则库时的内在要求,即子规则必在父规则前,故进行正向推理的时候只要将规则库从前到后扫一遍看是否能由规则推出相应结果即可。如果能匹配推出结果则看该结果是否为动物,如果已经推出动物则推
此文档下载收益归作者所有