




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、暨南大学本科实验报告专用纸课程名称人工智能与专家系统成绩评定0实验项目名称动物识别系统设计指导教师0实验项目编号实验项目类型综合型 0实验地点 南校区 学生姓名学号0学院 信息科学技术学院系计算机科学系专业0实验时间 2017 年 12 月日-年月日 温度湿度(一)实验目的通过建立动物识别产生式系统, 理解并体会知识库与控制系统相互独立的智能产生式系统与一般程序的区别。(二)实验要求1. 系统的设计和完成可以使用各种编程语言和实用工具, 不采用人工智能语言和工具,这样能够使你更加了解专家系统。2. 推荐使用语言: C、java 、php、javascript 、delphi 。也可以使用其他语
2、言。3 如果使用数据库做后台,要求使用最简单的Access。4. 系统可以使用图形界面,简单的也可以使用字符界面,不要求。(三) 设计并完成知识库本课程设计的主旨是设计并实现具有 15 条规则能自动识别 7 种动物的产生式系统。知识库与控制系统相互独立, 系统完成后除了能识别已有的 7 种动物外,按产生式知识表示方法向知识库中添加、 修改新的知识后, 系统能在不修改控制系统程序的情况下仍然能正确识别。1. 综合数据库中数据结构说明;产生式通过满足前件, 得到后件的结论或者执行后件的相应动作, 即后件由前件来触发。 同时,一个产生式生成的结论可以作为另一个产生式的前提或精品文档语言变量使用,进一
3、步可构成产生式系统。因此在通过有关特征识别动物的特征中规定:识别动物的前件(即动物的特征):0: 有毛发1:有奶2:有羽毛3:会飞4: 会生蛋5:吃肉6:有锋利牙齿 7:有爪8: 眼向前方9:有蹄10:反刍11:黄褐色皮毛12: 有暗斑点13:有黑色条纹 14:长脖子15:长腿16: 不会飞17:会游泳18:黑白二色19:善飞产生的中间结果(即动物的类别):20: 哺乳动物 21. 鸟 22. 食肉动物 23. 有蹄类动物最终结论:24. 虎 25. 豹 26. 斑马 27. 长颈鹿 28. 企鹅 29. 鸵鸟 30. 信天翁于是在综合数据库中,将设定 int 型数组 facts30 ,数组的
4、编号对应着以上事实的编号,数组的值为 1 时,意味着对应编号的事实为真,否则为假。2. 规则的格式的数据结构说明;每条规则都拥有前件与后件,建立规则的数据结构时将前件与后件定义即可。前件往往有一个或多个, 而后件只有一个。为了方便采用序号代替前后件,因此定义前件为数组 int condition6 ;定义后件 int outcome; 规则的数据结构也随之敲定。typedef struct /存放规则的结构体 , 由条件和结果构成皆用序号 int型表示int condition6;/条件int outcome;/结论Rule;将 15 条规则转化为符号:0,20,/有毛发哺乳动物1,20,/有
5、奶哺乳动物2,21,/有羽毛鸟3,4,21,/会飞 &会生蛋 鸟5,22,/吃肉食肉动物。2欢迎下载精品文档6,7,8,22,/有锋利牙齿 &有爪 &眼向前方食肉动物20,8,23,/哺乳动物 &有蹄有蹄类动物20,9,23,/哺乳动物 &反刍有蹄类动物20,22,11,12,25,/哺乳动物 &食肉动物 &有黄褐色皮毛 &有暗斑点豹20,22,11,13,24,/哺乳动物 &食肉动物 &有黄褐色皮毛 &有黑色条纹虎23,14,15,12,27,/有蹄类动物 &长脖子 &长腿 &有暗斑点长颈鹿23,13,26,/有蹄类动物 &有黑色条纹斑马21,16,14,15,18,29,/鸟 &不会飞 &
6、长脖子 &长腿 &黑白两色鸵鸟21,16,17,18,28,/鸟 &不会飞 &会游泳 &黑白两色企鹅21,19,24;/鸟 &善飞信天翁3. 推理机(包括正向和反向推理)过程。在上述规则的基础上,可以利用推理机对给出条件进行推理:(1) 正向推理:从下向上进行推理。 在建立规则库时需要使子规则在父规则前。 在进行正向推理是只要将规则库从前到后遍历下来看是否能由给定规则推出相应结果即可。通过判断每次与规则匹配得到的结果, 如果结果不是动物,则更新事实库,将此次结果作为前件匹配下一个规则。 若有多条规则可用,则使用冲突消解策略, 选取一条规则执行。 直到最终结果是动物时, 视为推理成功。具体步骤如
7、下:a.输入得到当前事实facts,针对 15 条 rules轮流筛查可用规则。b. 将 rules 所需的前件提取出来与 facts 中的事实进行比对。若有多条规则可用时, 冲突消解的方法是: 选取规则表 rules 中顺序最前的规则。找到可用规则。扩充 facts ,重复 b 步骤。c. 在无可扩充时,检查 facts ,若其中没有结果是动物,则推理失。3欢迎下载精品文档败;若其中推理出超过两个动物时,仍记为推理失败。 在只有一个结果是动物时,则推理成功。(2) 反向推理:反向推理的思路是从事实库的动物开始从前向后进行匹配,如果所有动物都不能推出为识别失败,若能推出其中一个, 则识别成功。
8、 若有多条规则可用,则从中选出一条规则,将规则的前件添加到综合数据库。具体步骤如下:a. 假设有动物 m,若其已经在 facts 中,则假设成立搜索终止。b. 若该假设动物不在 facts 中,则从 rules 中所有后件中含有该动物 m的规则组成表。若该表为空,则询问用户 fact 的真假,若为真,则将 fact 添加到 facts ,搜索中止。c. 若该表不为空,则逐个判断表内规则是否有规则的全部前件都包含在 facts 中,如果有,则证明假设可以直接被推出。识别成功。d. 如果不能直接推出, 则重新进行步骤 b,直至满足步骤 c。这时,我们认为假设可以被间接推出, 识别成功。否则若没有可
9、用规则, 则识别失败。(四)开发环境1. 工具: C-free 5.02. 语言: C+3.OS 平台说明: win10(五)综合数据库与推理机1.综合数据库char *animalBase = 0. 有毛发 ,1. 有奶 ,2. 有羽毛 ,3. 会飞 ,4. 会生蛋 ,5. 吃肉 ,6. 有锋利牙齿 ,7. 有爪 ,8. 眼向前方 ,9. 有蹄 ,10. 反刍 ,11. 有黄褐色皮毛 ,12. 有暗斑点,13. 有黑色条纹 ,14. 长脖子 ,15. 长腿 ,16. 不会飞 ,17. 会游泳 ,18. 黑白二色 ,19. 善飞 ,20. 哺乳动物 ,21.鸟 ,22.食肉动物 ,23.有蹄类
10、动物 ,24. 虎,25.豹,26.斑马 ,27.长颈鹿 ,28.企鹅 ,29.鸵鸟 ,30.信天翁 ;。4欢迎下载精品文档对应以上特征,设定整型数组存储求解过程中产生的各种信息,包括初始事实、推理得到的中间结论,以及最终结论。int facts30 = 0 ;/记录被选择的事实,初始化都为0,被选择后赋值为1对三种不同的信息进行区分的方法是利用序号区间进行区分。 0-19 序号部分是存放原始信息, 20-23 存放的是中间结论, 24-30 存放了最后的结论。2.推理机推理部分主要使用了两个函数,分别是deduce 函数和 animal 函数。Deduce函数是用于根据原始信息,进行规则的遍
11、历,不断正向推理的函数; animal 函数是利用 deduce 函数推理得出的facts数组,即综合数据库,进行结果的判断, 如果推理得出的结果唯一, 则返回推理成功的信息, 输出最终的结果,否则判定为推理失败。for (i = 0;i15;i+)/依次对 15 条规则进行检测j = 0;f = rulei.conditionj;while (f != -1) /推理是否满足第i 条规则if (factsf = 0)/ 第 i 条规则有一个条件不满足,即为不满足该条规则 break;/ 从此次 i 规则检验循环中跳出j+;f = rulei.conditionj;/取出 i 规则中所需的条件
12、序号if (f = -1)/若经过上一个循环有f=-1 ,则代表满足第i 条规则out1 = rulei.outcome;factsout1 = 1;/将得出的结论加入已知事实printf( 运用了规则 (%d) : , i);/ 并输出所用规则,以便查看 j = 0;while (rulei.conditionj != -1)cout animalBaserulei.conditionj ;/输出规则所用先决条件j+;cout animalBaseout1 endl;/输出规则所用结果上述就是 Deduce函数的主要内容,取出每一条规则的全部前件与事实库。5欢迎下载精品文档facts中进行比
13、对,若满足该规则,则该规则的后件将会被扩充到facts数组中,同时也文字输出,以便使用者确认运行过程中使用的规则。遍历完 15 条规则后, facts数组中就存放了推理得出的全部事实。接下来就将 facts数组传入 animal 函数,从综合数据库中遴选最终结论:int animal(int facts)/判断知识库中是否有符合描述的动物int i = 24, a = 0, b = 0;/判断有多少结果满足特定动物区间while (i = 30)if (factsi = 1)b = i;a+;i+;if (a = 1) return b;/恰巧有唯一动物满足给出条件时,返回该动物编号else
14、return 0;/否则返回 0,记为推理失败利用变量 a 累计最终结果的数目,如果 a=0,说明知识库中没有满足描述的动物;如果 a2,说明有多个动物满足描述条件,仍然不能确定最终结果。只有当 a=1 时,有唯一的动物符合描述, 这时推理成功, 返回该动物的编号并输出。(六)实验结果1. 输入 0 5 11 12 -1 (这里末尾输入 -1 代表结束输入)即输入有毛发、吃肉、有黄褐色皮毛、有暗斑点这四个特点,让系统进行推理。可得到唯一的结果:豹。6欢迎下载精品文档2. 输入 0 2 3 14 17 -1 即输入有毛发、有羽毛、会飞、长脖子、会游泳这五个特点交由程序进行推理。由于不存在这样的动
15、物,因此结果是:3. 输入 20 22 11 12 13 -1 即输入哺乳动物、食肉动物、有黄褐色皮毛、有暗斑点、有黑色条纹,根据这五个特点可以推导出两种动物:豹和虎。因此也无法推理出正确的结果。(七)实验体会通过本次实验我对于人工智能的产生式系统有了进一步的认识,对于正向推理、反向推理两种基本方式的原理和步骤都加深了理解。尤其是通过设计正向推理机,深切体会到了专家系统是根据知识和推理来求解问题的,这种模式与普通程序完全不同, 就像我平日里处理问题时, 是收集信息, 而后根据常识与知识得出自己的结论这样的模式,在写这次实验的过程中带来了很新奇的编程体验,让我受益匪浅。7欢迎下载精品文档(八)
16、源代码#include#includeusing namespace std;char *results = 虎 , 豹 , 斑马 , 长颈鹿 , 企鹅 , 鸵鸟 , 信天翁 ;char *animalBase = 0.有毛发 ,1.有奶 ,2.有羽毛 ,3.会飞 ,4.会生蛋 ,5.吃肉,6. 有锋利牙齿 ,7. 有爪 ,8. 眼向前方 ,9. 有蹄 ,10. 反刍 ,11. 有黄褐色皮毛,12.有暗斑点 ,13.有黑色条纹 ,14.长脖子 ,15.长腿 ,16.不会飞 ,17.会游泳,18.黑白二色 ,19.善飞 ,20. 哺乳动物 ,21.鸟 ,22.食肉动物 ,23.有蹄类动物 ,24
17、. 虎 ,25.豹 ,26.斑马 ,27.长颈鹿 ,28.企鹅 ,29.鸵鸟 ,30.信天翁 ;typedef struct /存放规则的结构体, 由条件和结果构成皆用序号 int型表示int condition6;/条件,末尾用 -1 表示结束int outcome;/结论Rule;Rule rule15 = /定义 15 个规则 0,-1 ,20 ,/有毛发哺乳动物 1,-1 ,20 ,/有奶哺乳动物 2,-1 ,21 ,/有羽毛鸟 3,4,-1 ,21 ,/会飞 &会生蛋鸟 5,-1 ,22 ,/吃肉食肉动物 6,7,8,-1 ,22 ,/有锋利牙齿 &有爪 &眼向前方食肉动物 20,8
18、,-1 ,23 ,/哺乳动物 &有蹄有蹄类动物 20,9,-1 ,23 ,/哺乳动物 &反刍有蹄类动物 20,22,11,12,-1 ,25 ,/哺乳动物 &食肉动物 &有黄褐色皮毛&有暗斑点豹 20,22,11,13,-1 ,24 ,/哺乳动物 &食肉动物 &有黄褐色皮毛&有黑色条纹虎 23,14,15,12,-1 ,27 ,/有蹄类动物 &长脖子 &长腿 &有暗斑点长颈鹿 23,13,-1 ,26 ,/有蹄类动物 &有黑色条纹斑马 21,16,14,15,18,-1 ,29 ,/鸟 &不会飞 &长脖子 &长腿 &黑白两色鸵鸟 21,16,17,18,-1 ,28 ,/鸟&不会飞 &会游泳
19、&黑白两色企鹅 21,19,-1 ,24 ;/鸟 &善飞信天翁int facts30 = 0 ;/记录被选择的事实,初始化都为0,被选择后赋值为1void list();/列出事实可供描述者选择void input();/描述者输入特征事实int deduce(); /推理机根据既得事实推理int animal(int facts);/判断知识库中是否有符合描述的动物void list()/列出事实可供描述者选择。8欢迎下载精品文档int i;for (i = 0;i = 30;i+)factsi = 0;for (i = 0;i24;i+)if (i % 4 = 0 & i != 0) co
20、ut endl;/每列出 4 个事实换行printf(%-15s, animalBasei); /列出前 24 个事实void input()/描述者输入特征事实int f = 0;/f用于接收描述者输入的特征编号cout f;if (f = 0 & f = 23)factsf = 1;/接收描述者输入的事实,并在flag数组将其赋值为1/其余未接收的事实仍为0else if (f != -1)cout error!请输入 023 之间的数字 ! endl;/因为这里接收的事实仅限 0-23 区间内cin.clear();cin.sync();int deduce()/推理机根据既得事实推理i
21、nt f;int i, j;int out1;cout endl;for (i = 0;i15;i+)/依次对 15 条规则进行检测j = 0;f = rulei.conditionj;while (f != -1) /推理是否满足第i 条规则。9欢迎下载精品文档if (factsf = 0)/ 第 i 条规则有一个条件不满足,即为不满足该条规则 break;/ 从此次 i 规则检验循环中跳出j+;f = rulei.conditionj;/取出 i 规则中所需的条件序号if (f = -1)/若经过上一个循环有f=-1 ,则代表满足第i 条规则out1 = rulei.outcome;factsout1 = 1;/将得出的结论加入已知事实printf(RULE(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 牡丹江市中医院急诊手术准备流程考核
- 2025年医疗、外科、牙科或兽医用家具项目合作计划书
- 赤峰市人民医院盆腔器官脱垂定量分期考核
- 大庆市中医院信息化系统操作熟练度考核
- 2025年学习教师队伍建设心得体会
- 2025年建筑施工技术大学考试题库及答案
- 阳泉市中医院激素补充治疗规范应用考核
- 部编版四年级上册语文25.《王戎不取道旁李》同步练习(含答案)
- 2025年管理学试题及答案
- 2025妇幼保健院影像学评估能力考核
- 夜夜的晚夕里梦见合唱简谱
- 糖尿病酮症酸中毒课件
- 压力性损伤安全警示教育
- 苏科版八年级物理下册10.4浮力 教学设计
- 《超高维数据分析》课程教学大纲
- 全国建材行业职工助推高质量发展主题竞赛考试题及答案
- 《有机化学》课程说课
- 建筑工程质量缺陷修复方案
- AQ 1083-2011 煤矿建设安全规范 (正式版)
- 创新创业基础-理论、案例与训练(大学生创新创业教育课程)全套教学课件
- 特纳综合征Turner临床、分子及诊断治疗
评论
0/150
提交评论