之前,人工智能课程实验要我们写一个产生式推理系统,于是用python完成了此次实验,采用MySQL数据库存储知识库和事实库,实验报告如下:

一、系统设置

1.1系统名称
交通工具识别系统

1.2系统开发环境
处理器: Intel® Core™ i5-10300H CPU @ 2.50GHz 2.50 GHz
机带 RAM: 16.0 GB (15.8 GB 可用)
系统类型: 64 位操作系统, 基于 x64 的处理器
开发语言版本:Python3.8
开发工具:PyCharm Community Edition 2021.1 x64
MySQL数据库版本:5.7.9

1.3系统谓词及含义
1、Size(x):表示要识别的交通工具体型大小。
2、Character(y):表示要识别的交通工具特点。
3、Vehicle(z):表示交通工具。

1.4系统目的
根据用户提供的事实,与知识库中的规则比配从而识别出交通工具

1.5系统模块

文件名功能
main.py主函数,调用gui类显示主界面
GUI.py定义gui类,设置主界面按钮、文本框等图像部件,完成与用户交互界面的功能
Rules.py定义Rule类,与MySQL数据库连接并实现规则的前提条件与结论的存储与调用
check.py定义Check类,用于推理匹配,检查规则库中是否有符合的知识
control.py定义Control类,控制程序,控制推理机进行推理

二、知识库

2.1规则库:
初始一共10条规则:
r0:IF Size(小)AND Character(有轮子) THEN Vehicle(车)
r1:IF Size(大)AND Character(流线型) THEN Vehicle(飞机)
r2:IF Character(天上飞的) THEN Vehicle(飞机)
r3:IF Character(水上游的) THEN Vehicle(船)
r4:IF Character(地上跑的) THEN Vehicle(车)
r5: IF Size(大) AND Character(冒黑烟) AND Vehicle(船) THEN Vehicle(轮船)
r6:IF Vehicle(飞机) AND Character(有机翼) THEN Vehicle(航天飞机)
r7:IF Vehicle(飞机) AND Character(有螺旋桨) THEN Vehicle(直升机)
r8:IF Vehicle(车) AND Character(有四个轮) THEN Vehicle(汽车)
r9:IF Vehicle(车) AND Character(有两个轮) THEN Vehicle(自行车)

2.2数据库
2.2.1 数据库连接:
Rule.py文件中
import pymysql

打开数据库连接

db = pymysql.connect(host=“localhost”, user=“root”, password = “123456”, database = “production”)

host表示数据库主机IP
User表示数据库用户名
Password表示数据库用户密码
Database表示数据库名称

2.2.2 rule表(知识库:规则表)
字段:
在这里插入图片描述
初始规则:
在这里插入图片描述
2.2.3 synthesis表(综合数据库:记录用户输入的事实)
字段:
在这里插入图片描述
事实:
在这里插入图片描述

三、系统功能展示:

3.1查看规则:
在这里插入图片描述
3.2添加规则:
在这里插入图片描述
3.3删除规则:
在这里插入图片描述
3.4修改规则:
在这里插入图片描述
3.5推理:
在这里插入图片描述

四、推理过程

注:本系统最多接受输入4个事实
4.1正向推理
事实区:小、有轮子、有四个轮
规则区:如上述2.1规则库
推理流程图:
在这里插入图片描述
4.2逆向推理
事实区:大、流线型、有螺旋桨
规则区:如上述2.1规则库
推理流程图:
在这里插入图片描述

五、总结与心得体会:

经过这一次实验,我对一阶谓词表示法和产生式表示法有了更深的认识。
为了实现用户交互界面的设计,我自学了Python的GUI编程库Tkinter,最终实现了一个简陋的用户交互界面。
在代码层面,我采用了MVC的软件设计模式,它强制性地使应用程序的输入、处理和输出分开,加深了我对软件工程这一专业的理解。
另外,对于知识库与事实库的存储采取了MySQL数据库这一软件,通过建立数据表实现了对规则的增删查改,也同时记录了用户输入的事实,完善了这一产生式系统。
但是,这个系统还存在有不足,比如对于产生式系统的界面比较简陋,没有美化界面使用户的交互体验更加舒适。
总而言之,学习永无止境,还需要继续努力!

源码+实验报告地址:
https://download.csdn.net/download/qq_36428822/43750709

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐