简单动物识别系统的知识表示实验报告

一、 实验目的:

1、 2、

理解和掌握产生式知识表示方法。

能够用选定的编程语言实现产生式系统的规则库。

二、 实验内容和要求:

1、以动物识别系统的产生式规则为例。

2、用选定的编程语言建造规则库和综合数据库,并能对它们进行增加、删除和修改操作。

三、 实验步骤:

1、确定需要识别的动物及其属性:

本次实验的简单动物识别系统总共能识别7种动物,即:老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁。 2、建立识别七种动物识别系统的规则:

由于实验要求系统的规则库和综合数据库能够进行增加、删除和修改操作,因此可以采取逐步添加条件,压缩范围的方法进行识别,即:先跟据一些动物的共性进行大致分类,然后在添加约束条件,将范围缩小,直到能够识别出每一种不同的动物为止。这样,我们在需要添加识别其他动物的功能时,只需要添加那些动物的个性方面的信息即可,这样也可以简化系统的结构和内容。识别老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟、信天翁这7种动物的简单动物识别系统规则一共可以写成以下15条:

Rule1:IF 该动物有毛发 THEN 该动物是哺乳动物

Rule2:IF 该动物有奶 THEN 该动物是哺乳动物 Rule3:IF 该动物有羽毛 THEN 该动物是鸟

Rule4:IF 该动物会飞 AND 会下蛋 THEN该动物是鸟 Rule5:IF 该动物吃肉 THEN 该动物是肉食动物

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

Rule7:IF 该动物是哺乳动物 AND 有蹄 THEN 该动物是有蹄类动物 Rule8:IF 该动物是哺乳动物 AND 是嚼反刍动物 THEN 该动物是有蹄类动物

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

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

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

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

Rule13:IF 该动物是鸟 AND 有长脖子 AND 有长腿 AND不会飞 THEN 该动物是鸵鸟

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

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

三、 选定编程语言并确定综合数据库和规则库结构:

(1) 选用C语言作为编程语言 (2) 综合数据库的建立: 用C程序写出综合数据库的代码:

char*str{\有毛发\有奶\有羽毛\有犬齿\有暗斑点\有黑色条纹\有蹄\有长脖子\有长腿\有爪\有黑白两色\是黄褐色\会游泳\会下蛋\会飞\善飞\不会飞\眼盯前方\吃肉\哺乳动物\嚼反刍动物\肉食动物\有蹄类动物\鸟\老虎\金钱豹\斑马\长颈鹿\企鹅\鸵鸟\信天翁\

(3) 规则库的建立:

为了简化数据结构,将综合数据库中的事实全部用序号来表示,共有31个事实,编号依次为1到31。规则库中得到的结论也用序号表示,则所有的结论序号可以组成一个结论编号数组{31,30,29,28,27,26,25,24,24,23,23,22,22,20,20,0}。对于我们要识别的动物,我们将其所具备的事实条件也放在一个数组里,例如我们要识别长颈鹿,按照Rule11:IF 该动物是有蹄类动物 AND 有长脖子 AND 有长腿 AND 身上有暗斑点 THEN 该动物是有长颈鹿,其条件可表示为{5,10,8,7},当事实7成立,则询问使用者下一个事实8,依此类推,当7、8、10、5这四个事实全部成立时,则查找结论编号数组中的“24”便可根据规则11识别出此动物是长颈鹿。 用C程序写出规则库的代码:

Int rulep[][6]={{16,24,0,0,0,0},{17,9,8,24,0,0},{11,17,13, 24,0,0},{5,10,8,7,0,0},{6,23,0,0,0,0},{5,12,22,20,0,0},{6,12,22,20,0,0},{3,0,0,0,0,0},{14,15,0,0,0,0},{7,20,0,0,0,0},{21,20,0,0,0,0},{19,0,0,0,0,0},{18,10,4,0,0,0},{1,0,0,0,0,0},{2,0,0,0,0,0},0};

Int rulec[]={31,30,29,28,27,26,25,24,24,23,23,22,22,20,20,0 };

四、程序源代码:

#include #include #include #include #define True 1 #define False 0

char*str{\有毛发\有奶\有羽毛\有犬齿\有暗斑点\有黑色条纹\有蹄\有长脖子\有长腿\有爪\有黑白两色\是黄褐色\会游泳\会下蛋\会飞\善飞\不会飞\眼盯前方\吃肉\哺乳动物\嚼反刍动物\肉食动物\有蹄类动物\鸟\老虎\金钱豹\斑马\长颈鹿\企鹅\鸵鸟\信天翁\

Int rulep[][6]={{16,24,0,0,0,0},{17,9,8,24,0,0},{11,17,13, 24,0,0},{5,10,8,7,0,0},{6,23,0,0,0,0},{5,12,22,20,0,0},{6,1

2,22,20,0,0},{3,0,0,0,0,0},{14,15,0,0,0,0},{7,20,0,0,0,0},{21,20,0,0,0,0},{19,0,0,0,0,0},{18,10,4,0,0,0},{1,0,0,0,0,0},{2,0,0,0,0,0},0};

Int rulec[]={31,30,29,28,27,26,25,24,24,23,23,22,22,20,20,0 };

五、实验小结:

通过此次动物识别系统知识表示实验,让自己对于动物识别系统及产生式知识表示方法又有了进一步的了解和掌握,通过实践对已学过的知识进行巩固,并不断发现自己学习过程中存在的漏洞,让自己不断改正与进步。

c语言产生式系统动物识别系统,简单动物识别系统的知识表示实验报告相关推荐

  1. 动物识别系统c语言编程,人工智能期末论文-简单动物识别系统的知识表示.doc

    简单动物识别系统的知识表示 摘要:动物识别系统是人工智能领域中基础也是非常具有代表性的一个智能系统智能系统最基本的组成部分即知识系统成为了研究热点.本文首先介绍知识系统的基本及作用,以动物识别系统的式 ...

  2. %6f 在c语言中的作用,最简单的C程序设计 1.实验目的 ①掌握C语言中使用最多的一种语..._考试资料网...

    最简单的C程序设计 1.实验目的 ①掌握C语言中使用最多的一种语句--赋值语句的使用方法. ②掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符. 2.实验内容和步骤 掌握各种格式转换符的正确 ...

  3. c语言去除图像斑点,武汉理工-图像检测与处理技术-实验报告.doc

    学生学号 0121304940834实验课成绩学 生 实 验 报 告 书 实验课程名称图像检测与处理技术开 课 学 院机电工程学院指导教师姓名刘清元学 生 姓 名李勇学生专业班级测控1304 2015 ...

  4. c语言贪心算法找零问题,贪心算法-找零问题-实验报告

    <贪心算法-找零问题-实验报告>由会员分享,可在线阅读,更多相关<贪心算法-找零问题-实验报告(7页珍藏版)>请在人人文库网上搜索. 1.实验三 课程名称:算法设计与实现 实验 ...

  5. java 一元稀疏多项式简单计算器,一元稀疏多项式计算器实验报告

    一元稀疏多项式计算器实验报告 课程名称:数据结构 实验名称: 一元稀疏多项式计算器 学 院:钱学森学院 实 验 日 期 2020年 05 月 08日 诚信承诺:我保证本实验报告中的程序和本实验报告是我 ...

  6. python tensorflow验证码识别_Tensorflow简单验证码识别应用

    简单的Tensorflow验证码识别应用,供大家参考,具体内容如下 1.Tensorflow的安装方式简单,在此就不赘述了. 2.训练集训练集以及测试及如下(纯手工打造,所以数量不多): 3.实现代码 ...

  7. 如何进行ocr表格识别?简单的识别方法来啦

    如何进行ocr表格识别?在日常的工作和生活中,我们会在表格上登记许多信息,这些表格大都是手写记录的.年底或月底的时候,我们需要对其进行分析总结,这个时候我们最好是将其扫描识别成电子版的表格.那么问题来 ...

  8. C语言 自动排课系统课程设计(附源码,实验报告)

    学校教务的管理作为高校教育信息化工作中的一项重要工作,如何构建一个具有开放性.实用性和灵活性的平台,是一个值得探讨的课题.其中,作为学校教务重点环节之一的排课系统也尤为重要.以前,在统筹安排各班级上课 ...

  9. 基于Struct的云和租房系统(简单房屋出租)

    基于Struct的云和租房系统(简单房屋出租) 系统采用javaBean实现ORM对象关系映射,前台纯JSP实现,后台struct映射,适合刚学习J2EE的新手,代码思路清晰,注解详细,数据库用的是m ...

最新文章

  1. Docker Swarm 用compose部署WordPress
  2. jira以及jira API简单介绍
  3. win32下安装mingw32和cmake来编译opencv2.4.9
  4. 快做这 15点,让 SpringBoot 启动更快一点!
  5. 点击按钮测试用例标题_功能测试有哪些用例?分享功能测试用例大全
  6. 记一次MyBatis的错误
  7. 宣布在日本地区正式发布 Windows Azure
  8. python tablewidget 颜色_QT中,QTableView鼠标移动到item上时该item所在行的背景颜色变成其他颜色,这要怎么实现...
  9. oracle 启动_oracle实验--通过gdb工具研究数据库启动过程
  10. Laravel Blade 模板用法
  11. EfficientFormer | 苹果手机实时推理的Transformer模型,登顶轻量化Backbone之巅
  12. vuex mutaton与actions的区别
  13. 魔兽世界自建服务器,魔兽世界怀旧服
  14. iPhone8 和 iPhoneX 买哪个?听我的
  15. AD20 输出制板文件小记
  16. R语言之管道符的使用和学习
  17. ACL中的permit/deny与traffic policy中behavior的permit/deny之间是什么关系?
  18. Flink + 强化学习搭建实时推荐系统
  19. ABP中IdentityServer4的Secret生成
  20. 什么是java的关键字_java中常见的关键字

热门文章

  1. 古有陈天华万字血书抗沙俄,今有本剧蒻万字背包虐dp(01,完全,多重,分组,混合等各种背包详解 + 板子题+ 奇奇怪怪滴变式题)
  2. 获取json文件中的URL
  3. 如何使用TPTP中的IDatapool
  4. 按键精灵通过句柄获取窗口坐标_按键精灵怎么获取同名窗口的句柄
  5. 机电信息杂志机电信息杂志社机电信息编辑部2022年第24期目录
  6. php7反序列化问题,PHP7:反序列化漏洞案例及分析
  7. python 生成pdf 文字和图片_Python系列—PDF文本与图片抽取
  8. 计算机控制器及其设计实现
  9. 商务领航的网关问题解决
  10. Hack The Box - Access Writeup