产生式系统实验报告_第1页
产生式系统实验报告_第2页
产生式系统实验报告_第3页
产生式系统实验报告_第4页
产生式系统实验报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

学生实验报告实验课名称:人工智能实验项目名称:动物识别系统专业名称:计算机科学与技术班级:2012240201学号:201224020102学生姓名:张璐教师姓名:陈亮亮2014年12月13日实验日期:2014年_12_月_4_日 实验室名称: 明远2202—•实验名称:动物识别系统二•实验目的与要求:利用产生式规则构建一个简单的专家系统1、 确定推理方法(正向还是反向),并根据问题设计实现一个简单的不通用推理机(匹配、冲突消解)2、 规则库要求至少包含15条规则3、 初始事实可以任意给定,输入初始事实后能够得到推理结果4、 设计人机界面,解释模块提供查询规则的功能5、 可以不考虑知识库管理模块6、 提交实验报告7、 报告中要有推理树三•实验内容:产生式系统是由一组规则组成的、能够协同作用的推理系统。其模型是设计各种智能专家系统的基础.产生式系统主要由规则库、综合数据库和推理机三大部分组成。本实验环境主要提供一个能够实现模拟产生式专家系统的验证、设计和开发的可视化操作平台。学生既能用本系统提供的范例进行演示或验证性实验,也能够用它来设计并调试自己的实验模型。产生式系统用来描述若干个不同的以一个基本概念为基础的系统,这个基本概念就是产生式规则或产生式条件和操作对。在产生式系统中,论域的知识分为两部分:用事实表示静态知识;用产生式规则表示推理过程和行为。自己建造产生式系统(包括规则库和事实库),然后进行推理,即可以自己输入任何的规则和事实,并基于这种规则和事实进行推理。这为学生亲手建造产生式系统并进行推理提供了一种有效的实验环境。四•算法描述:1、 定义变量,包括变量名和变量的值。2、 建立规则库,其方法是,(a)输入规则的条件:每条规则至少有一个条件和一个结论,选择变量名,输入条件(符号);选择变量值,按确定按钮就完成了一条条件的输入。重复操作,可输入多条条件;(b)输入规则的结论:输入完规则的条件后,就可以输入规则的结论了,每条规则必须也只能有一个结论。选择变量名,输入条件(符号),选择变量值,按确定按钮就完成了一个结论的输入。重复以上两步,完成整个规则库的建立。3、 建立事实库(总数据库):建立过程同步骤2。重复操作,可输入多条事实。4、 然后按“确定”按钮即可。此外,利用实例演示,可以运行系统默认的产生式系统,并且可以进行正反向推理。五•源程序:主要函数代码如下:intCAnimalDlg::inference(void){intn=2;intti;inti,j;inttres;for(i=0;ivl5;i++){j=0;ti=rule[i].relation[j];while(ti!=-1)〃-1作为结束{if(flag[ti]==0)break;else{j++;ti=rule[i].relation[j];}}if(ti==-l)//ti==-l代表规则满足{tres=rule[i].name;flag[tres]=1;j=0;while(rule[i].relation[j]!=-1){j++;}if(feature[tres]=="这是企鹅哦"llfeature[tres]=="这是信天翁哦"llfeature[tres]=="这是鸵鸟哦"llfeature[tres]=="这是斑马哦"llfeature[tres]=="这是长颈鹿哦"llfeature[tres]=="这是虎哦"llfeature[tres]=="这是金钱豹哦"){n=1;UpdateData(true);m_print1=feature[tres];UpdateData(false);}else{n=0;}}}if(n==0){UpdateData(true);m_print1="这是什么动物?人家不知道啦";UpdateData(false);}return0;}voidCAnimalDlg::input(void){intti=0;for(inti=0;iv24;i++){flag[i]=0;}}voidCAnimalDlg::OnBnClickedButtonl(){inference();}voidCAnimalDlg::OnBnClickedButton2(){for(inti=0;i<24;i++){flag[i]=0;}((CButton*)GetDlgItem(IDC_CHECK1))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK2))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK3))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK4))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK5))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK6))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK7))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK8))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK9))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK10))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK11))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK12))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK13))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK14))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK15))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK16))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK17))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK19))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK20))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK21))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK22))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK23))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK24))->SetCheck(BST_UNCHECKED);((CButton*)GetDlgItem(IDC_CHECK25))->SetCheck(BST_UNCHECKED);GetDlgItem(IDCCHECK1)->EnableWindow(true);GetDlgItem(IDC_CHECK2)->EnableWindow(true);GetDlgItem(IDC_CHECK3)->EnableWindow(true);GetDlgItem(IDC_CHECK4)->EnableWindow(true);GetDlgItem(IDC_CHECK5)->EnableWindow(true);GetDlgItem(IDC_CHECK6)->EnableWindow(true);GetDlgItem(IDC_CHECK7)->EnableWindow(true);GetDlgItem(IDC_CHECK8)->EnableWindow(true);GetDlgItem(IDC_CHECK9)->EnableWindow(true);GetDlgItem(IDC_CHECK10)->EnableWindow(true);GetDlgItem(IDC_CHECKll)->EnableWindow(true);GetDlgItem(IDC_CHECK12)->EnableWindow(true);GetDlgItem(IDC_CHECK13)->EnableWindow(true);GetDlgItem(IDC_CHECK14)->EnableWindow(true);GetDlgItem(IDC_CHECK15)->EnableWindow(true);GetDlgItem(IDC_CHECK16)->EnableWindow(true);GetDlgItem(IDC_CHECK17)->EnableWindow(true);GetDlgItem(IDC_CHECK19)->EnableWindow(true);GetDlgItem(IDC_CHECK20)->EnableWindow(true);GetDlgItem(IDC_CHECK21)->EnableWindow(true);GetDlgItem(IDC_CHECK22)->EnableWindow(true);GetDlgItem(IDC_CHECK23)->EnableWindow(true);GetDlgItem(IDC_CHECK24)->EnableWindow(true);GetDlgItem(IDC_CHECK25)->EnableWindow(true);OnBnClickedButton1();}voidCAnimalDlg::OnEnChangeEdit1(){}voidCAnimalDlg::OnBnClickedButton3(){UpdateData(true);m_print2="若某动物产奶,则它是哺乳动物。\r\n若某动物有毛,则它是哺乳动物。\r\n若某动物有羽毛,则它是鸟。\r\n若某动物会飞且生蛋,则它是鸟。\r\n若某动物有爪且有犬齿且目盯前方,则它是食肉动物。\r\n若某动物吃肉,则它是食肉动物。\r\n若某动物是哺乳动物且有蹄,则它是有蹄动物。\r\n若某动物是哺乳动物且反刍食物,则它是有蹄类动物。\r\n若某动物是哺乳动物并且食肉动物且黄褐色且有黑色条纹,则它是老虎。\r\n若某动物是哺乳动物且食肉动物且黄褐色且有暗斑点,则它是金钱豹。\r\n若某动物是有蹄动物且长腿且长脖子且有暗斑点,则它是长颈鹿。\r\n若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。。r\n若某动物是鸟且不会飞且长腿且长脖子且有黑白两色,则它是驼鸟。\r\n若某动物是鸟且不会飞且会游泳且有黑白两色,则它是企鹅。\r\n若某动物是鸟且善飞,则它是信天翁。”;UpdateData(false);}voidCAnimalDlg::OnEnChangeEdit2(){}structRule//存放规则的结构体{intrelation[100];intname;};structRule//存放规则的结构体{intrelation[100];intname;};char*animal[]={"企鹅打海燕",”鸵鸟",”斑马",”长颈鹿",”虎",”金钱豹"};char*feature[]={"有毛打产奶",”有羽毛打会飞",”会下蛋",”吃肉",”有犬齿",”有爪",”眼睛盯前方","有蹄",”反刍",‘黄褐色",”有斑点","有黑色条纹","长脖",”长腿","不会飞","会游泳","黑白两色","善飞",”哺乳类",”鸟类",”肉食类",”蹄类",”这是企鹅哦",”这是信天翁哦","这是鸵鸟哦",”这是斑马哦",”这是长颈鹿哦",”这是虎哦",”这是金钱豹哦"};Rulerule[15]={{{0,-1},20},〃规则0{{1,-1},20},〃规则1{{2,-1},21},〃规则2{{3,4,-1},21},〃规则3{{5,-1},22},〃规则4{{6,7,8,-1},22},〃规则5{{20,8,-1},23},〃规则6{{20,10,-1},23},〃规则7{{22,11,12,-1},30},〃规则8{{22,11,13,-1},29},〃规则9{{23,14,15,12,-1},28},〃规则10{{23,18,-1},27},〃规则11{{21,14,15,16,18,-1},26},〃规则12{{21,19,-1},25},〃规则1

温馨提示

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

评论

0/150

提交评论