人工智能产生式系统实验报告资料文档格式.docx

上传人:b****4 文档编号:16495257 上传时间:2022-11-24 格式:DOCX 页数:18 大小:105.92KB
下载 相关 举报
人工智能产生式系统实验报告资料文档格式.docx_第1页
第1页 / 共18页
人工智能产生式系统实验报告资料文档格式.docx_第2页
第2页 / 共18页
人工智能产生式系统实验报告资料文档格式.docx_第3页
第3页 / 共18页
人工智能产生式系统实验报告资料文档格式.docx_第4页
第4页 / 共18页
人工智能产生式系统实验报告资料文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

人工智能产生式系统实验报告资料文档格式.docx

《人工智能产生式系统实验报告资料文档格式.docx》由会员分享,可在线阅读,更多相关《人工智能产生式系统实验报告资料文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

人工智能产生式系统实验报告资料文档格式.docx

建立静态规则库

即建立产生式规则,本算法采用了产生中间事实的方法,便于建立和使用规则。

为了便于设计,我们把要识别的动物限于7种,这样所需要的产生式规则就比较少。

本算法共有15种规则,如下:

R1:

如果动物有奶,则它是哺乳动物

R2:

如果动物有毛发,则它是哺乳动物

R3:

如果动物有羽毛,则它是鸟

R4:

如果动物会飞且生蛋,则它是鸟

R5:

吃肉的哺乳动物是食肉动物

R6:

有爪有犬齿木钉前方的哺乳动物是食肉动物

R7:

有蹄的哺乳动物是有蹄动物

R8:

反刍食物的有蹄动物是偶蹄动物

R9:

黄褐色有黑条纹的食肉动物是老虎

R10:

黄褐色有黑色斑点的食肉动物是金钱豹

R11:

长腿长脖子有黄褐色暗斑点的有蹄动物是长颈鹿

R12:

有黑白条纹的有蹄动物是斑马

R13:

不会飞长腿长脖的鸟是鸵鸟

R14:

不会飞会游泳黑白色的鸟是企鹅

R15:

善飞不怕风浪的鸟是海燕

具体表示如下:

1->

24

2->

3->

25

4*5->

6*7*8*24->

26

9*24->

10*24->

27

11*27->

28

12*13*24->

30

12*14*24->

31

12*15*16*17*27->

32

13*18*27->

33

15*16*19*25->

34

19*20*21*25->

35

22*23*25->

29

正向推理过程

从已知事实出发,通过规则库求得结论,或称数据驱动方式。

推理过程是:

Ø

规则集中的规则前件与事实库中的事实进行匹配,得匹配的规则集合。

从匹配规则集合中选择一条规则作为使用规则。

执行使用规则的后件,将该使用规则的后件送入事实库中。

重复这个过程直至达到目标。

如有多条匹配规则需从中选一条作为使用规则,本算法是根据规则的顺序依次选择,且规则中不存在同一组事实对应多条匹配规则。

实验流程图

实验结果及分析

如输入如下事实:

有羽毛、善飞、不怕风浪。

系统的推理过程如下:

先从规则库中取出第一条规则R1,检查其前提是否可与事实库中的已知事实相匹配。

R1的前提是“有奶”,但事实库中无此事实,故匹配失败;

然后取R2,匹配失败;

接着取R3,该前提与已知事实“有羽毛”相匹配,故R3被执行,并将其结论“鸟”作为新的事实加入到事实库中。

此时,事实库的内容变为:

有羽毛、善飞、不怕风浪、鸟;

此后,R4~R14均匹配失败,接着取R15,该前提“善飞+不怕风浪+鸟”与已知事实相匹配,R15被执行,并推出“该动物是海燕”。

由于“海燕”已是目标集合中的一个结论,即已推出最终结果,故问题求解过程结束。

下面是程序运行的结果:

【实验程序】

#include<

stdio.h>

#defineN23

voidmain()

{

inti,j,k,a,b,c;

intnum;

intfact[N],temp[N];

intflag=1;

while(flag==1)

{

printf("

动物的特征如下:

\n"

);

1有奶2有毛发3有羽毛4会飞5生蛋\n6有爪7有犬齿8目盯前方9吃肉10有蹄\n11反刍食物12黄褐色13黑色条纹14黑色斑点15长腿\n16长脖子17暗斑点18白色19不会飞20黑白色\n21会游泳22善飞23不怕风浪\n"

请输入描述该动物特征的个数:

"

scanf("

%d"

&

num);

请输入对这只动物的特征描述的序号(按序号由小到大):

for(i=0;

i<

num;

i++)

scanf("

a);

fact[i]=a;

}

//********************************for(i=0;

if(fact[i]==1)

{

fact[num]=24;

num++;

printf("

使用规则1,新增加的事实为:

哺乳动物\n"

break;

}

if(fact[i]==2)

使用规则2,新增加的事实为:

if(fact[i]==3)

fact[num]=25;

使用规则3,新增加的事实为:

鸟\n"

//********************************k=0;

if(fact[i]==4)

temp[k]=fact[i];

k++;

continue;

if(fact[i]==5)

if(temp[0]==4&

&

temp[1]==5)

fact[num]=25;

num++;

printf("

使用规则4,新增加的事实为:

if(fact[i]==6)

if(fact[i]==7)

if(fact[i]==8)

if(fact[i]==24)

if(temp[0]==6&

temp[1]==7&

temp[2]==8&

temp[3]==24)

fact[num]=26;

使用规则5,新增加的事实为:

食肉动物\n"

if(fact[i]==9)

if(temp[0]==9&

temp[1]==24)

使用规则6,新增加的事实为:

if(fact[i]==10)

if(temp[0]==10&

fact[num]=27;

使用规则7,新增加的事实为:

有蹄动物\n"

if(fact[i]==11)

if(fact[i]==27)

if(temp[0]==11&

temp[1]==27)

fact[num]=28;

使用规则8,新增加的事实为:

偶蹄动物\n"

if(fact[i]==12)

if(fact[i]==13)

if(temp[0]==12&

temp[1]==13&

temp[2]==24)

fact[num]=30;

//num++;

使用规则9,新增加的事实为:

老虎\n该动物为老虎\n"

if(fact[i]==14)

temp[1]==14&

fact[num]=31;

使用规则10,新增加的事实为:

金钱豹\n该动物为金钱豹\n"

if(fact[i]==15)

if(fact[i]==16)

if(fact[i]==17)

temp[1]==15&

temp[2]==16&

temp[3]==17&

temp[4]==27)

fact[num]=32;

使用规则11,新增加的事实为:

长颈鹿\n该动物为长颈鹿\n"

if(fact[i]==18)

if(temp[0]==13&

temp[1]==18&

temp[2]==27)

fact[num]=33;

使用规则12,新增加的事实为:

斑马\n该动物为斑马\n"

if(fact[i]==19)

if(fact[i]==25)

if(temp[0]==15&

temp[1]==16&

temp[2]==19&

temp[3]==25)

fact[num]=34;

使用规则13,新增加的事实为:

鸵鸟\n该动物为鸵鸟\n"

if(fact[i]==20)

if(fact[i]==21)

if(temp[0]==19&

temp[1]==20&

temp[2]==21&

fact[num]=35;

使用规则14,新增加的事实为:

企鹅\n该动物为企鹅\n"

if(fact[i]==22)

if(fact[i]==23)

if(temp[0]==22&

temp[1]==23&

temp[2]==25)

fact[num]=29;

使用规则15,新增加的事实为:

海燕\n该动物为海燕\n"

//********************************if(fact[num]<

29)

现有事实无法推断出结果!

继续请按1,退出按其它数字键:

c);

if(c==1)

flag=c;

elsebreak;

}

【小结或讨论】

本系统的规则库是静态的,不能动态增加新的规则。

这使得在规则变化的情况下不能及时改变,但是该系统已经能基本满足需要,对输入的事实能给出相应的回答,判断出是何种动物。

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

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1