文章性质:实验报告
文章介绍:这是作者选修 人工智能 时写的实验报告,设计实现了 动物类型产生式推理系统 ,希望可以为小伙伴们提供微薄之力~
代码链接:https://download.csdn.net/download/nanzhou520/88677430
冷知识+1:小伙伴们不经意的 点赞 与 收藏 ✨ 可以让作者更有创作动力!
1. 理解产生式系统的结构原理与实际应用。
2. 掌握产生式规则表示及规则库组建的实现方法。
3. 熟悉和掌握产生式系统的运行机制,掌握基于规则推理的基本方法。
4. 学会用高级程序设计语言开发基于规则的动物识别系统。
经过课程学习,了解到产生式系统是由一组规则组成的、能够协同作用的推理系统,主要由规则库、综合数据库和推理机三大部分组成。本实验要求运用所学知识,借助 Pyhton 语言设计并开发实现一个动物类型产生式推理系统,能根据选择或输入的动物特征正向推理动物类型,并给出相应的回答。同时,系统还可显示初始规则库,并实现对规则库的增加规则与删除规则操作。此外,在实现正向推理的基础上,利用 GUI 图形界面给出合理的交互接口,实现基本演示功能。
(1)系统设置,包括设置系统名称为“动物类型产生式推理系统”和系统谓词,给出谓词名及其意义。
(2)建立事实库,即综合数据库:
事实库在程序开始时直接输入,用户根据需要选择动物特征,点击“开始推理”后进行推理识别,若识别失败,可以重新选择或退出系统。
动物初始特征如下:
有毛发 产奶 有羽毛 不会飞 会下蛋 吃肉 有犬齿 有爪
眼盯前方 有蹄 反刍 黄褐色 有斑点 有黑色条纹 不会飞 长脖
长腿 会游泳 黑白二色 善飞 哺乳类 鸟类 食肉类 有蹄类 偶蹄类
动物初始类型如下:
金钱豹 虎 斑马 长颈鹿 信天翁 鸵鸟 企鹅
(3)建立规则库,即建立产生式规则:
编辑知识库,通过输入规则或删除规则等,完成整个规则库的建立。本算法采用了产生中间事实的方法,便于建立和使用规则。
为了便于设计,我在初始时仅仅罗列 7 种动物类型,这样所需要的产生式规则较少,本算法共有 15 种规则,具体规则如下:
R1:IF 该动物有毛发 |
THEN 该动物是哺乳类 |
R2:IF 该动物产奶 | THEN 该动物是哺乳类 |
R3:IF 该动物有羽毛 | THEN 该动物是鸟类 |
R4:IF 该动物会飞 AND 会下蛋 | THEN 该动物是鸟类 |
R5:IF 该动物吃肉 AND 是哺乳类 | THEN 该动物是食肉类 |
R6:IF 该动物有犬齿 AND 眼盯前方 AND 有爪 | THEN 该动物是食肉类 |
R7:IF 该动物有蹄 AND 是哺乳类 | THEN 该动物是有蹄类 |
R8:IF 该动物反刍 AND 是有蹄类 | THEN 该动物是偶蹄类 |
R9:IF 该动物是黄褐色 AND 有黑色条纹 AND 是食肉类 | THEN 该动物是虎 |
R10:IF 该动物是黄褐色 AND 有斑点 AND 是食肉类 | THEN 该动物是金钱豹 |
R11:IF 该动物是黄褐色 AND 有斑点 AND 是长脖 AND 是长腿 AND 是有蹄类 | THEN 该动物是长颈鹿 |
R12:IF 该动物有黑色条纹 AND 是有蹄类 | THEN 该动物是斑马 |
R13:IF 该动物善飞 AND 是鸟类 | THEN 该动物是信天翁 |
R14:IF 该动物不会飞 AND 是长脖 AND 是长腿 AND 是鸟类 | THEN 该动物是鸵鸟 |
R15:IF 该动物不会飞 AND 会游泳 AND 是黑白二色 AND 是鸟类 | THEN 该动物是企鹅 |
(4)正向推理,即从已知事实出发,通过规则库推理得到结论。
推理过程:规则集中的规则前件与事实库中的事实进行匹配,得到匹配的规则集合。从匹配规则集合中选择一条规则作为使用规则,执行使用规则的后件,将该使用规则的后件送入事实库中,重复这个过程直至达到目标。如果有多条匹配规则需从中选一条作为使用规则,本算法是根据规则的顺序依次选择,且规则中不存在同一组事实对应多条匹配规则。
动物类型产生式推理系统的主界面如下:
系统名称:动物类型产生式推理系统
谓词定义:
蕴含式表示:
本系统的产生式规则用 “特征1 特征2 特征3 ... ,结论” 表示
考虑到编程需求,在将规则库中的规则存入 Rule.txt 文件的同时,把规则的前件与后件分别存入了 Info.txt 文件和 Animal.txt 文件:
若输入如下事实:黄褐色、有斑点、吃肉、有毛发。系统的正向推理过程:先从规则库中取出第一条规则 R1,检查其前提是否可与事实库中的已知事实相匹配,R1 的前提是“有毛发”,与已知事实相匹配,故规则 R1 被执行,并将其结论“哺乳类”作为新的事实加入到事实库中。此时,事实库的内容变为:黄褐色、有斑点、吃肉、有毛发、哺乳类。此后,规则 R2 ~ R4 均匹配失败,接着取规则 R5,该前提“吃肉、哺乳类”与已知事实相匹配,故规则 R5 被执行,并将其结论“食肉类”作为新的事实加入到事实库中。此时,事实库的内容变为:黄褐色、有斑点、吃肉、有毛发、哺乳类、食肉类。此后,规则 R6 ~ R9 均匹配失败,接着取规则 R10,该前提“黄褐色、有斑点、食肉类”与已知事实相匹配,故规则 R10 被执行,并推出“识别结果为:金钱豹”。由于“金钱豹”已是目标集合中的一个结论,即已推出最终结果,故问题求解过程结束。
正向推理过程的运行界面:
系统主界面中的“选择动物特征”板块显示规则库中的所有事实,“已选特征”板块显示用户选择或输入的事实:
通过点击系统主界面上的“初始规则库”按钮可查看系统初始规则库,也可通过点击主界面上的“添加规则”与“删除规则”按钮进入对应的界面,进行添加规则与删除规则操作:
下图为添加规则界面,用户需按照界面中的文字提示输入正确格式的产生式规则,即“特征1 特征2 特征3 ... ,结论”。
下图为删除规则界面,点击左侧的规则前件进行删除时,右侧的规则后件会同步被删除;同理,点击右侧的规则后件进行删除时,左侧的规则前件会同步被删除。值得注意的是,删除规则操作执行后,对应的数据文件中的相关信息也会被删除。
通过查阅资料与 Python 学习,我成功设计并编程了一个简单的动物类型产生式推理系统,此系统可以识别金钱豹、虎、斑马、长颈鹿、信天翁、鸵鸟、企鹅等 7 种动物,上述问题的求解过程是一个不断地从规则库中选择可用规则与综合数据库中的已知事实进行匹配的过程。经过此次实验,我对人工智能的产生式系统有了进一步的认识,特别是对正向推理和反向推理有了更深的了解。
通过 Qt Designer 可视化设计 UI 界面并生成 .ui 的文件,再使用 Pycharm 自行配置的 External Tools 中的 PyUIC 将其转换为 .py 文件。
这篇文章只是动物类型产生式推理系统的实验报告,如果大家需要相关的源代码文件,可以去下面这个链接下载:
产生式推理系统实验代码(Python)https://download.csdn.net/download/nanzhou520/88677430值得注意的是,这个动物类型产生式推理系统肯定是不完美的,大家可以在我的基础上完善各种功能,也可以美化页面布局。最初在设计系统时,我先是参考了网上已有的系统代码,可以 显示动物图片 的那种,我个人觉得还是挺美观的,把图贴在下面啦!但是设计到后面,我的重心放在了功能实现上,所以就没有去搞图片,大家如果有兴趣的话,可以考虑把图片加进来~ 除此之外,也可以考虑把规则存入 数据库 进行调用,还可以 新增修改规则 、查询规则 等功能,反正可操作空间还是蛮大的,但我这个拿去交差应该可以了 (* ̄3 ̄)╭