利用产生式规则可以根据输入的动物特征来识别动物。现有猎豹,老虎,长颈鹿,斑马,鸵鸟,企鹅,海燕7种动物,以及如下15条判断规则:
1、IF 有毛发 THEN 是哺乳动物
2、IF 能产乳 THEN 是哺乳动物
3、IF 有羽毛 THEN 是鸟类动物
4、IF 能飞行,能生蛋 THEN 是鸟类动物
5、IF 是哺乳动物,吃肉 THEN 是食肉动物
6、IF 是哺乳动物,有爪子,有利齿,眼睛前视 THEN 是食肉动物
7、IF 是哺乳动物,有蹄 THEN 是有蹄动物
8、IF 是哺乳动物,能反刍 THEN 是有蹄动物
9、IF 是食肉动物,是黄褐色,有深色斑点 THEN 是猎豹
10、IF 是食肉动物,是黄褐色,有黑色条纹 THEN 是老虎
11、IF 是有蹄动物,有长腿,有长颈,是黄褐色,有深色斑点 THEN 是长颈鹿
12、IF 是有蹄动物,是白色,有黑色条纹 THEN 是斑马
13、IF 是鸟类动物,不会飞,有长腿,有长颈,是黑色和白色相杂 THEN 是鸵鸟
14、IF 是鸟类动物,不会飞,能游水,是黑色和白色相杂 THEN 是企鹅
15、IF 是鸟类动物,善于飞行 THEN 是海燕
例如,输入的事实为“能飞行,能生蛋,善于飞行”,则可以判断该动物为海燕。
思路分析:以上15条规则中的的条件与结论都可以分解为多个事实,如:有毛发、是哺乳动物、是猎豹,但他们具备不同的属性,“有毛发”属于原始的事实,“是哺乳动物”是中间事实,“是猎豹”是结论性质的事实。故中间事实有:是哺乳动物,是鸟类动物,是食肉动物,是有蹄动物,结论性质的事实有:是猎豹,是老虎,是长颈鹿, 是斑马,是鸵鸟,是企鹅,是海燕,其余均为原始事实。而每一个规则由两部分组成,即前提条件和结论,其中前提条件由若干条非结论性质的事实组成,结论由一条非原始性质的事实组成。
系统首先根据这15条规则和上述分析的事实与规则建立知识库,而后每一次输入事实集合的识别过程如下。采用正向推理,遍历知识库中所有的规则。对于某一条规则,判断输入事实集合中的事实 是否能满足该规则的前提条件,若不满足则继续验证下一条规则;若满足,则标记输入事实集合中的满足前提条件的事实为已使用,再判断该规则的结论是否已经存在于输入事实集合中,若不存在,则将规则的结论加入输入事实集合,并从第一条规则开始重新验证(只要输入事实集合在判断验证的过程中加入了新的事实,则须从第一条规则开始重新验证);若存在,则继续验证下一条规则。遍历结束后,判断输入事实集合,若存在零个或一个以上的结论性质的事实,则该动物无法识别;若存在未被标记为已使用的事实,则该动物无法识别;若存在且仅存在一个结论性质的事实,则该动物被识别。
在MFC中实现了产生式规则识别动物,运行结果如下:(点击进入源代码下载页面)

勾选界面上所列的动物特征,即输入事实,点击“识别”按钮后,左边显示识别结果,点击“清除”,则界面恢复初始状态。
产生式系统是人工智能中一种重要的推理系统,其知识库和推理机可以分离,因此大量的运用于专家系统的构建中,但产生式系统也存在过于简单、推理效率低等缺点。本文只是使用了正向推理对问题进行分析求解,产生式系统中还有诸如逆向推理和双向推理等推理方式,通过对知识和推理机的优化,可以有效地提高产生式系统的效率及推理精准度。
--End--


