人工智能——产生式系统(动物识别产生式系统)项目开发

一、前言

  • 项目名称:动物识别产生式系统
  • Author: 浅若清风cyf
  • Date: 2020/11/20
  • 理论基础:人工智能——产生式系统推理

二、实验环境(GUI)

  • 本文采用Qt5.9框架实现
  • 编程工具:Qt Creator 4.3.0 Community
  • 编译工具:MinGW53

三、项目内容(需求)

(一)、问题

  • 以动物识别系统为例,用选定的编程语言建造规则库和综合数据库,开发能进行正确的正向推理或反向推理的推理机。

  • 正向推理过程:从已知事实出发,通过规则库求得结论,或称数据驱动方式。推理过程是:

    • 规则集中的规则前件与事实库中的事实进行匹配,得匹配的规则集合。
    • 从匹配规则集合中选择一条规则作为使用规则。
    • 执行使用规则的后件,将该使用规则的后件送入事实库中。
    • 重复这个过程直至达到目标。

1 动物分类规则集

(1)若某动物有奶,则它是哺乳动物。

(2)若某动物有毛发,则它是哺乳动物。

(3)若某动物有羽毛,则它是鸟。

(4)若某动物会飞且生蛋,则它是鸟。

(5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。

(6)若某动物是哺乳动物且吃肉,则它是食肉动物。

(7)若某动物是哺乳动物且有蹄,则它是有蹄动物。

(8)若某动物是有蹄动物且反刍食物,则它是偶蹄动物。

(9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。

(10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。

(11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。

(12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。

(13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。

(14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。

(15)若某动物是鸟且善飞且不怕风浪,则它是海燕。

下面是该规则集所形成的(部分)推理网络:
在这里插入图片描述

2 问题描述

由上述动物识别规则组成规则库,推理机采用正向推理算法或反向推理算法,实现对动物的查询。
如给出初始事实:
F1:某动物有毛发
F2:吃肉
F3:黄褐色
F4:有黑色条纹
目标条件为:该动物是什么?

3 规则库扩充 (选做)

在上述规则集(Ⅰ)基础上增加以下规则集(Ⅱ):
(1)兔子:有毛发,有奶,善跳跃,唇裂;
(2)猫:有毛发,有奶,善捕鼠,脚有肉垫;
(3)犀牛:有毛发,有奶,鼻子上有角,褐色,皮糙肉厚,有蹄;
(4)熊猫:有毛发,有奶,黑眼圈,四肢短小;
(5)鹦鹉:鸟类,上嘴鹰钩,会模仿人说话;
(6)鸭子:鸟类,腿短,嘴扁平,善潜水游泳;
(7)鹰:鸟类,上嘴鹰钩,有爪,吃肉;
(8)鸭子:有羽毛,卵生,善游泳,嘴扁平,腿短;
(9)鹅:有羽毛,卵生,善潜水游泳,白色或黑色,颈长,嘴大,腿长,颈部有肉只凸起;
(10)鸦:有羽毛,卵生,黑色,嘴大;
(11)鹰:有羽毛,卵生,有爪,吃肉,上嘴鹰钩;
(12)鹦鹉:有羽毛,卵生,上嘴鹰钩,能模仿人说话;
(13)青蛙:卵生,生活在水中,生活在陆地,有皮肤呼吸,用肺呼吸,皮肤光滑,吃昆虫,会变色;
(14)蝾螈:卵生,生活在水中,生活在陆地,有皮肤呼吸,用肺呼吸,吃昆虫,皮肤粗糙,四肢扁,背部黑色;
(15)蟾蜍:卵生,生活在水中,生活在陆地,有皮肤呼吸,用肺呼吸,吃昆虫,皮肤粗糙;
(16)比目鱼:用鳃呼吸,身体有鳍,生活在海洋中,身体扁平,两眼在头部同侧;
(17)鲫鱼:用鳃呼吸,身体有鳍,生活在淡水中,身体扁平,头高尾部窄;
(18)蛇:生活在陆地,用肺呼吸,胎生,身体有鳞或甲,身体圆而细长,吃小动物;
(19)壁虎:生活在陆地,用肺呼吸,胎生,身体有鳞或甲,有四肢,尾巴细长易断,吃昆虫;
(20)乌龟:生活在陆地,用肺呼吸,胎生,身体有鳞或甲,身体圆而扁,有坚硬的壳;
(21)玳瑁:生活在陆地,用肺呼吸,胎生,身体有鳞或甲,壳为黄褐色,皮肤光滑,有黑斑;
(22)鳄鱼:生活在陆地,用肺呼吸,胎生,身体有鳞或甲,有四肢,善游泳,皮硬黑褐色。

☆ 要求在动物分类规则集(Ⅰ)的基础上添加上述22条知识,共构成29种动物的知识库系统,对原有动物分类系统进行扩充和修改。

(二)要求

1、以产生式推理模式为基础,实现动物分类系统,推理方法采用正向推理或反向推理;
2、要求表示规则的语言必须能体现出规则前提和结论的对应关系,必须能体现出前提和结论中的逻辑关系;
3、要求能对规则库进行动态地增加、删除和修改操作(选做);
4、要求有用户交互,如界面等输入要查询的初始事实、推理方法、推理中用到的规则和结论。

四、成果展示

1、完整代码及可执行文件

github:AnimalRecognitionSystem_Qt5

2、功能说明

  • ①使用正向推理方法识别动物
  • ②能够显示推理过程使用的规则的逻辑关系
  • ③能对规则库动态增加、删除
  • ④能够在规则集(Ⅰ)基础上增加规则集(Ⅱ)
  • ⑤能够与用户交互,使用GUI直接选择事实进行识别,能够通过点击按钮并弹窗的方式查询事实库、规则库、类别库,能够通过点击按钮并弹窗的方式添加规则,能够通过直接点击规则项删除规则等功能。

3、项目目录结构

  • 添加规则窗口
  • 事实类:使用链表,可动态添加
  • 规则类:使用链表,可动态添加
  • 主类:与其他类和窗口进行信息交互
    在这里插入图片描述

4、界面展示

  • ·主窗口
    在这里插入图片描述
  • 动物识别
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
  • 添加规则
    在这里插入图片描述
  • 删除规则
    在这里插入图片描述
  • 查询数据库
    在这里插入图片描述
  • 扩充数据库
    在这里插入图片描述
  • 使用扩充的规则进行识别
    在这里插入图片描述
  • 9
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅若清风cyf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值