一、实验目的:熟悉一阶谓词逻辑和产生式表示法,掌握产生式系统的运行机制,以及基于规则推理的基本方法。
二、实验内容
设计并编程实现一个小型产生式系统(如:分类、诊断等类型)
系统名称:动物识别系统
三、实验要求
1. 具体应用领域自选,具体系统名称自定。
2. 用一阶谓词逻辑和产生式规则作为知识表示,利用产生式系统实验程序,建立知识库,分别运行正、反向推理。
四、实验报告要求
1. 系统设置,包括系统名称和系统谓词,给出谓词名及其含义
** 系统名称:动物识别系统。**
定义系统谓词:
谓词
含义
示例
F(“A”)
A是该动物具有的特征
F(“有毛”):有毛是该动物的特征
Type(“B”)
该动物属于B(种类)
Type(“哺乳类”):该动物属于哺乳类
Animal(“C”)
该动物是C
Animal(“斑马”):该动物是斑马
表1. 系统谓词表
2. 编辑知识库,通过输入规则或修改规则等,建立规则库
1. 知识库:知识库由id、feature组成。其中feature表示的是知识。
![](https://img-blog.csdnimg.cn/268324fcc57d426cbf39fae70e915ea3.png)
图1. 知识库
![](https://img-blog.csdnimg.cn/355b377b0bb34a38992756d28111c9c2.png)
图2.知识库
2. 规则库:规则库由id、f1、f2、f3、f4、console组成。其中f1、f2、f3、f4表示为规则的四个特征,为0时表示为无特征;console表示最终规则推出的结果。
图3.规则库
3.系统的功能
该动物识别系统一共具有10个功能。其中包括查看知识、查看规则、添加知识、添加规则、修改知识、修改规则、删除知识、删除规则、正向推理、反向推理。
图4.产生式系统总功能
1. 查看知识:点击查看知识功能后,系统会根据知识库中的信息进行知识查看,再点击修改、添加或删除数据时,点击刷新数据按钮,系统将会重新刷新数据。
图5.查看知识页面
2. 查看规则:点击查看规则功能后,会查询出数据库中规则信息。
图6.查看规则页面
3. 添加知识:点击添加知识页面后,当输入相关内容后,点击添加,页面提醒添加成功,该功能完成。
图7.添加知识页面
![](https://img-blog.csdnimg.cn/7a64fed9a4a14273ac92b1f2e450ade0.png)
图8.添加成功页面
4. 添加规则:点击添加规则后,输入相关的信息,进行规则添加;注意:在输入相关信息时,如果没有四个特征,则需要给多余特征输入框输入0。
图9.添加规则页面
5. 修改知识:在查看知识页面,查看找到需要修改的知识的id,进行修改。
图10.修改知识页面
6. 修改规则:查看需要修改的规则id,进行修改。
图11.修改规则页面
7. 删除知识:输入需要删除的知识id进行删除。
图12.删除知识页面
8. 删除规则:输入需要删除的规则id进行删除。
图13.删除规则页面
9. 正向推理:输入事实,系统进行正向推理得出正确答案和整个推理过程。
图14.正向推理页面
该正向推理功能的逻辑是对输入的四个事实建立list(事实为0表示没有特征,不会被加入数组中);以规则库建立二维数组list1,然后通过遍历事实数组list中的每一位事实,先在规则库list1行中找到与该事实相同的,再找list1中的列是否在list中存在,全部存在,则将该行规则的console加入list中,再遍历list中的下一条数据,直到遍历完成即可。
在遍历过程中,一旦有console加入,则表明该条规则是满足推理的,所以对该条规则的每一位数据找到知识表中的具体对应,再找到与之对应的系统谓词进行修饰,最终给该规则建立id,放入字典,形成完整的推理过程。
图15.正向推理逻辑图
10. 反向推理:输入事实,系统进行反向推理得出正确答案和整个推理过程。
图16.反向推理页面
该反向推理功能的逻辑:对事实建立list,存入不为0的事实;建立list1存入所有规则,遍历list中的事实与list2中console进行匹配,找出对应规则,将该规则的所有不为0的特征存入list中,直到遍历完整个list,最终字典中的内容就是推理过程。
在list与list1中console能对应上的规则,并遍历知识库,找到与该规则所有特征和结论对应的知识进行修饰,最终加入到key为id的字典dict中形成推理过程。
图17.反向推理逻辑图
4.关于系统
该系统一共分为四部分。
- MySql部分:该部分文件名为AnimalSystem.sql,主要存储系统的sql代码。
- due部分:该部分为系统后端部分,该部分主要内容为系统各个功能的具体实现。(在该部分的开头,修改数据库接口)
- Main1和views部分:这两部分为系统的前端部分,主要使用tkinter;(在Main1页面上进行运行)
- Gui部分:该部分为初版页面,存在很多问题。
5. 代码:
代码地址:GitHub - wooyeonicon/AnimalSystem: 动物识别产生式系统动物识别产生式系统. Contribute to wooyeonicon/AnimalSystem development by creating an account on GitHub.https://github.com/wooyeonicon/AnimalSystem.git
版权归原作者 cheoyeon 所有, 如有侵权,请联系我们删除。