1、动物识别专家系统简介动物识别专家系统是经典的专家系统实验模型,它用产生式规则来表示知识,共 15 条规则,可以识别七种动物。这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。2.1、建立动物识别专家系统的规则库,并用与/或图来描述这个规则库。规则库由 15 条规则组成,编写一段程序,把 15 条规则组成一个表直接赋值给规则库 rules,规则名分别是;rule1,rule2 , ,rule15。( rules(rule1(if (animal has hair) 若动物有毛发(F1)(then (animal is mammal) 则动物是哺乳
2、动物(M1)(rule2(if (animal gives milk) 若动物有奶(F2)(then (animal is mammal) 则动物是哺乳动物(M1)(rule3(if (animal has feathers) 若动物有羽毛(F9)(then (animal is bird) 则动物是鸟(M4)(rule4(if (animal flies) 若动物会飞(F10)(animal lays eggs) 且生蛋(F11)(then (animal is bird) 则动物是鸟(M4)(rule5(if (animal eats meat) 若动物吃肉类(F3)(then (anim
3、al is carnivore) 则动物是食肉动物(M2)(rule6(if (animal Raspointed teeth) 若动物有犀利牙齿(F4)(animal has claws) 且有爪(F5)(animal has forword eyes) 且眼向前方(F6)(then (animal is carnivore) 则动物是食肉动物(M2)(rule7(if (animal has mammal) 若动物是哺乳动物 (M1) (animal has hoofs) 且有蹄(F7)(then (animal is ungulate) 则动物是有蹄类动物 (M3)(rule8(if (
4、animal has mammal) 若动物是哺乳动物 (M1)(animal chews cud) 且反刍(F8)(then (animal is ungulate) 则动物是有蹄类动物 (M3)(rule9(if (animal is mammal) 若动物是哺乳动物(M1)(animal is carnivore) 且是食肉动物(M2)(animal has tawny color) 且有黄褐色(F12)(animal has dark sports) 且有暗斑点(F13)(then (animal is cheetah) 则动物是豹(H1)(rule10(if (animal is m
5、ammal) 若动物是哺乳动物(M1)(animal is carnivore) 且是食肉动物(M2)(animal has tawny color) 且有黄褐色(F12)(animal has black stripes) 且有黑色条纹(F15)(then (animal is tiger) 则动物是虎(H2)(rule11(if (animal is ungulate) 若动物是有蹄类动物(M3)(animal has long neck) 且有长脖子(F16)(animal has long legs) 且有长腿(F14)(animal has dark sports) 且有暗斑点(F1
6、3)(then (animal is giraffe) 则动物是长颈鹿(H3)(rule12(if (animal is ungulate) 若动物是有蹄类动物(M3)(animal has black stripes) 且有黑色条纹(F15)(then (animal is zebra) 则动物是斑马(H4)(rule13(if (animal is bird) 若动物是鸟(M4)(animal does not fly) 且不会飞(F17)(animal has long neck) 且有长脖子(F16) (animal has long legs) 且有长腿(F14)(animal bl
7、ack and white) 且有黑白二色(F18)(then (animal is ostrich) 则动物是驼鸟(H5)(rule14(if (animal is bird) 若动物是鸟(M4)(animal does not fly) 且不会飞(F17)(animal swims) 且会游泳(F19)(animal black and white) 且有黑白二色(F18)(then (animal is penguin) 则动物是企鹅(H6)(rule15(if (animal is bird) 若动物是鸟(M4)(animal flies well) 且善飞(F20)(then (an
8、imal is albatross) 则动物是信天翁(H6)在上述规则的说明中,用 F1-F20 标记的是初始事实或证据,用 M1-M4 标记的是中间结论,用 H1-H7 标记的是最终结论。用标记表示 15 条规则如下:R1:F1 M1R2:F2 M1R3:F9 M4R4:F10 F11M4R5:F3 M2R6:F4 F5F6 M2R7:F7 M1M3R8:F8 M1M3R9:F12 F13M1M2 H1R10:F12 F15M1M2 H2R11:F13 F14F16 M3 H3R12:F15 M3H4R13:F14 F16F17 F18 M4H5R14:F17 F18F19 M4 H6R15
9、:F20 M4H72.2、推理机及其实现1、正向推理过程:根据在综合数据库中给出的已知事实,正向使用规则,即把规则的前件同当前数据库的内容进行匹配来选取可用规则,若有多条规则可用,则采用先选优先的策略,将执行规则的结论添加到综合数据库中,并将用过的规则置上激活标志,直到问题求解或没有可用规则为止.2、正向推理过程程序实现首先,将规则库中规则的前件同当前数据库的内容进行匹配,若匹配成功,则将这条规则送入可用规则集中;否则,取下一条规则进行匹配。接着,如果规则非空且问题未求解,则重复上述过程,调用 select-rule(s),从规则集中选择一条规则,将该规则的结论添加到综合数据库中。最后调用 r
10、espond 命令。由上可见正向推理过程是递归的。3、举例说明正向推理机推理过程若已知的初始事实是 F13(有暗斑点)、F12( 黄褐色)、F3(若动物吃肉类) 及 F1(动物有毛发),使用 steq 函数把已知的初始事实赋值给事实表 facts:(steq facts(animal has dark spots)(animal has tawny color)( animal eats meat)( animal has hair) 即:facts=(F13 F12 F3 F1)facts 是一个可编辑的表,即可以添加。steq 函数的功能就是对 facts 进行编辑。使用在前面建立的 ru
11、les 规则库,叙述正向推理过程如下:(1)、在 rules 中查找规则前件的全部条件在当前 facts=(F13 F12 F3 F1)中的可用规则,首先找到规则 R1,则把 R1 后件中不在 facts 中的结论 M1 添加到 facts 中,扩充 facts 为facts=(F13 F12 F3 F1 M1)。实际上,对 facts=(F13 F12 F3 F1)还有一条可用规则 R5,因为 R5 的前件 F3 也在当前 facts中。但是,由前面提到的冲突消解策略,若有多条可用规则,则按可用规则在规则库表 rules中的顺序选择第一条可用规则。(2)、对当前 facts 在 rules
12、中查找可用规则,仍然找到规则 R1,但 R1 的后件结论 M1 已在 facts 中,因此不会执行规则 R1。继续查找可用规则,找到规则 R5,因为 R5 的后件结论 M2 不在当前的 facts 中,故执行 R5,把 R5 不在 facts 中的结论 M2 添加到 facts 中,扩充 facts 为 facts=(F13 F12 F3 F1 M1 M2)。(3)、对当前 facts 在 rules 中继续查找可用规则,规则 R9 的前件在 facts 中,因此 R9 是可用规则。而 R9 的后件结论 H1 不在当前的 facts 中,执行 R9,把 R9 的结论 H1 扩充到facts 中,使得 facts=(F13 F12 F3 F1 M1 M2 H1)。(4)、对当前 facts,在 rules 中找不到规则的前件所包含的全部条件在 facts 中且后件有不在 facts 中的结论的任何规则,至此,正向推理结束.