动物识别专家系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
动物识别专家系统
1、专家系统的基本工作原理
尽管专家系统有众多类型, 名称各异, 但基本原理框图一致, 如图1 所示。专家系统的核心是知识库和推理机, 其基本工作过程为: 系统根据知识库中的知识和用户提供的事实进行推理, 不断地由已知前提推出一些初步结论, 并将这些初步结论作为中间结果存放在数据库中, 然后将其作为新的已知事实进行下一步推理, 往复循环, 逐步逼近求解目标。在这个过程中, 系统可以通过人机接口不断地与用户交流, 向用户提问, 或对用户提出的问题做出解释。知识库是专家系统的知识存储器, 用来存放求解问题的领域知识。推理机是专家系统中用来实现推理的程序。其主要功能是模拟领域专家的思维过程, 控制并执行对问题的求解。它能根据当前已知的事实, 利用知识库中的知识, 按一定的推理方法和控制策略进行推理, 直到得出相应的结论为止。它包括推理方法和控制策略两个部分。大多数专家系统都采用人机对话的交互式解释方法。知识获取机构主要实现机器学习。人机接口是领域专家、知识工程师、一般用户间进行交互的界面, 由一组程序及相应的硬件组成, 用于完成输入输出工作。
2、动物识别专家系统在PROLOG 下的实现和使用说明
为了更好地阐明专家系统的基本工作原理, 我们用PROLOG语言实现一个简单的动物识别专家系统。该系统可以识别老虎、金钱豹、斑马、长颈鹿、鸵鸟、企鹅、海燕这7 种动物
1、知识库
在本系统当中, 知识库中的知识用产生式规则来表示。本系统能够识别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 不会飞THEN 该动物是鸵鸟
R14 IF 该动物是鸟AND 会游泳AND不会飞AND 有黑白二色THEN 该动物是企鹅
R15 IF 该动物是鸟AND 善飞THEN 该动物是海燕
在知识库中, 并非简单地给每一种动物一条规则。首先, 将动物粗略地分为哺乳动物、鸟、肉食动物3 大类,然后逐步缩小分类范围, 最后给出识别7 种动物的规则。
2、数据库
假设数据库中存放以下事实: 动物有暗斑, 有长脖子, 有长腿, 有奶, 有蹄。
求解目标: 该动物是什么动物?
3、推理机的工作过程
首先从规则库中取出第一条规则R1, 检查其前提是否可与数据库中的已知事实相匹配。R1 的前提是/ 有毛发, 但事实库中没有这一事实, 故匹配失败。接着取规则R2, 它的前提可以与事实库中的已知事实/ 有奶相匹配, R2 被执行, 并将其结论/ 该动物是哺乳动物作为新的事实加入到数据库中。此时, 数据库的内容变为: 动物有暗斑, 有长脖子, 有长腿, 有奶, 有蹄, 是哺乳动物。再从规则库中取R2, R3, R4, R5, R6 进行匹配, 结果都匹配失败。接着取R7, 其前提与事实库中的已知事实/ 是哺乳动物和/ 有蹄相匹配, 因此R7 被执行, 并将其结论/ 该动物是有蹄类动物作为新的事实加入到数据库中。此时, 数据库中内容变为: 动物有暗斑, 有长脖子, 有长腿, 有奶, 有蹄, 是哺乳动物, 是有蹄类动物。最后, 规则R8, R9, R10 均匹配失败。取R11, 其前提/ 该动物是有蹄类动物AND 有长脖子AND 有长腿AND身上有暗斑点与事实库中的已知事实相匹配, R11 被执行, 并推出/ 该动物是长颈鹿。由于/ 长颈鹿已经是目标集合中的一个结论, 即已推出最终结果, 故问题求解过程结束
4、使用说明
运行程序后根据提示,如果符合数据库,就输入yes按下回车键,反之输入no按下回车键,直到输出结果
例如:
3、PROLOG 源程序
/ *谓词说明* /
database
xpositive(symbol,symbol)
xnegative(symbol,symbol)
predicates
run
animal_is(symbol)
it_is(symbol)
positive(symbol,symbol)
negative(symbol,symbol)
clear_facts
remember(symbol,symbol,symbol)
ask(symbol,symbol)
/ *推理过程* /
clauses
run:-
animal_is(X),!,
write("\nYour animal may be a(n)",X),nl,nl,clear_facts.
run:-
write("\nUnable to determine what"),