人工智能专家系统实验_人工智能专家系统实例

2020-02-28 其他范文 下载本文

人工智能专家系统实验由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“人工智能专家系统实例”。

河南城建学院

《 人工智能 》实验报告

实验名称:__实验四 名称实现一个基于产生式系统的小型专家系统(动物识别)成绩: 专业班级: 0814112 学号: 081411202 姓名: xxxxxxxxxxxx 实 验 日 期 : 2014 年 5 月 20 日

实验器材:VC6.0软件,多媒体计算机。

一、实验目的掌握产生式系统的运行机制和基于规则推理的基本方法。通过一个实例了解小型专家系统的结构、设计和实现过程,初步掌握专家系统的设计和实现方法。

二、实验要求

设计并实现一个某领域的小型专家系统(动物识别),该系统能对输入的询问回答分类或预测的结果,并根据推理过程回答“为什么”或“怎样得出该结论”的问题。

三、实验步骤

(1)定义变量,包括变量名和变量的值。(2)建立规则库,其方法是:(a)输入规则的条件:每条规则至少有一个条件和一个结论,选择变量名,输入条件(符号);选择变量值,按确定按钮就完成了一条条件的输入。重复操作,可输入多条条件;

(b)输入规则的结论:输入完规则的条件后,就可以输入规则的结论了,每条规则必须也只能有一个结论。选择变量名,输入条件(符号),选择变量值,按确定按钮就完成了一个结论的输入。重复以上两步,完成整个规则库的建立。

(3)建立事实库(总数据库):建立过程同步骤2。重复操作,可输入多条事实。

该动物识别专家系统由15条规则组成,可以识别七种动物,在15条规则中,共出现 30个概念(也称作事实),共30个事实,每个事实给一个编号,从编 号从1到30,在规则对象中我们不存储事实概念,只有该事实的编号,同样规则的结论也是事实概念的编号,事实与规则的数据以常量表示,其结构如下:

char *feature[]={“有毛”,“产奶”,“有羽毛”,“会飞”,“会下蛋”,“吃肉”,“有犬齿”,“有爪”,“眼睛盯前方”,“有蹄”,“反刍”,“黄褐色”,“有斑点”,“有黑色条纹”,“长脖”,“长腿”,“不会飞”,“会游泳”,“黑白两色”,“善飞”,“哺乳类”,“鸟类”,“肉食类”,“蹄类”,“企鹅”,“海燕”,“鸵鸟”,“斑马”,“长颈鹿”,“虎”,“金钱豹”};存放规则的结构体: typedef struct

{ int relation[5];

int name;}Rule;存放产生式规则推理过程的数组: Rule rule[15]={ {{0,-1},20}, {{1,-1},20}, {{2,-1},21}, {{3,4,-1},21}, {{20,5,-1},22}, {{6,7,8,-1},22}, {{20,8,-1},23}, {{20,9,-1},23}, {{22,11,12,-1},30}, {{22,11,13,-1},29}, {{23,14,15,12,-1},28}, {{23,13,-1},27},//如果动物是蹄类(23),且有黑色条纹(13),则该动物对应事实数组的第27个“斑马”

{{21,14,15,16,-1},26}, {{21,19,-1},25},//如果动物是鸟类(21),且是肉食类(19),则该动物对应事实数组的第25个“海燕”。

{{21,17,18,16,-1},24} };程序用编号序列的方式表达了产生式规则,如资料中规则14,如果动物是鸟,且是肉食类,则该动物对应事实数组的第二十五个“海燕”。如资料中规则12,如果动物是蹄类,且有黑色条纹,则该动物对应事实数组的第二十七个“斑马”。

(4)按“开始”或“单步”按钮即可。

此外,利用实例演示,可以运行系统默认的产生式系统,并且可以进行正反向推理。其他的可参见其帮助文件。

三、源代码

#include #include using namespace std;char *animal[]={“企鹅”,“海燕”,“鸵鸟”,“斑马”,“长颈鹿”,“虎”,“金钱豹”};char *feature[]={“有毛”,“产奶”,“有羽毛”,“会飞”,“会下蛋”,“吃肉”,“有犬齿”,“有爪”,“眼睛盯前方”,“有蹄”,“反刍”,“黄褐色”,“有斑点”,//0

“有黑色条纹”,“长脖”,“长腿”,“不会飞”,“会游泳”,“黑白两色”,“善飞”,“哺乳类”,“鸟类”,“肉食类”,“蹄类”,//13

“企鹅”,“海燕”,“鸵鸟”,“斑马”,“长颈鹿”,“虎”,“金钱豹”};

//24

29typedef struct //存放规则的结构体 { int relation[5];

int name;}Rule;Rule rule[15]={ {{0,-1},20}, {{1,-1},20}, {{2,-1},21}, {{3,4,-1},21}, {{20,5,-1},22}, {{6,7,8,-1},22}, {{20,8,-1},23}, {{20,9,-1},23}, {{22,11,12,-1},30}, {{22,11,13,-1},29}, {{23,14,15,12,-1},28}, {{23,13,-1},27}, {{21,14,15,16,-1},26}, {{21,19,-1},25}, {{21,17,18,16,-1},24}};int flag[23]={0};//标记各个特征是否选择 int IsAnimal(int a);int inference();void input();void menu();void menu(){ int i=0;

for(i=0;i

if(i%4==0&&i!=0)

{

cout

}

printf(“%-3d.%-15s”,i,feature[i]);

} } void input(){ int ti=0;for(int i=0;i

flag[i]=0;} while(ti!=-1){

cout

cin>> ti;

if(ti>=0&&ti

flag[ti]=1;

else if(ti!=-1)

{

cout

cin.clear();//清除流错误错误标

cin.sync();////////////清空输入缓冲区

} } } int IsAnimal(int a){ if(a>=24&&a

return 1;

else

return 0;} int inference()//正向推理 {

int ti;

int i,j;

int tres;

cout

for(i=0;i

{

j=0;

之间的数字!“

ti=rule[i].relation[j];

while(ti!=-1)//-1作为结束

{

if(flag[ti]==0)

break;

j++;

ti=rule[i].relation[j];

}

if(ti==-1)//ti==-1代表规则满足

{

tres=rule[i].name;

flag[tres]=1;

printf(”运用了规则%d : “,i);

j=0;

while(rule[i].relation[j]!=-1)

{

cout

j++;

}

cout ”

if(IsAnimal(tres))

{

return 1;

}

}

}

if(i==15)

{

cout

}

return-1;} void main(){

char q;

while(q!='n')

{

menu();

input();

inference();

cout

cin>>q;

system(“cls”);

} }

四、结果分析

1、若已知:动物是蹄类(23),且有黑色条纹(13),则结果:该动物对应事实数组的第27个“斑马”。使用了推理规则12,即:{{23,13,-1},27},使用规则运行结果如图1所示:

图12、若已知:动物是鸟类(21),且是肉食类(19),则结果该动物对应事实数组的第25个“海燕”。使用了推理规则14,即:{{21,19,-1},25},使用规则运行结果如图2所示:

图2

五、心得体会

本实验环境主要提供一个能够实现模拟产生式专家系统的验证、设计和开发的可视化操作平台。使用户既能用本系统提供的范例进行演示或验证性实验,也能够用它来设计并调试自己的实验模型。

通过这次实验,我对产生式系统有了更深刻的认识。产生式系统是由一组规则组成的、能够协同作用的推理系统。其模型是设计各种智能专家系统的基础.产生式系统主要由规则库、综合数据库和推理机三大部分组成。产生式系统用来描述若干个不同的以一个基本概念为基础的系统,这个基本概念就是产生式规则或产生式条件和操作对。在产生式系统中,论域的知识分为两部分:用事实表示静态知识;用产生式规则表示推理过程和行为。专家系统的规则是由专家定的,在该实验中,是由本人制定的。

教师评语:

教师签名:

《人工智能专家系统实验.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
人工智能专家系统实验
点击下载文档
相关专题 人工智能专家系统实例 人工智能 专家系统 人工智能专家系统实例 人工智能 专家系统
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文