(人工智能专家系统实验.doc
文本预览下载声明
河南城建学院
《》实验报告实验名称:__成绩:专业班级:?学? 081411202 ? 姓名:??
实?验?日?期 :??年?月?? 日一、实验目的二、实验
三、实验步骤
(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)按“开始”或“单步”按钮即可。
此外,利用实例演示,可以运行系统默认的产生式系统,并且可以进行正反向推理。其他的可参见其帮助文件。
源代码
#includeiostream
#includeiomanip
using namespace std;
char *animal[]={企鹅,海燕,鸵鸟,斑马,长颈鹿,虎,金钱豹};
char *feature[]={有毛,产奶,有羽毛,会飞,会下蛋,吃肉,有犬齿,有爪,眼睛盯前方,有蹄,反刍,黄褐色,有斑点,
//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
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},
{{
显示全部