- 实验内容
设计一个动物识别专家系统,规则库至少包含15条规则,可以识别至少7种动物,规则可增加;界面显示要求;
- 有若干选择动物特征的选择列表;
- 表现判断动物时,使用了哪些规则;
- 表现数据库的变化;
- 显示规则的调用次序;
- 显示最后的结果,包含动物能识别出来和动物不能识别出来两种情况;
- 至少检查两个例子实现正向推理和反向推理的区别;
- 解题思路
- 正向推理的思路为:将用户提供的动物特征放入事实库。利用已有事实和规则库内的规则推理出新的动物特征,并将新的动物特征放入事实库。当不在推理出新的动物特征时,判断是否推理出一种动物,满足条件后再判断是否事实库内存在多余的动物特征。两次判断都满足则输出此动物作为推理结果,否则推理结果为未知动物。
- 逆向推理的思路为:将用户提供的动物特征放入事实库。依次对7种目标动物进行识别,如果事实库内没有该动物,则利用规则库内的规则,去识别可以推理出该动物的特征。所有特征都识别成功则返回True,否则认为条件不足,继续利用规则去识别可以推理出当前特征的子类特征,判断条件同上。当所有的规则都使用后,仍然没用识别成功,向上返回false,判断该动物失败,去识别下一个目标动物。当所有的分支都识别成功,则向上返回True,说明识别该动物成功,判断是否事实库内存在多余的动物特征。没有多余特征即成功,输出该动物作为结果。有多余特征即失败,去识别下一个目标动物。7种目标动物皆识别失败,输出未知动物作为结果。
- 推理相关函数及代码
(C语言,MFC应用,代码见资源帖)
- 可视化界面
使用Visual Studio 2019制作可视化用户界面如下: