人工智能动物产生式报告解读.docx

上传人:b****7 文档编号:9034867 上传时间:2023-02-02 格式:DOCX 页数:14 大小:22.30KB
下载 相关 举报
人工智能动物产生式报告解读.docx_第1页
第1页 / 共14页
人工智能动物产生式报告解读.docx_第2页
第2页 / 共14页
人工智能动物产生式报告解读.docx_第3页
第3页 / 共14页
人工智能动物产生式报告解读.docx_第4页
第4页 / 共14页
人工智能动物产生式报告解读.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

人工智能动物产生式报告解读.docx

《人工智能动物产生式报告解读.docx》由会员分享,可在线阅读,更多相关《人工智能动物产生式报告解读.docx(14页珍藏版)》请在冰豆网上搜索。

人工智能动物产生式报告解读.docx

人工智能动物产生式报告解读

人工智能第三次实验报告

 

 

1.实验名称:

动物识别产生式系统

2.实验目的:

通过本实验让学生理解并体会知识的产生式表示以及推理策略,为以后设计并实现复杂的专家系统奠定基础。

3.实验内容:

知识表示为产生式知识表示方法,设计并实现具有15条规则能自动识别7种动物的产生式系统。

规则1:

如果:

动物有毛发

则:

该动物是哺乳动物

规则2:

如果:

动物有奶

则:

该动物是哺乳动物

规则3:

如果:

该动物有羽毛

则:

该动物是鸟

规则4:

如果:

动物会飞,且会下蛋

则:

该动物是鸟

规则5:

如果:

动物吃肉

则:

该动物是肉食动物

规则6:

如果:

动物有犬齿,且有爪,且眼盯前方

则:

该动物是食肉动物

规则7:

如果:

动物是哺乳动物,且有蹄

则:

该动物是有蹄动物

规则8:

如果:

动物是哺乳动物,且是反刍动物

则:

该动物是有蹄动物

规则9:

如果:

动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点

则:

该动物是豹

规则10:

如果:

动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹

则:

该动物是虎

规则11:

如果:

动物有暗斑点,且有长腿,且有长脖子,且是有蹄类

则:

该动物是长颈鹿

规则12:

如果:

动物有黑条纹,且是有蹄类动物

则:

该动物是斑马

规则13:

如果:

动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞

则:

该动物是鸵鸟

规则14:

如果:

动物是鸟,且不会飞,且会游泳,且是黑色的

则:

该动物是企鹅

规则15:

如果:

动物是鸟,且善飞

则:

该动物是信天翁

 

例如:

该系统输入:

有奶吃肉黑色条纹黄褐色系统输出:

是虎

4.实验代码

#include

#include

#include

#include

 

char*FacAndRes[]={"反刍","蹄类","哺乳类","眼向前方",

"有爪","犬齿","吃肉","会下蛋","会飞",

"有羽毛","有蹄","食肉动物","鸟类","能产奶",

"有毛发","善飞","黑白色条纹","会游泳",

"长腿","长脖子","黑条纹","黑斑点",

"黄褐色","信天翁","企鹅","驼鸟","斑马",

"长颈鹿","虎","豹",0};

intrulePilcine[][6]={{22,23,12,3,0,0},{21,23,12,3,0,0},{22,19,20,11,0,0},

{21,11,0,0,0,0},{17,19,20,13,-9,0},{17,18,13,-9,0,0},{16,13,0,0,0,0},

{15,0,0,0,0,0},{14,0,0,0,0,0},{10,0,0,0,0,0},{8,7,0,0,0,0},

{7,0,0,0,0,0},{4,5,6,0,0,0},{2,3,0,0,0,0},{1,3,0,0,0,0}};

intrc[]={30,29,28,27,26,25,24,3,3,13,13,12,12,11,11,0};//断言编号数组

classfact

{private:

intnumber;

charname[21];

intact;

intsuc;

public:

fact*next;

fact(intnum,char*L)

{

strcpy(name,L);

number=num;

act=0;

suc=-1;

next=NULL;

}

char*getName()

{

char*L;

L=newchar[21];

strcpy(L,name);

returnL;

}

intgetNumber()

{

returnnumber;

}

intgetAct()

{

returnact;

}

intgetSuc()

{

returnsuc;

}

voidputAct(constinttempAct,inttempSuc)

{

act=tempAct;

suc=tempSuc;

}

};

fact*f;

classList

{private:

intnumber;

public:

List*next;

List(intnum)

{

number=num;

next=NULL;

}

intgetNumber()

{

returnnumber;

}

};

classrule

{

char*name;

List*Pre;

intcon;

public:

rule*next;

rule(char*N,intP[],intC);

~rule();

intquery();

voidgetName()

{

cout<

}

};

rule:

:

~rule()

{

List*L;

while(Pre)

{

L=Pre->next;

deletePre;

Pre=L;

}

deletename;

}

rule:

:

rule(char*N,intP[],intC)

{

inti;

List*L;

Pre=NULL;

next=NULL;

name=newchar[strlen(N)+1];

strcpy(name,N);

i=0;

while(P[i]!

=0)

{

L=newList(P[i++]);

L->next=Pre;

Pre=L;

}

con=C;

}

intrule:

:

query()

{

charc;

intTag=0;

List*L;

fact*F;

F=f;

L=Pre;

if(L==NULL)

cout<<"\nError";

while(L!

=NULL)

{

F=f;

for(;;)

{

if(abs(L->getNumber())==F->getNumber())

break;

F=F->next;

}

if(L->getNumber()>0)

{

if((F->getSuc())==true){L=L->next;continue;}

if((F->getSuc())==false)returnfalse;

}

else

{

if((F->getSuc())==1)

return0;

if((F->getSuc())==0)

{

L=L->next;

continue;

}

}

cout<getName()<<"(Y/N)"<

c=getchar();

flushall();

if((c=='Y')||(c=='y'))

{

if(L->getNumber()>0)

F->putAct(1,1);

if(L->getNumber()<0)

{

F->putAct(1,1);

Tag=-1;

return0;

}

}

else

{

if(L->getNumber()<0)

F->putAct(-1,0);

else

{

F->putAct(-1,0);

Tag=-1;

return0;

}

}

L=L->next;

}

F=f;

for(;;)

{

if(con==F->getNumber())

break;

F=F->next;

}

if(con<24)

{

F->putAct(1,1);

return0;

}

if(Tag!

=-1)

{

F=f;

for(;;)

{

if(con==F->getNumber())

break;

F=F->next;

}

if(con<24)

{

F->putAct(1,1);

return0;

}

cout<<"\n这个动物是"<getName()<

return1;

}

return0;

}

intmain()

{

fact*F,*T;

rule*r1,*r2;

charch[8];

inti=1;

f=NULL;

while(FacAndRes[i-1])

{

F=newfact(i,FacAndRes[i-1]);

F->next=f;

f=F;

i++;

}

F=f;

f=NULL;

while(F)

{

T=F;

F=F->next;

T->next=f;

f=T;

}

i=0;

r1=NULL;

for(i=0;i<15;i++)

{

r2=newrule(ch,rulePilcine[i],rc[i]);

r2->next=r1;

r1=r2;

ch[5]++;

}

r2=r1;

for(;;)

{

i=r2->query();

if((i==1)||(i==-1))

break;

r2=r2->next;

if(!

r2)

break;

}

if(!

r2)

cout<<"没有这种动物."<

getchar();

return1;

}

5.实验结果:

6实验心得:

通过本次实验深刻体会到产生式推理的魅力,推理的过程已经基本了解和掌握,对代码的控制输出表达能力也有了很大的提高,流程的控制加深了我对逻辑控制的体会和强化。

本次算法还算比较简单,特别是数据结构的设计,在设计过程中用了空间换时间的方法,使算法过程十分简洁,运行效率也比较高,数据的冗余也得到很好控制,实验过程还有很多小问题以及在前期的数据库设计也存在很多事物,总之,算法的过程表达的不够清晰,系统的规则和数据的扩展性不好等等,还有就是规则库和事实库是静态,应该使用户动态输入,然后使用链表插入动态增加链表的规则,使其及时改变。

 

读书的好处

 

1、行万里路,读万卷书。

2、书山有路勤为径,学海无涯苦作舟。

3、读书破万卷,下笔如有神。

4、我所学到的任何有价值的知识都是由自学中得来的。

——达尔文

5、少壮不努力,老大徒悲伤。

6、黑发不知勤学早,白首方悔读书迟。

——颜真卿

7、宝剑锋从磨砺出,梅花香自苦寒来。

8、读书要三到:

心到、眼到、口到

9、玉不琢、不成器,人不学、不知义。

10、一日无书,百事荒废。

——陈寿

11、书是人类进步的阶梯。

12、一日不读口生,一日不写手生。

13、我扑在书上,就像饥饿的人扑在面包上。

——高尔基

14、书到用时方恨少、事非经过不知难。

——陆游

15、读一本好书,就如同和一个高尚的人在交谈——歌德

16、读一切好书,就是和许多高尚的人谈话。

——笛卡儿

17、学习永远不晚。

——高尔基

18、少而好学,如日出之阳;壮而好学,如日中之光;志而好学,如炳烛之光。

——刘向

19、学而不思则惘,思而不学则殆。

——孔子

20、读书给人以快乐、给人以光彩、给人以才干。

——培根

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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