文章目录

  • 一、前言
  • 二、实验环境(GUI)
  • 三、项目内容(需求)
    • (一)、问题
      • 1 动物分类规则集
      • 2 问题描述
      • 3 规则库扩充 (选做)
    • (二)要求
  • 四、成果展示
    • 1、完整代码及可执行文件
    • 2、功能说明
    • 3、项目目录结构
    • 4、界面展示

一、前言

  • 项目名称:动物识别产生式系统
  • 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、界面展示

  • ·主窗口
  • 动物识别
  • 添加规则
  • 删除规则
  • 查询数据库
  • 扩充数据库
  • 使用扩充的规则进行识别

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

  1. c语言产生式系统动物识别系统,简单动物识别系统的知识表示实验报告

    简单动物识别系统的知识表示实验报告 一. 实验目的: 1. 2. 理解和掌握产生式知识表示方法. 能够用选定的编程语言实现产生式系统的规则库. 二. 实验内容和要求: 1.以动物识别系统的产生式规则为 ...

  2. 人工智能实验-动物识别系统

    ** 实验一:产生式系统实验 ** 一.实验目的: 熟悉一阶谓词逻辑和产生式表示法,掌握产生式系统的运行机制,以及基于规则推理的基本方法. 二.实验内容: 设计并编程实现一个小型产生式系统(如分类.诊 ...

  3. java动物识别_java编写的专家系统(人工智能)动物识别

    import java.awt.*; //包含用于建立用户界面和绘制图形图像的全部类 import java.awt.event.*;   //提供处理由 AWT 组件所激发的各种事件的接口和类人工智 ...

  4. 人工智能导论-动物识别专家系统

    动物识别专家系统实验 这个人工智能导论实验可算是折磨了我许久,关键是我一直想不明白该如何推理. 在某天的晚上,我去对象那里上晚自习,突然灵感大开.由于电脑没有电了,我就手绘了一个系统结构图,并且想到了 ...

  5. 【AI】基于产生式规则的动物识别系统

    产生式系统 --动物识别系统 一.实验目的 二.实验原理 三.算法设计 四.系统代码设计 一.实验目的 [实验内容] 开发一个可以识别虎.金钱豹.斑马.长颈鹿.企鹅.鸵鸟.信天翁等7种动物的产生式系统 ...

  6. 合理使用百度开放平台(一)---动物识别

    动物识别 这里写目录标题 动物识别 创建项目 百度AI开放平台申请应用 获取 Access Token 发送请求 第一步先上传图片文件 压缩图片 图片转base64,去头,编码 提交数据处理数据 测试 ...

  7. 基于产生式系统的小型专家系统--动物识别

    一.产生式系统 产生式系统简介 产生式系统是指一组产生式相互配合,协同作用,以求得问题的解.产生式系统一般由3个基本部分组成,分别为规则库.综合数据库和推理机. 规则库又称之为知识库,是某领域知识用规 ...

  8. 动物识别——人工智能

    实验三 产生式系统推理 一.实验目的 本实验课程是计算机.智能.物联网等专业学生的一门专业课程,通过实验,帮助学生更好地掌握人工智能相关概念.技术.原理.应用等:通过实验提高学生编写实验报告.总结实验 ...

  9. 基于CNN算法自定义模型的动物识别项目1

    基于CNN算法自定义模型的动物识别项目1 资源文件 一.数据集介绍 二.开发步骤 1.引入库 2.定义模型 3.定义优化器 4.训练数据增强 5.测试数据归一化 6.数据生成 7.查看类别定义 8.训 ...

  10. 动物识别系统-tensorflow项目

    介绍 动物识别项目,基于tensorflow,使用Xception网络构建模型,进行迭代训练,实现对鸡马猫狗识别.机器学习,人工智能,深度学习项目. 通过对4000张数据集图片进行训练生成训练模型,使 ...

最新文章

  1. 关于事件相关电位SSVEP应用于视频游戏的研究
  2. 大学生能从计算机游戏中受益,2017年6月英语四级作文练习:大学生玩游戏
  3. sql backup database备份d盘_Oracle RMAN备份与恢复
  4. 神仙打架:PG 和 MySQL 到底哪个更好用?
  5. logback指定不同包下的日志输出到不同的文件
  6. npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! taoism@1.0.0 dev: `webpack-dev-server --inline --
  7. YbtOJ 状压DP问题课堂过关 例1 种植方案【状压DP】
  8. ML-Agents案例之金字塔
  9. 什么叫机械硬盘_企业级机械硬盘和普通机械硬盘有什么区别
  10. 深入分析用 Manimgl 绘制参数方程的图像
  11. 设计理财产品推荐系统场景
  12. 2020最新Android开发中高级进阶书籍推荐
  13. 主板上的北桥芯片和南桥芯片的作用和区别详解
  14. LeetCode知识点总结 - 844
  15. mac 安装homebrew 报错 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refu
  16. 我国地理信息产业现状与问题,如何利用“黑蚁数据工坊”提高地理信息服务水平。
  17. 解决Python pip下载安装过慢问题
  18. PDF迅捷转换器html网址,如何把PDF转换成HTML?迅捷PDF转换器
  19. 计算机专业投cssci,经管类CSSCI投稿经验与审稿时间 5
  20. 如何给图片更改格式?jpg转webp怎么操作?

热门文章

  1. Icode编程>>>图形化编程>>>1级训练场>>>重复执行练习【1】
  2. 居民小区变配电电力监控系统-安科瑞苏月婷
  3. war包的解压与打包
  4. 4.1 51单片机-定时器使用
  5. Fences 2.1 - 高效实用的桌面图标栅栏分类管理软件神器 (桌面图标再多也不会乱)
  6. 产品必会的30个Axure使用技巧
  7. 车用总线技术 | 从另一种视角了解CAN FD
  8. windows下无npcap驱动导致golang获取网卡失败问题
  9. 智能家居控制系统完整设计方案
  10. python数学实验与建模pdf_Python数学实验与建模(4)