之前,人工智能课程实验要我们写一个产生式推理系统,于是用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
更多推荐