**基于产生式规则的动物识别系统正反向混合推理基于产生式规则的动物识别系统正反向混合推理
((Python))**
产生式系统产生式系统
把一组领域相关的产生式(或称规则)放在一起,让它们互相配合、协同动作,一个产生式生成的结论一般可供另一个(或一
些)产生式作为前提或前提的一部分来使用,以这种方式求得问题之解决,这样的一组产生式被称为产生式系统
产生式系统的构成产生式系统的构成
一组规则一组规则
每条规则分为左部(或称前提、前件)和右部(或称结论、动作、后件)。通常左部表示条件,核查左部条件是否得到满足一
般采用匹配方第 3 页法,即查看数据基DB(Data Base)中是否存在左部所指明的情况,若存在则认为匹配成功,否则认为
匹配失败。一般说来,匹配成功则执行右部所规定的动作,例如:添加、修改和删除等。
数据基数据基
DB 中存放的数据既是产生式作用的对象,又是构成产生式(或称规则)的基本元素。
一个推理程序(一个推理程序(Engine))
它负责整个产生式系统的运行,包括:规则左部与 DB 匹配;从匹配成功的规则中,选出一条将在下一步执行的规则 R*,执
行 R*右部规定的动作;掌握时间结束产生式系统的运行。
知识库知识库
R1: 如果 某动物有毛发(F1)则 该动物是哺乳动物(M1)
R2: 如果 某动物有奶(F2)则 该动物是哺乳动物(M1)
R3: 如果 某动物有羽毛(F3)则 该动物是鸟(M4)
R4: 如果 某动物会飞(F4),且下蛋(F5)则 该动物是鸟(M4)
R5: 如果 某动物吃肉(F6)则 该动物是食肉动物(M2)
R6: 如果 某动物有锋利的牙齿(F7),且有爪(F8),且眼睛盯着前方(F9)则 该动物是食肉动物(M2)第 10 页
R7: 如果 某动物是哺乳动物(M1),且有蹄(F10)则 该动物是有蹄类哺乳动物(M3)
R8: 如果 某动物是哺乳动物(M1),且反刍(F11)则 该动物是有蹄类哺乳动物(M3),且偶蹄类
R9: 如果 某动物是哺乳动物(M1),且是食肉动物(M2) ,且黄褐色(F12),且有暗班(F13)则 该动物是豹(H1)
R10:如果 某动物是哺乳动物(M1),且是食肉动物(M2),且黄褐色(F12),且有黑色条纹(F14)则 该动物是虎
(H2)
R11:如果 某动物是有蹄类哺乳动物(M3),且有长脖(F15),且有长腿(F16),且有暗斑(F13)则 该动物是长颈鹿
(H3)
R12:如果 某动物是有蹄类哺乳动物(M3),且有黑条纹(F14)
则 该动物是斑马(H4)
R13:如果 某动物是鸟(M4), 且不会飞(F17),且有长脖子(F15),且有长腿(F16),且是黑白色(F18)则 该动物
是鸵鸟(H5)
R14:如果 某动物是鸟(M4),且不会飞(F17),且会游泳(F19), 且是黑白色(F18)则 该动物是企鹅(H6)
R15:如果 某动物是鸟(M4),且善飞(F20)则 该动物是信天翁(H7)
正向推理:正向推理:
在产生式系统运行过程中,要不断地用 GDB 中的数据和产生式进行匹配。正向推理一定能推理出问题的结果,但是正向推理
过程在推理过程中比较盲目,可能会执行向很多无用的方向探索,类似于宽度优先搜索,当搜索结构比较深时,还可能产生指
数爆炸。
反向推理:反向推理:
向后(反向,逆向,反向链, 目标驱动)推理时,要把子目标和GDB 中的数据或产生式右部匹配。与数据匹配成功者生成叶