产生式系统实验报告.docx

上传人:b****3 文档编号:4318498 上传时间:2023-05-07 格式:DOCX 页数:12 大小:1.14MB
下载 相关 举报
产生式系统实验报告.docx_第1页
第1页 / 共12页
产生式系统实验报告.docx_第2页
第2页 / 共12页
产生式系统实验报告.docx_第3页
第3页 / 共12页
产生式系统实验报告.docx_第4页
第4页 / 共12页
产生式系统实验报告.docx_第5页
第5页 / 共12页
产生式系统实验报告.docx_第6页
第6页 / 共12页
产生式系统实验报告.docx_第7页
第7页 / 共12页
产生式系统实验报告.docx_第8页
第8页 / 共12页
产生式系统实验报告.docx_第9页
第9页 / 共12页
产生式系统实验报告.docx_第10页
第10页 / 共12页
产生式系统实验报告.docx_第11页
第11页 / 共12页
产生式系统实验报告.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

产生式系统实验报告.docx

《产生式系统实验报告.docx》由会员分享,可在线阅读,更多相关《产生式系统实验报告.docx(12页珍藏版)》请在冰点文库上搜索。

产生式系统实验报告.docx

产生式系统实验报告

学生实验报告

实验课名称:

人工智能

实验项目名称:

动物识别系统

专业名称:

计算机科学与技术

班级:

2012240201

学号:

201224020102

学生姓名:

张璐

教师姓名:

陈亮亮

2014年12月13日

 

实验日期:

2014年12月4日实验室名称:

明远2202

一.实验名称:

动物识别系统

2.实验目的与要求:

利用产生式规则构建一个简单的专家系统

1、确定推理方法(正向还是反向),并根据问题设计实现一个简单的不通用推理机(匹配、冲突消解)

2、规则库要求至少包含15条规则

3、初始事实可以任意给定,输入初始事实后能够得到推理结果

4、设计人机界面,解释模块提供查询规则的功能

5、可以不考虑知识库管理模块

6、提交实验报告

7、报告中要有推理树

3.实验内容:

产生式系统是由一组规则组成的、能够协同作用的推理系统。

其模型是设计各种智能专家系统的基础.产生式系统主要由规则库、综合数据库和推理机三大部分组成。

本实验环境主要提供一个能够实现模拟产

生式专家系统的验证、设计和开发的可视化操作平台。

学生既能用本系统提供的范例进行演示或验证性实验,也能够用它来设计并调试自己的实验模型。

产生式系统用来描述若干个不同的以一个基本概念为基础的系统,这个基本概念就是产生式规则或产生式条件和操作对。

在产生式系统中,论域的知识分为两部分:

用事实表示静态知识;用产生式规则表示推理过程和行为。

自己建造产生式系统(包括规则库和事实库),然后进行推理,即可以自己输入任何的规则和事实,并基于这种规则和事实进行推理。

这为学生亲手建造产生式系统并进行推理提供了一种有效的实验环境。

4.算法描述:

1、定义变量,包括变量名和变量的值。

2、建立规则库,其方法是,(a)输入规则的条件:

每条规则至少有一个条件和一个结论,选择变量名,输入条件(符号);选择变量值,按确定按钮就完成了一条条件的输入。

重复操作,可输入多条条件;(b)输入规则的结论:

输入完规则的条件后,就可以输入规则的结论了,每条规则

必须也只能有一个结论。

选择变量名,输入条件(符号),选择变量值,按确定按钮就完成了一个结论的输入。

重复以上两步,完成整个规则库的建立。

3、建立事实库(总数据库):

建立过程同步骤2。

重复操作,可输入多条事实。

4、然后按“确定”按钮即可。

此外,利用实例演示,可以运行系统默认的产生式系统,并且可以进行正反向推理。

五.源程序:

主要函数代码如下:

intCAnimalDlg:

:

inference(void)

{

intn=2;

intti;

inti,j;

inttres;

for(i=0;i<15;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==-1)//ti==-1代表规则满足

{

tres=rule[i].name;

flag[tres]=1;

j=0;

while(rule[i].relation[j]!

=-1)

{

j++;

}

if(feature[tres]=="这是企鹅哦"||feature[tres]=="这是信天翁哦"||feature[tres]=="这是鸵鸟哦"||feature[tres]=="这是斑马哦"||feature[tres]=="这是长颈鹿哦"||feature[tres]=="这是虎哦"||feature[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;i<24;i++)

{

flag[i]=0;

}

}

voidCAnimalDlg:

:

OnBnClickedButton1()

{

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(IDC_CHECK1)->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_CHECK11)->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},//规则13

{{21,17,18,16,-1},24}};//规则14

intflag[23]={0};//标记各个特征是否选择

6.运行结果与分析:

推理树:

 

运行截图:

7.实验中遇到的问题、解决方法及体会:

1.对人工智能的产生式系统有了进一步的认识,特别是对正向推理和反向推理有更深的了解。

2.本次实验是单独完成的,通过查找资料,最终圆满的完成了实验。

这次实验充分培养了我独立解决问题的能力。

3.实验的关键是对正向推理算法的掌握和对数据库的设计,由于前期我们花了比较多的时间进行算法的理解和数据库的设计,大量查找资料,因此最终我们能更快更好的完成了实验。

4.通过这次实验,使我熟悉了mfc。

5.该系统还有许多不尽如人意的地方,因此有待进一步改进。

总的来说,这次实验我收益颇多,通过这个独立完成的小型项目,培养了我软件开发设计的能力,熟悉了软件开发的过程步骤,为以后我进行软件开发奠定了基础。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2