产生式系统实验报告——张昆+E201102044.docx

产生式系统实验报告——张昆+E201102044.docx

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
产生式系统实验报告 姓名:张昆 学号:E201102044 产生式系统的组成 一个产生式系统由三大部分组成。1、一组称为产生式的规则。每一规则分左右两部,左部确定该规则的可用性,右部描述应用该规则时采用的行动。这些行动主要是修改数据库的内容。2、一个或多个数据库,它们含有适合于该特定任务的信息,数据库中有些部分可以使永久性的,有些则是仅与求解当前问题有关,可按任何适当的方法构造数据库中的信息;3、一个执行问题求解过程的规则解释程序。 产生式系统是通过一系列“识别—作用”周期来执行求解过程。简单的“识别—作用”执行模式是这样:相对于当前数据库的内容,每条产生式的左部被求值,确定哪些产生式是被满足的,二这些被满足的产生式构成冲突集。从冲突集中选择一个产生式,执行该产生式的右部,即改变数据库中的内容。相对于新的数据库内容,这种“识别—作用”过程重复进行。“识别—作用”周期停止的条件是:(1)冲突集为空域;(2)所期望的数据库内容出现,即求得问题的解。从冲突集总选择一个产生式的过程称为冲突解决。 动物识别系统 动物识别系统规则库设计 数据结构: typedef struct { int rslt; int codNum;//记载前提的个数 int cod[10];//记载前提的序号 int used;//记载是否已匹配成功 }Nrule; 方便起见,前提和结论对应为数字,如图1;规则库存储于文件中,如图2 图1 图2 回溯策略 2.1 如图3,纵向递归推理,横向选择推理分支 ;两个回溯点:状态不合法、冲突集为空 ;结束:找到目标状态、尝试所有路径没有解答 图3 2.2 递归算法:PS_BACKTRACK(db) (1) 若db指示了目标状态,则输出(显示)db作为解答,算法成功结束;   (2) 若db指示了失败状态,则返回真值F;   (3) rs :=RULE_ACTIVATE(db),并用启发式知识对rs中的规则按从优到劣的次序排列;   (4) 若rs为空,则返回真值F;   (5) r:=MOVE_FIRST(rs);   (6) PS_BACKTRACK(TRANSFORM(db,r));   (7) 返回语句(4)。 其中db为数据库内容,RULE_ACTIVATE()为匹配函数,MOVE_FIRST()功能为获取最优触发规则,TRANSFORM()将结论加入数据库 相关策略 3.1 冲突解决策略:按详细程度排序,即优先选择前提部分描述最详细的规则 3.2 动物识别系统的推理策略:正向推理 实验代码 #includestdio.h #includestring.h #includestdlib.h #includemath.h #define MAXNUM 50 typedef struct { int xuh; char valu[50]; }Node; typedef struct { int stat;//0:还未访问 1:至少用过一次 2:没用过但不冲突 int xuh; }NFact; typedef struct { int snum;//开始时的事实数 int curnum;//目前的事实数 int notEnoughFlag;//当最后若所有未用过的条件支持一个结论,但条件不足时,置1 NFact cod[MAXNUM]; }Fact; typedef struct { int rslt; int codNum;//记载前提的个数 int cod[10];//记载前提的序号 int used;//记载是否已匹配成功 }Nrule; typedef struct { int codXuh; int stat; double weight; int rslt; //int codNum; }bQueueNode; typedef struct { int head; int tail; bQueueNode bNode[MAXNUM]; }bQueue; typedef struct { int canReachTime; int havReached; }Reach; typedef struct { int lastCodXuhInQueue; int myXuh; //int mycodNum; int myRslt; double myweight; }CloseNode; typedef struct { int head; int tail; CloseNode node[MAXNUM]; }Close; int codnum=28; i

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档