产生式系统实验报告 姓名:张昆 学号:E201102044 一、产生式系统的组成 一个产生式系统由三大部分组成。1、一组称为产生式的规则。每一规则分左右两部,左部确定该规则的可用性,右部描述应用该规则时采用的行动。这些行动主要是修改数据库的内容。2、一个或多个数据库,它们含有适合于该特定任务的信息,数据库中有些部分可以使永久性的,有些则是仅与求解当前问题有关,可按任何适当的方法构造数据库中的信息;3、一个执行问题求解过程的规则解释程序。 产生式系统是通过一系列“识别—作用”周期来执行求解过程。简单的“识别—作用”执行模式是这样:相对于当前数据库的内容,每条产生式的左部被求值,确定哪些产生式是被满足的,二这些被满足的产生式构成冲突集。从冲突集中选择一个产生式,执行该产生式的右部,即改变数据库中的内容。相对于新的数据库内容,这种“识别—作用”过程重复进行。“识别—作用”周期停止的条件是:(1)冲突集为空域;(2)所期望的数据库内容出现,即求得问题的解。从冲突集总选择一个产生式的过程称为冲突解决。 二、动物识别系统 1、 动物识别系统规则库设计 数据结构: typedef struct { int rslt; int codNum;//记载前提的个数 int cod[10];//记载前提的序号 int used;//记载是否已匹配成功 }Nrule; 方便起见,前提和结论对应为数字,如图 1;规则库存储于文件中,如图 2 图 1 图 2 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、 相关策略 3.1 冲突解决策略:按详细程度排序,即优先选择前提部分描述最详细的规则 3.2 动物识别系统的推理策略:正向推理 三、实验代码 #include #include #include #include #define...