人工智能与专家系统试验报告_第1页
人工智能与专家系统试验报告_第2页
人工智能与专家系统试验报告_第3页
人工智能与专家系统试验报告_第4页
人工智能与专家系统试验报告_第5页
免费预览已结束,剩余5页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、暨南大学本科实验报告专用纸课程名称人工智能与专家系统成绩评定0实验项目名称动物识别系统设计指导教师0实验项目编号实验项目类型综合型0实验地点南校区学生姓名学号0学院信息科学技术学院系计算机科学系专业0实验时间2017年12月日-年月日温度_C湿度(一)实验目的通过建立动物识别产生式系统,理解并体会知识库与控制系统相互独立的智能产生式系统与一般程序的区别。(二)实验要求1 .系统的设计和完成可以使用各种编程语言和实用工具,不采用人工智能语言和工具,这样能够使你更加了解专家系统。2 .推荐使用语言:C、java、php、javascript>delphi。也可以使用其他语言。3 如果使用数据

2、库做后台,要求使用最简单的Accesso4 .系统可以使用图形界面,简单的也可以使用字符界面,不要求。(三)设计并完成知识库本课程设计的主旨是设计并实现具有15条规则能自动识别7种动物的产生式系统。知识库与控制系统相互独立,系统完成后除了能识别已有的7种动物外,按产生式知识表示方法向知识库中添加、修改新的知识后,系统能在不修改控制系统程序的情况下仍然能正确识别。1 .综合数据库中数据结构说明;产生式通过满足前件,得到后件的结论或者执行后件的相应动作,即后件由前件来触发。同时,一个产生式生成的结论可以作为另一个产生式的前提或语言变量使用,进一步可构成产生式系统。因此在通过有关特征识别动物的特征中

3、规定:识别动物的前件(即动物的特征):0:有毛发1:有奶2:4:会生蛋5:吃肉6:8:眼向前方9:有蹄10:12:有暗斑点13:有黑色条纹有羽毛3:会飞有锋利牙齿7:有爪反刍11:黄褐色皮毛14:长脖子15:长腿16:不会飞17:会游泳18:黑白二色19:善飞产生的中间结果(即动物的类别)20:哺乳动物21.鸟22.食肉动物23.有蹄类动物最终结论:24.虎25.豹26.斑马27.长颈鹿28.企鹅29.鸵鸟30.信天翁于是在综合数据库中,将设定int型数组facts30,数组的编号对应着以上事实的编号,数组的值为1时,意味着对应编号的事实为真,否则为假。2 .规则的格式的数据结构说明;每条规则

4、都拥有前件与后件,建立规则的数据结构时将前件与后件定义即可。前件往往有一个或多个,而后件只有一个。为了方便采用序号代替前后件,因此定义前件为数组intcondition6;定义后件intoutcome;规则的数据结构也随之敲定。|typedefstruct/存放规则的结构体,由条件和结果构成皆用序号int型表示intcondition6;/条件intoutcome;/结论Rule;将15条规则转化为符号:0,20,/有毛发一哺乳动物1,20,/有奶一哺乳动物2,21,/有羽毛一鸟3,4,21,/会飞&会生蛋一鸟5,22,/吃肉一食肉动物6,7,8,22,/有锋利牙齿&有爪&am

5、p;眼向前方一食肉动物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,/鸟&不会飞&长脖子&长腿&黑白两色一鸵鸟21

6、,16,17,18,28,/鸟&不会飞&会游泳&黑白两色一企鹅21,19,24;/鸟&善飞一信天翁3 .推理机(包括正向和反向推理)过程。在上述规则的基础上,可以利用推理机对给出条件进行推理:(1)正向推理:从下向上进行推理。在建立规则库时需要使子规则在父规则前。在进行正向推理是只要将规则库从前到后遍历下来看是否能由给定规则推出相应结果即可。通过判断每次与规则匹配得到的结果,如果结果不是动物,则更新事实库,将此次结果作为前件匹配下一个规则。若有多条规则可用,则使用冲突消解策略,选取一条规则执行。直到最终结果是动物时,视为推理成功。具体步骤如下:a.输入得到当前事

7、实facts,针对15条rules轮流筛查可用规则。b.将rules所需的前件提取出来与facts中的事实进行比对。若有多条规则可用时,冲突消解的方法是:选取规则表rules中顺序最前的规则。找到可用规则。扩充facts,重复b步骤。c.在无可扩充时,检查facts,若其中没有结果是动物,则推理失败;若其中推理出超过两个动物时,仍记为推理失败。在只有一个结果是动物时,则推理成功。(2)反向推理:反向推理的思路是从事实库的动物开始从前向后进行匹配,如果所有动物都不能推出为识别失败,若能推出其中一个,则识别成功。若有多条规则可用,则从中选出一条规则,将规则的前件添加到综合数据库。具体步骤如下:a,

8、假设有动物m,若其已经在facts中,则假设成立搜索终止。b.若该假设动物不在facts中,则从rules中所有后件中含有该动物m的规则组成表。若该表为空,则询问用户fact的真假,若为真,则将fact添加到facts,搜索中止。c,若该表不为空,则逐个判断表内规则是否有规则的全部前件都包含在facts中,如果有,则证明假设可以直接被推出。识别成功。d,如果不能直接推出,则重新进行步骤b,直至满足步骤c。这时,我们认为假设可以被间接推出,识别成功。否则若没有可用规则,则识别失败。(四)开发环境1 .工具:C-free5.02 .语言:C+3 .OS平台说明:win10(五)综合数据库与推理机1

9、 .综合数据库char*animalBase="0.有毛发","1.有奶","2,有羽毛","3.会飞","4.会生蛋","5.吃肉","6.有锋利牙齿","7.有爪","8.眼向前方","9.有蹄","10.反刍","11.有黄褐色皮毛","12.有暗斑点","13.有黑色条纹","14.长脖子"

10、,"15,长腿","16.不会飞","17.会游泳",”18.黑白二色","19.善飞","20.哺乳动物","21.鸟","22.食肉动物","23,有蹄类动物","24.虎","25.豹","26,斑马","27.长颈鹿","28.企鹅","29,鸵鸟","30.信天翁");对应以上特

11、征,设定整型数组存储求解过程中产生的各种信息,包括初始事实、推理得到的中间结论,以及最终结论。intfacts30=0;/记录被选择的事实,初始化都为0,被选择后赋值为1对三种不同的信息进行区分的方法是利用序号区间进行区分。0-19序号部分是存放原始信息,20-23存放的是中间结论,24-30存放了最后的结论。2 .推理机推理部分主要使用了两个函数,分别是deduce函数和animal函数。Deduce函数是用于根据原始信息,进行规则的遍历,不断正向推理的函数;animal函数是利用deduce函数推理得出的facts数组,即综合数据库,进行结果的判断,如果推理得出的结果唯一,则返回推理成功的

12、信息,输出最终的结果,否则判定为推理失败。for(i=0;i<15;i+)/依次对15条规则进行检测3j=0;f=rulei.conditionj;while(f!=-1)/推理是否满足第i条规则if(factsf=0)/第i条规则有一个条件不满足,即为不满足该条规则break;/从此次i规则检验循环中跳出j+;f=rulei.conditionj;/取出i规则中所需的条件序号if(f=-1)/若经过上一个循环有f=-1,则代表满足第i条规则out1=rulei.outcome;factsout1=1;/将得出的结论加入已知事实printf("运用了规则(d):",i

13、);/并输出所用规则,以便查看j=0;while(rulei.conditionj!=-1)cout<<animalBaserulei.conditionj<<""输出规则所用先决条件j+;cout<<"=>"<<animalBaseout1<<endl;/输出规则所用结果上述就是Deduce函数的主要内容,取出每一条规则的全部前件与事实库facts中进行比对,若满足该规则,则该规则的后件将会被扩充到facts数组中,同时也文字输出,以便使用者确认运行过程中使用的规则。遍历完15条规则后,

14、facts数组中就存放了推理得出的全部事实。接下来就将facts数组传入animal函数,从综合数据库中遴选最终结论:intanimal(intfacts)/判断知识库中是否有符合描述的动物(inti=24,a=0,b=0;/判断有多少结果满足特定动物区间while(i<=30)(if(factsi=1)(b=i;a+;i+;if(a=1)returnb;/恰巧有唯一动物满足给出条件时,返回该动物编号elsereturn0;/否则返回0,记为推理失败利用变量a累计最终结果白数目,如果a=0,说明知识库中没有满足描述的动物;如果a>2,说明有多个动物满足描述条件,仍然不能确定最终结果

15、。只有当a=1时,有唯一的动物符合描述,这时推理成功,返回该动物的编号并输出。(六)实验结果1.输入051112-1(这里末尾输入-1代表结束输入)即输入有毛发、吃肉、有黄褐色皮毛、有暗斑点这四个特点,让系统进行推理。可得到唯一的结果:豹3.会飞7.有爪11-有黄福色皮羌15.长腿19善飞23:看蹄类动物0.有空发。有羽毛4,会生蛋5,吃肉包有镶利牙齿也眼向前方9.有蹄1。一反刍12.有暗斑点13.有黑色条就14.长脖子时不会飞17.会游泳黑白二色20.哺乳动物21.鸟22.食肉动物请输入动物特征维号(-1结束):。51112TRULES):。.有毛发一一>20.哺乳动物RL1E(4):

16、5,吃肉>22.食肉动物RULE(8):20.哺乳动物22一食肉动物1L有黄褐色皮毛12有暗斑点>25物最终推理出您所描述的动物为:豹是否重新推理:(丫过2.输入0231417-1即输入有毛发、有羽毛、会飞、长脖子、会游泳这五个特点交由程序进行推理。由于不存在这样的动物,因此结果是:0.有毛发1.有奶2.有羽毛3.会飞4.会生蛋5.吃肉6.有锋利牙齿7.有爪S.眼何刖方9.有躇10.反刍11.有黄碣色皮毛12.有暗斑点13.有黑色条较14.衣喙子15.长腿16.而叁飞17.会游泳18.黑白二色19.善飞20.哺乳动物21.鸟22.食肉动物23.有腾类动物情输入动物特征编号CT结束)

17、:0231417TRULE(O):0.有毛发>20,哺乳动物RULE(2):Z有羽毛>21.4推理失败!没有完全符合条件的动物,是否重新推理:(YA)3.输入2022111213-1即输入哺乳动物、食肉动物、有黄褐色皮毛、有暗斑点、有黑色条纹,根据这五个特点可以推导出两种动物:豹和虎。因此也无法推理出正确的结果p.有毛发4一会生蛋8.眼向I前方12一有暗斑点16.不会飞20.哺乳动物5一吃肉9.有躇13.有黑色条St17.会游泳21.If睛输入动物特征编号结束);2.有羽毛6一有锋利牙齿10.反刍14-长脖子1民黑白二色2Z食肉动物202211123.会飞7.有爪11.有黄祕色皮毛

18、15.长腿19.善飞23.有牖类动物13-1RULE缶):加一哺乳动物四一食肉动物IL有黄褐色皮毛I工有暗斑点>25.豹RULE(9):20.哺乳动物22.食肉动物11.有黄褐色皮毛13.有黑色条纹>24.虎推理失败!没有完全符合条件的动物,是否重新推理:(Y/2(七)实验体会通过本次实验我对于人工智能的产生式系统有了进一步的认识,对于正向推理、反向推理两种基本方式的原理和步骤都加深了理解。尤其是通过设计正向推理机,深切体会到了专家系统是根据知识和推理来求解问题的,这种模式与普通程序完全不同,就像我平日里处理问题时,是收集信息,而后根据常识与知识得出自己的结论这样的模式,在写这次实

19、验的过程中带来了很新奇的编程体验,让我受益匪浅。(八)源代码#include<stdio.h>#include<iostream>usingnamespacestd;char*results="虎","豹","斑马","长颈鹿","企鹅","鸵鸟","信天翁"char*animalBase口="0.有毛发","1.有奶","2.有羽毛","3.会飞",&

20、quot;4.会生蛋","5.吃肉","6.有锋利牙齿","7.有爪","8.眼向前方","9.有蹄","10.反刍","11.有黄褐色皮毛","12.有暗斑点","13.有黑色条纹","14.长脖子","15.长月退","16.不会飞","17.会游泳",”18.黑白二色","19.善飞",&qu

21、ot;20.哺乳动物","21.鸟","22.食肉动物","23.有蹄类动物","24.虎","25.豹","26.斑马","27.长颈鹿","28.企鹅","29.鸵鸟","30.信天翁"typedefstruct/存放规则的结构体,由条件和结果构成皆用序号int型表示intcondition6;/条件,末尾用-1表示结束intoutcome;/结论Rule;Rulerule15=/定

22、义15个规则0,-1,20,1,-1,20,2,-1,21,3,4,-1,21,5,-1,22,/有毛发一哺乳动物/有奶一哺乳动物/有羽毛一鸟/会飞&会生蛋一鸟/吃肉一食肉动物6,7,8,-1,22,20,8,-1,23,20,9,-1,23,/有锋利牙齿&有爪&眼向前方一食肉动物/哺乳动物&有蹄一有蹄类动物/哺乳动物&反刍一有蹄类动物20,22,11,12,-1,25,20,22,11,13,-1,2423,14,15,12,-1,27,哺乳动物&食肉动物&有黄褐色皮毛&W暗斑点一豹,/哺乳动物&食肉动物&W黄褐

23、色皮毛&有黑色条纹一虎/有蹄类动物&长脖子&长月1&有暗斑点一长颈鹿23,13,-1,26,/有蹄类动物&有黑色条纹一斑马21,16,14,15,18,-1,29,21,16,17,18,-1,28,21,19,-1,24;intfacts30=0;/鸟&不会飞&长脖子&长腿&黑白两色一鸵鸟/鸟&不会飞&会游泳&黑白两色一企鹅/鸟研飞一信天翁/记录被选择的事实,初始化都为0,被选择后赋值为1voidlist();/列出事实可供描述者选择voidinput();/描述者输入特征事实intdeduce(

24、);/推理机根据既得事实推理intanimal(intfacts);/判断知识库中是否有符合描述的动物voidlist()/列出事实可供描述者选择inti;for(i=0;i<=30;i+)(factsi=0;)for(i=0;i<24;i+)(if(i%4=0&&i!=0)cout<<endl;/每列出4个事实换行printf("%-15s",animalBasei);列出前24个事实)voidinput()/描述者输入特征事实(intf=0;/f用于接收描述者输入的特征编号cout<<"n请输入动物特征编号(

25、-1结束):"while(f!=-1)/当f=-1时意味着输入结束(cin>>f;if(f>=0&&f<=23)factsf=1;/接收描述者输入的事实,并在flag数组将其赋值为1/其余未接收的事实仍为0elseif(f!=-1)(cout<<"error!请输入023之间的数字!"<<endl;/因为这里接收的事实仅限0-23区间内cin.clear();cin.sync();)intdeduce()/推理机根据既得事实推理(intf;inti,j;intout1;cout<<endl;for(i=0;i<15;i+)/依次对15条规则进行检测(j=0;f=rulei.conditionj;while(f!=-1)/推理是否满足第i条规则(if(factsf=0)/第i条规则有一个条件不满足,即为不满足该条规则break;/从此次i规则检验循环中跳出j+;f=rulei.conditionj;/取出i规则中所需的条件序号)if(f=-1)/若经过上一个循环有f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论