基于C#实现的小型动物识别推理系统

资源下载地址:https://download.csdn.net/download/sheziqiong/85896806
资源下载地址:https://download.csdn.net/download/sheziqiong/85896806

一 实验题目

制作小型动物识别系统进行正向推理

二 实验目的

1 熟悉和掌握产生式系统的构成和运行机制;

2 掌握基于规则推理的基本方法和技术,掌握正确的正向推理和逆向推理方法;

3 熟悉在具体问题中如何实现正向推理和逆向推理的求解流程。

三 实验要求

以动物识别系统为例,用选定的编程语言建造规则库和综合数据库,并能对它们进行增加、删除和修改操作,开发能进行正确的正向推理或反向推理的推理机。

四 数据结构

1)规则采用文件记录

在这里插入图片描述

每一条规则由“:”分割,在每一条规则中,每一个事实用空格分开,最后一个为结论,当需要加入规则时可以在文件中直接加入也可以在窗体中加入。

2)在程序中所用到的数据结构是C#提供的dictionary字典,key字段我存放的是规则的前件,value字段我存放的是规则的结论

在这里插入图片描述

五 实验算法

主界面如下:(界面的实现是通过网上下载的界面美化类,继承这个界面类得到的,压缩包是CSkin 16.1.14.3,老师如果想验证可以查看一下这个压缩包中的使用教程配置一下VS)

在这里插入图片描述

  1. 我先设计了一个工具类Tools,用来支持规则匹配算法

在这里插入图片描述

如果用户输入的事实中包含了一条知识的所有前件则返回一个true否则返回false

2.接着我设计了一个文件读写工具类File_tools用来简化文件读写操作

在这里插入图片描述

第一个方法是read_rules功能是根据输入的路径读到文件中的所有文本

第二个方法是update_rules功能是用来添加指定的规则到文件中

3.当主界面加载的时候需要初始化字典数据结构,从文件中读到规则然后依次将规则放入到字典中:
在这里插入图片描述

4.当用户勾选完了所需要的知识后,按下开始推理按钮,按钮的触发事件对应的函数的功能是,首先得到用户所有的输入事实构造一个List:
在这里插入图片描述

接下来便进入一个循环,每次将已有的事实和规则集中的知识前件进行匹配,即每次遍历知识库,把发生匹配的知识放到一个List中,如果说这个List不为空,说明本次有相应的知识发生了匹配,然后要做的工作是把已知事实中包含的匹配的知识的前件删除,然后把匹配的知识的结论加入到已知事实的末尾:

在这里插入图片描述

如果遍历一遍知识库,发现没有知识与之匹配了,即List为空时,并且这时是第一次推理,则推理失败,没有匹配项,而如果这是不是第一次推理,则可以输出事实集中的最后一项作为结果:
在这里插入图片描述

六 实验结果

运行截图:
在这里插入图片描述

在这里插入图片描述

匹配失败的例子:
在这里插入图片描述

点击高级选项:
在这里插入图片描述

查看系统中所有的规则:
在这里插入图片描述

添加一条规则:
在这里插入图片描述

再次查看所有规则:
在这里插入图片描述
资源下载地址:https://download.csdn.net/download/sheziqiong/85896806
资源下载地址:https://download.csdn.net/download/sheziqiong/85896806

猜你喜欢

转载自blog.csdn.net/sheziqiong/article/details/125599664