欢迎来到天天文库
浏览记录
ID:50115397
大小:65.36 KB
页数:20页
时间:2020-03-05
《产生式系统实验报告张昆.docx》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、产生式系统实验报告姓名:张昆学号:E201102044一、产生式系统的组成一个产生式系统由三大部分组成。1、一组称为产生式的规则。每一规则分左右两部,左部确定该规则的可用性,右部描述应用该规则时采用的行动。这些行动主要是修改数据库的内容。2、一个或多个数据库,它们含有适合于该特定任务的信息,数据库中有些部分可以使永久性的,有些则是仅与求解当前问题有关,可按任何适当的方法构造数据库中的信息;3、一个执行问题求解过程的规则解释程序。产生式系统是通过一系列“识别—作用”周期来执行求解过程。简单的“识别—作用”执行模式是这样:相
2、对于当前数据库的内容,每条产生式的左部被求值,确定哪些产生式是被满足的,二这些被满足的产生式构成冲突集。从冲突集中选择一个产生式,执行该产生式的右部,即改变数据库中的内容。相对于新的数据库内容,这种“识别—作用”过程重复进行。“识别—作用”周期停止的条件是:(1)冲突集为空域;(2)所期望的数据库内容出现,即求得问题的解。从冲突集总选择一个产生式的过程称为冲突解决。二、动物识别系统1、动物识别系统规则库设计数据结构:typedefstruct{intrslt;intcodNum;//记载前提的个数intcod[10];/
3、/记载前提的序号intused;//记载是否已匹配成功}Nrule;方便起见,前提和结论对应为数字,如图1;规则库存储于文件中,如图2图1图22、回溯策略2.1如图3,纵向递归推理,横向选择推理分支;两个回溯点:状态不合法、冲突集为空;结束:找到目标状态、尝试所有路径没有解答图32.2递归算法:PS_BACKTRACK(db)(1)若db指示了目标状态,则输出(显示)db作为解答,算法成功结束; (2)若db指示了失败状态,则返回真值F; (3)rs:=RULE_ACTIVATE(db),并用启发式知识对rs中的规则
4、按从优到劣的次序排列; (4)若rs为空,则返回真值F; (5)r:=MOVE_FIRST(rs); (6)PS_BACKTRACK(TRANSFORM(db,r)); (7)返回语句(4)。其中db为数据库内容,RULE_ACTIVATE()为匹配函数,MOVE_FIRST()功能为获取最优触发规则,TRANSFORM()将结论加入数据库1、相关策略3.1冲突解决策略:按详细程度排序,即优先选择前提部分描述最详细的规则3.2动物识别系统的推理策略:正向推理一、实验代码#include#incl
5、ude#include#include#defineMAXNUM50typedefstruct{intxuh;charvalu[50];}Node;typedefstruct{intstat;//0:还未访问1:至少用过一次2:没用过但不冲突intxuh;}NFact;typedefstruct{intsnum;//开始时的事实数intcurnum;//目前的事实数intnotEnoughFlag;//当最后若所有未用过的条件支持一个结论,但条件不足时,置1NFac
6、tcod[MAXNUM];}Fact;typedefstruct{intrslt;intcodNum;//记载前提的个数intcod[10];//记载前提的序号intused;//记载是否已匹配成功}Nrule;typedefstruct{intcodXuh;intstat;doubleweight;intrslt;//intcodNum;}bQueueNode;typedefstruct{inthead;inttail;bQueueNodebNode[MAXNUM];}bQueue;typedefstruct{intc
7、anReachTime;inthavReached;}Reach;typedefstruct{intlastCodXuhInQueue;intmyXuh;//intmycodNum;intmyRslt;doublemyweight;}CloseNode;typedefstruct{inthead;inttail;CloseNodenode[MAXNUM];}Close;intcodnum=28;intgoalnum=7;intrulenum=0;Nodegoal[20];Nodecod[50];Nrulerule[50]
8、;FactinpCod;bQueuebqueue;ReachrecReach[MAXNUM];Closeclose;voidreadGoal(){FILE*fp;inti;if((fp=fopen("goal.txt","r"))==NULL){printf("cannotopengoal");exit(0);}
此文档下载收益归作者所有