一、实验目的:熟悉一阶谓词逻辑和产生式表示法,掌握产生式系统的运行机制,以及基于规则推理的基本方法。

二、实验内容

设计并编程实现一个小型产生式系统(如:分类、诊断等类型)

系统名称:动物识别系统

三、实验要求

1. 具体应用领域自选,具体系统名称自定。

2. 用一阶谓词逻辑和产生式规则作为知识表示,利用产生式系统实验程序,建立知识库,分别运行正、反向推理。

四、实验报告要求

1. 系统设置,包括系统名称和系统谓词,给出谓词名及其含义

系统名称:动物识别系统。

定义系统谓词:

谓词

含义

示例

F(“A”)

A是该动物具有的特征

F(“有毛”):有毛是该动物的特征

Type(“B”)

该动物属于B(种类)

Type(“哺乳类”):该动物属于哺乳类

Animal(“C”)

该动物是C

Animal(“斑马”):该动物是斑马

表1. 系统谓词表

2. 编辑知识库,通过输入规则或修改规则等,建立规则库

1. 知识库:知识库由id、feature组成。其中feature表示的是知识。

​​​​​​​​​​​​​​

图1. 知识库

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

图2.知识库

2. 规则库:规则库由id、f1、f2、f3、f4、console组成。其中f1、f2、f3、f4表示为规则的四个特征,为0时表示为无特征;console表示最终规则推出的结果。

图3.规则库

3.系统的功能

该动物识别系统一共具有10个功能。其中包括查看知识、查看规则、添加知识、添加规则、修改知识、修改规则、删除知识、删除规则、正向推理、反向推理。

​​​​​​​图4.产生式系统总功能

1. 查看知识:点击查看知识功能后,系统会根据知识库中的信息进行知识查看,再点击修改、添加或删除数据时,点击刷新数据按钮,系统将会重新刷新数据。

图5.查看知识页面

2. 查看规则:点击查看规则功能后,会查询出数据库中规则信息。

​​​​​​​

图6.查看规则页面

3. 添加知识:点击添加知识页面后,当输入相关内容后,点击添加,页面提醒添加成功,该功能完成。

图7.添加知识页面

​​​​​​​

图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.关于系统

该系统一共分为四部分。

  1. MySql部分:该部分文件名为AnimalSystem.sql,主要存储系统的sql代码。
  2. due部分:该部分为系统后端部分,该部分主要内容为系统各个功能的具体实现。(在该部分的开头,修改数据库接口)
  3. Main1和views部分:这两部分为系统的前端部分,主要使用tkinter;(在Main1页面上进行运行)
  4. Gui部分:该部分为初版页面,存在很多问题。

5. 代码:

代码地址:GitHub – wooyeonicon/AnimalSystem: 动物识别产生式系统动物识别产生式系统. Contribute to wooyeonicon/AnimalSystem development by creating an account on GitHub.https://github.com/wooyeonicon/AnimalSystem.git