--------------------- 本文来自 Robin_just 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/shaguabufadai/article/details/71699372?utm_source=copy

本实验仿照书中例题,用C++语言实现了一个简单的动物识别专家系统。该系统可以识别老虎、金钱豹、斑马、长颈鹿、鸵鸟、企鹅、信天翁这7种动物及根据一些特征识别部分物种。

知识库

在本系统当中,知识库中的知识用产生式规则来表示,共有如下15条规则。

R1 IF该动物有奶THEN该动物是哺乳动物

R2 IF该动物有毛发THEN该动物是哺乳动物

R3 IF该动物有羽毛THEN该动物是鸟

R4 IF该动物会飞AND会下蛋THEN该动物是鸟

R5 IF该动物有爪AND有犬齿AND眼盯前方THEN该动物是食肉动物

R6 IF该动物吃肉THEN该动物是肉食动物

R7 IF该动物是哺乳动物AND有蹄THEN该动物是有蹄类动物

R8 IF该动物是哺乳动物AND嚼反刍THEN该动物是有蹄类动物

R9 IF 该动物是哺乳动物 AND 该动物是食肉动物 AND 是黄褐色 AND身上有黑色条纹 THEN 该动物是虎

R10 IF该动物是哺乳动物 AND 该动物是食肉动物AND是黄褐色AND身上有暗斑点THEN该动物是金钱豹

R11 IF该动物是有蹄类动物AND有长脖子AND有长腿AND身上有暗斑点THEN该动物是长颈鹿

R12 IF该动物是有蹄类动物AND身上有黑色条纹THEN该动物是斑马

R13 IF该动物是鸟AND有不会飞AND有长腿AND长脖子AND是黑白二色THEN该动物是鸵鸟

R14 IF该动物是鸟AND不会飞AND会游泳AND是黑白二色THEN该动物是企鹅

R15 IF该动物是鸟AND善飞THEN该动物是信天翁

#include

#include

#include

using namespace std;

int RULENUM=15;//动物识别系统的规则库有条规则

int CAUSENUM=5;//各条规则中的前提条件最多有个

int count = 0;//记录所选择的动物特征的个数

/*事实*/

string fact[] ={ "", "有毛发", "有奶", "有羽毛", "会飞", "会下蛋", "吃肉", "有犬齿", "有爪","眼盯前方", "有蹄", "嚼反刍", "黄褐色", "身上有暗斑点", "身上有黑色条纹", "有长脖子","有长腿", "不会飞", "会游泳", "有黑白二色", "善飞", "哺乳动物", "鸟", "食肉动物", "蹄类动物", "金钱豹", "虎", "长颈鹿", "斑马", "鸵鸟", "企鹅", "信天翁" };

/*规则*/

int rule[][6]={{ 0, 0, 0, 0, 0, 0 },{21, 1, 0, 0, 0, 0 },{ 21, 2, 0, 0, 0, 0 }, { 22, 3, 0, 0, 0, 0 }, {22, 4, 5, 0, 0, 0 },{ 23, 6, 0, 0, 0, 0 }, { 23, 7, 8, 9, 0, 0 }, { 24, 21, 10, 0, 0, 0 }, { 24, 21, 11, 0, 0, 0 }, { 25, 21, 23, 12, 13, 0 }, { 26, 21, 23, 12, 14, 0 }, { 27, 24, 15, 16, 13, 0 }, { 28, 24, 14, 0, 0, 0 }, { 29, 22, 15, 16, 17, 19 }, { 30, 22, 18, 17, 19, 0 }, { 31, 22, 20, 0, 0, 0 } };

int conditionlist[24];//所选择的动物特征

bool match(int a); //函数声明

int inference();

int main()

{

cout<

for (int i=1;i<=24;i++)

{

cout<

cout<

if (i%4==0)

{

cout<

}

}

int a;

int k=0;

cout<

while((cin>>a)) //a为整形的,按任意字母可结束循环

{

conditionlist[k]=a;

k++;

count++;

}

cout<

inference();

return 0;

}

/*知识匹配*/

bool match(int a)

{

int i=1;

int j=0;

int flag=0;

int flag1=0;

int num=0;

while ((flag==i-1)&&(flag1!=count))

{

flag=0;

for (i=1;i<=CAUSENUM;i++)

{

if (rule[a+num][i]==0)

break;

for (j=0;j

{

if (rule[a+num][i]==conditionlist[j])//匹配上一个条件flag计数加一

{

flag++;

flag1++;

break;

}

}

}

num++;

}

if ((flag!=i-1)||(count==0))

{

return false;

}

else

{

for (i=0;i

{

for (j=0;j

{

if ((i!=j)&&(rule[a+i][0]!=rule[a+j][0]))

{

return false;

}

}

}

return true;

}

}

/*推理*/

int inference()

{

int i;

int j=0;

for (i=1; i<=RULENUM;i++)

{

if (match(i)==true)

{

cout<

return 0;

}

}

cout<

return 0;

}

---------------------

本文来自 Robin_just 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/shaguabufadai/article/details/71699372?utm_source=copy

动物识别专家系统c语言代码,动物识别专家系统(C++版)相关推荐

  1. 动物识别系统 c语言代码_C ++程序员避不开虚函数的,就像C语言程序员避不开指针一样...

    初学者刚接触C++语言中的 virtual 函数(虚函数)时,常常会感觉到迷惑,比如,书上说虚函数定义在基类中,其他继承此基类的派生类都可以重写该虚函数,因此虚函数是C++语言多态特性中非常重要的概念 ...

  2. 识别户口本易语言代码

    .版本 2 .子程序 __启动窗口_创建完毕 '添加并使用<精易模块> Send_API () .子程序 Send_API .局部变量 REQU_Data, 文本型, , , 提交字符串 ...

  3. 狼人杀c语言代码,1089 狼人杀-简单版——C/C++实现

    题目 1089 狼人杀-简单版 (20 point(s)) 以下文字摘自<灵机一动·好玩的数学>:"狼人杀"游戏分为狼人.好人两大阵营.在一局"狼人杀&quo ...

  4. 面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码)

    面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码) 目录 面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码) 1.面部表情识别方法 2.面部表情识别数据集 ...

  5. 情感识别:基于ELM、SOM分类器实现心率变异性信号情感识别,附matlab代码

    情感识别:基于ELM.SOM分类器实现心率变异性信号情感识别,附matlab代码 情感识别是一项有趣而又具有挑战性的任务.它可以用于识别人类的情绪状态,从而在许多领域中产生影响,例如医疗保健.人工智能 ...

  6. 面部表情识别3:Android实现表情识别(含源码,可实时检测)

    面部表情识别3:Android实现表情识别(含源码,可实时检测) 目录 面部表情识别3:Android实现表情识别(含源码,可实时检测) 1.面部表情识别方法 2.人脸检测方法 3.面部表情识别模型训 ...

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

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

  8. 人工智能实验:动物识别系统(C++代码实现)

    问题描述 建立一个动物识别系统的规则库,编写程序用以识别虎.豹.斑马.长颈鹿.企鹅.鸵鸟.信天翁等7种动物. 为了识别这些动物,可以根据动物识别的特征,建立包含下述规则库: R1:if 动物有毛发 t ...

  9. 教你3行Python代码,识别图片中的任意语言文字

    大家好 今天给大家介绍一个超级简单且强大的OCR文本识别工具:easyocr. 这个模块支持70多种语言的即用型OCR,包括中文,日文,韩文和泰文等.Python学习资料点击免费领取 下面是这个模块的 ...

最新文章

  1. laravel的composer require报错:Installation failed, reverting ./composer.json to its original content.
  2. easyui框架前后端交互_easyui前后端分离
  3. sublime text 食用笔记
  4. 5分钟了解阿里时序时空数据库
  5. 2013年新年礼物---CrossFPC 终于出来了
  6. POJ3067 Japan(归并排序)
  7. gcc生成的汇编和keil生成的汇编_Linux编译工具:gcc入门
  8. 使用大数据可视化平台有什么好处
  9. 《UNIX编程艺术》--读书笔记
  10. 2811路由器系统导入到服务器,配置CISCO2811路由器的E1连接
  11. 基于ThinkPHP6组件化开发框架
  12. H264 码率控制原理
  13. css实现实心三角箭头,兼容ie
  14. Revit二次开发_1.过滤器笔记篇
  15. 为什么rar密码不能被破解
  16. 用java web start来发布jbpm(三)
  17. 仿造百度换肤功能的实现
  18. Spring Boot保姆级入门,还不会过来胖我
  19. 开发如何选择。。。网银在线,快钱,支付宝,财付通
  20. 小学数学思维导图模板

热门文章

  1. 利用js写一个函数,实现翻转任意数组。 写一个函数,实现对数字数组的排序。
  2. 【吴刚】电商活动站设计初级入门标准视频教程-吴刚-专题视频课程
  3. 2017计算机信息类ei,2017年EI收录的中国期刊目录更新了!
  4. 微信内置浏览器导出Excel表格功能
  5. 滇池学院计算机基础,云南大学滇池学院网络服务系统 云南大学滇池学院
  6. JavaSE常用类练习
  7. 试题 算法训练 藏匿的刺客
  8. 文旅夜游——让城市夜晚更加绚烂多彩
  9. HTML英雄联盟 效果图代码结构 (多多指教,感谢)
  10. Hack The Box - Access Writeup