动物识别专家系统设计文档
- 格式:doc
- 大小:289.68 KB
- 文档页数:7
动物识别专家系统
设计文档
一、设计目的
1. 理解并掌握基于规则系统的表示与推理
2. 学会编写小型的生产式系统,理解正向推理和反向推理的过程以及两者的区别
二、系统描述
这是一个用来识别老虎(tiger)、金钱豹(cheetah)、斑马(zebra)、长颈鹿(giraffe)、企鹅(penguin)、鸵鸟(ostrich)和信天翁(albatross)等七种动物的产生式ES。共15条规则、可以识别七种动物,这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。
三、运行环境
PC机、Visual prolog
四、系统分析
由上述规则可看出,虽然该系统是用来识别七种动物的,但在规则库中并没有简单地只设计七条规则,而是设计了15条,其基本方法是,首先根据一些比较简单的条件,如“有毛发”、“有羽毛”、“会飞”等条件将动物粗略分成哺乳动物、鸟、食肉动物三大类,然后随着条件的增加,逐步缩小分类范围,最后给出分别识别七种动物的规则。用此规则可形成各种动物的推理网络。
图1为有关“长颈鹿”的规则形成的正向推理网络,同理可画出其它动物的推理网络。
长颈鹿
有蹄类 长腿 有暗斑点
哺乳动物 有蹄 嚼反刍
有毛发 有奶 r11
r7
长脖子
图1 有关“长颈鹿”的规则形成的(正向)推理网络 在推理网络中,最高节点如“长颈鹿”为结论(正向推理)或假设(反向推理)节点。在正向推理情况下,该节点没有输出线,当推理到本节点时,推理就结束;中间节点既有输入线,又有输出线,如节点“哺乳动物”,当推理到中间节点时,系统会自动将此中间结果存入综合数据库;终端节点也称为事实节点,如节点“长脖子”、“有毛发”等,这些节点没有输入线,该事实是否为真可通过人机接口询问用户,然后加入综合数据库中。
图2 动物识别系统的推理链结构
五、系统结构
图3 专家系统原理图
豹子 老虎 斑马 企鹅 海鸥 长颈鹿 鸵鸟
黄褐色 暗斑点 长腿 黑条纹 有蹄类 长脖子 不飞 鸟 黑白色 会游泳 善飞
有毛发 有奶 吃肉 有犬齿 有爪子 眼盯前方 哺乳动物 食肉动物 有蹄 嚼反刍动物 有羽毛 会飞 下蛋 R9 R10 R11 R12 R13 R14 R15
R7 R8 R3 R4
R1 R2 R5 R6
本系统采用产生式结构,它包含三个主要部分:知识库、综合数据库和推理机。
⑴ 知识库。
在本系统当中,知识库中的知识用产生式规则来表示。本系统能够识别7种动物,知识库中共有以下15条规则:
r1: IF 该动物有毛发 THEN 该动物是哺乳动物
r2: IF 该动物有奶 THEN 该动物是哺乳动物
r3: IF 该动物有羽毛 THEN 该动物是鸟
r4: IF 该动物会飞 AND 会下蛋 THEN 该动物是鸟
r5: IF 该动物吃肉 THEN 该动物是食肉动物
r6: IF 该动物有犬齿 AND 有爪 AND 眼盯前方 THEN 该动物是食肉动物
r7: IF 该动物是哺乳动物 AND 有蹄 THEN 该动物是有蹄类动物
r8: IF 该动物是哺乳动物 AND 嚼反刍 THEN 该动物是有蹄类动物
r9: IF 该动物是哺乳动物 AND 食肉 AND 是黄褐色 AND 有黑色斑点,
THEN 该动物是金钱豹
r10: IF 该动物是哺乳动物 AND 食肉 AND 是黄褐色 AND 有黑色条纹,THEN 该动物是虎
r11: IF 该动物是有蹄类动物 AND 有长脖子 AND 有长腿 AND 有暗斑点
THEN 该动物是长颈鹿
r12: IF 该动物是有蹄类动物 AND 有黑色条纹 THEN 该动物是斑马
r13: IF 该动物是鸟 AND 不会飞 AND 有长脖子 AND 有长腿 AND 有黑白色 THEN 该动物是鸵鸟
r14: IF 该动物是鸟 AND不会飞 AND 会游泳 AND 有黑白色 THEN 该动物是企鹅
r15: IF 该动物是鸟 AND善飞 THEN 该动物是信天翁
⑵ 综合数据库。
综合数据库用来存放问题求解过程中各种当前信息,例如问题的原始事实、中间结论及最终结论,它的内容是动态和不断变化的。 ⑶ 推理机。
在本系统中,我们采用正向推理,并且是精确推理。推理过程如图3所示。
图4 正向推理流程图
六、PROLOG源程序
七、C++源程序及运行结果
C++代码详见Animal identification.cpp
运行结果:
八、总结
从专家系统的原理框图出发, 简单阐述了专家系统的基本工作原理。并在此基础上, 采用精确推理的方法, 运用 PROLOG 语言实现了一个简单的动物识别专家系统。