人工智能 课程实验 专家系统 程序源代码

人工智能 课程实验 专家系统 程序源代码
人工智能 课程实验 专家系统 程序源代码

游戏人物识别专家系统

——邢洪伟一试验题目

游戏人物识别专家系统

二、试验内容

游戏人物识别专家系统是流行的专家系统实验模型,主要基于暴风公司出品的经典角色类游戏《暗黑破坏神2》。它用产生式规则来表示知识,共15条规则、可以识别八种游戏人物,这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。游戏人物识别15条规则的中文表示是:

规则1:

如果:暴风公司出品的单机角色类游戏

则:该游戏是暗黑破坏神

规则2:

如果:暴风公司出品的单机对抗类游戏

则:该游戏是魔兽争霸

规则3:

如果:暴风公司出品的网络游戏

则:该游戏是魔兽世界

规则4:

如果:网易游戏出品的网络游戏

则:该游戏是梦幻西游

规则5:

如果:暗黑破坏神版本1

则:该游戏是暗黑破坏神1

规则6:

如果:是暗黑破坏神2

则:该游戏是暗黑破坏神2

规则7:

如果:是暗黑破坏神3

则:该游戏是暗黑破坏神3

规则8:

如果:暗黑破坏神版本2单手武器使用木棒的男性人物

则:该人物是德鲁伊

规则9:

如果:暗黑破坏神2单手武器使用手杖的男性人物

则:该人物是亡灵法师

规则10:

如果:暗黑破坏神版本2单手武器使用法杖的女性人物

则:该人物是巫师

规则11:

如果:暗黑破坏神版本2双手武器使用长剑和盾牌的男性人物

则:该人物是圣骑士

规则12:

如果:暗黑破坏神版本2单手武器使用斧头的男性人物

则:该人物是野蛮人

规则13:

如果:暗黑破坏神版本2单手武器使用爪子的男性人物

则:该人物是刺客

规则14:

如果:暗黑破坏神2单手武器使用长剑的女性人物

则:该人物是亚马逊

规则15:

如果:梦幻西游单手使用鞭子的女性人物

则:该人物是飞燕女

游戏人物识别专家系统由15条规则组成,可以识别八种动物,在15条规则中,共出现 37个概念(也称作事实),共37个事实,每个事实给一个编号,从编号从1到37,在规则对象中我们不存储事实概念,只有该事实的编号,同样规则的结论也是事实概念的编号,事实与规则的数据以常量表示,其结构如下:Char *str{}={"暴风公司出品 ","网易游戏出品","单机游戏","网络游戏", "角色类游戏","对抗类游戏","版本1","版本2","版本3","男性","女性", "暗黑破坏神","梦幻西游","暗黑破坏神1","暗黑破坏神2","暗黑破坏神3","单身武器","双手武器","使用木棒","是用手杖","使用法杖","使用长剑","使用盾牌","使用斧头","使用爪子","使用鞭子","巫师","德鲁伊","亡灵法师","法师","圣骑士","野蛮人","刺客","亚马逊","飞燕女","魔兽争霸","魔兽世界","\ 0"}

程序用编号序列的方式表达了产生式规则,如资料中规则15,如果动物是鸟,且善飞,则该动物是信天翁。相应的规则数组第八条是{26,17,13,11,0,0},第26个是“使用鞭子”,如果事实成立,询问使用者下一个事实,第17

个“单手武器”,如果也成立,询问使用者下一个事实,第13个是“梦幻西游”则,如果事实成立,询问使用者下一个事实,第11个是“女性”,如果事实成立,查找结论断言编号数组{28,29,30,31,32,33,34,35,14,15,16,1 3,12,36,37}中第八个“35”,这里35对应事实数组中的“飞燕女”。

上述就是程序的推理过程,也是程序中的重点,该部分是由规则类(类rul e)中的Query方法实现。

三、流程图及分析

主程序的流程主要是:1、实例化各个类

2、初始化事实集

3、初始化规则集

4、使用规则对事实进行推导

规则类:

规则名只是用来表示规则的一个名称,前提链由前提类生成的单链表,结论则是存放结论断言编号,表示由该规则的到的结论在事实数组中的编号。

事件类:

事实号和规则数据和结论断言数据的数字相对应。激活标志表示这个时候有没有被处理过。断言这保存推理后的结论,在重复查询这个事实条件时不用反复询问用户。

四、关键代码

int rule::Query()

{

int i;

char c;

int Tag=0;

list *L;

fact *F;

F=Fact;

L=Pre;

if(L==NULL)

cout<<"\nError";

while(L!=NUll)

{

F=Fact;

for(;;)

{

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

break;

F=F->Next; //查找与规则前提链中前提号相同的事实

}

if(L->GetNumber()>0)

{

if((F->GetSucc())==true) {L=L->Next;continue;}

if((F->GetSucc())==false) return false;

} //如果事实的断言为真则判断下一个前提,为假,则表示该规则不适合else

{

if((F->GetSucc())==true) return false;

if((F->GetSucc())==false) {L=L->Next;continue;} }

cout<GetName()<<"(Y/N)";

c=getchar(); //事实断言为不知道的时候,向用户询问

flushall();

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

{

if(L->GetNumber()>0)

F->PutAct(1,true); //设置事实的断言和激活标志if(L->GetNumber()<0)

{

F->PutAct(1,true);

Tag=-1;

return false;

}

}

else

{

if(L->GetNumber()<0)

F->PutAct(-1,false);

else

{

F->PutAct(-1,false);

Tag=-1;

return false;

}

}

L=L->Next;

}

F=Fact;

for(;;)

{

if(Conc==F->GetNumber()) break; //查找结论断言对应的事实

F=F->Next;

}

if(Conc<24)

{

F->PutAct(1,true);

return false;

}

if(Tag!=-1)

{

F=Fact;

for(;;)

{

if(Conc==F->GetNumber()) break;

F=F->Next;

}

if(Conc<24)

{

F->PutAct(1,true);

return false;

}

cout<<"\nThis animal is"<GetName();

return true;

}

return false;

};

五试验结论

通过这次试验和一些辅助书籍的阅读,加强了自己的阅读程序能力和编程的能力,而且游戏人物识别专家系统,它用产生式规则来表示知识,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则,运用到其它方面去。总之,这次试验让我受益匪浅。

附件:完整的源代码

#include

#include

#include

#include

#define True 1

#define False 0

#define DontKnow -1

Char *str{}={"暴风公司出品 ","网易游戏出品","单机游戏","网络游戏","角色类游戏","对抗类游戏","版本1","版本2","版本3","男性","女性", "暗黑破坏神","梦幻西游","暗黑破坏神1","暗黑破坏神2","暗黑破坏神3","单身武器","双手武器","使用木棒","是用手杖","使用法杖","使用长剑","使用盾牌","使用斧头","使用爪子","使用鞭子","巫师","德鲁伊","亡灵法师","法师","圣骑士","野蛮人","刺客","亚马逊","飞燕女","魔兽争霸","魔兽世界","\0"}

int rulep[][6]={{19,17,15,10,0,0},{20,17,15,10,0,0},{21,17,15,11,0,0},

{23,22,18,15,10,0},{24,17,15,11,0,0},{25,17,15,11,0,0},{22,17,15,11,0,0},

{26,17,13,11,0,0},{12,7,1,0,0,0},{12,8,1,0,0,0},{12,9,1,0,0,0},

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

int rulec[]={28,29,30,31,32,33,34,35,14,15,16,13,12,36,37};

class fact

{private:

int Number;

char Name[21];

int Active;

int Succ;

public:

fact *Next;

fact(int Num,char *L)

{

strcpy(Name,L);

Number=Num;

Active=False;

//-1是已经推理,不符合。1是已经推理,符合。

Succ=DontKnow; //0是无,-1是不知道,1是有。

Next=NULL;

}

char *GetName()

{

char *L;

L=new char[21];

strcpy(L,Name);

return L;

}

int GetNumber()

{

return Number;

}

int GetAct()

{

return Active;

}

int GetSucc()

{

return Succ;

}

void PutAct(const int Act0,int Suc0)

{

Active=Act0;

Succ=Suc0;

}

};

fact *Fact;

class list

{private:

int Number;

public:

list *Next;

list(int Num)

{

Number=Num;

Next=NULL;

}

int GetNumber()

{

return Number;

}

};

class rule

{

char *Name;

list *Pre;

int Conc;

public:

rule *Next;

rule(char *N,int P[],int C);

~rule();

int Query();

void GetName()

{

cout<

}

};

rule::~rule()

{

list *L;

while(Pre)

{

L=Pre->Next;

delete Pre;

Pre=L;

}

delete Name;

}

rule::rule(char *N,int P[],int C)

int i;

list *L;

Pre=NULL;

Next=NULL;

Name=new char[strlen(N)+1];

strcpy(Name,N);

i=0;

while(P[i]!=0)

{

L=new list(P[i++]);

L->Next=Pre;

Pre=L;

}

Conc=C;

}

int rule::Query()

{

char c;

int Tag=0;

list *L;

fact *F;

F=Fact;

L=Pre;

if(L==NULL)

cout<<"\nError";

while(L!=NULL)

{

F=Fact;

for(;;)

{

if(abs(L->GetNumber())==F->GetNumber()) break;

F=F->Next;

}

if(L->GetNumber()>0)

{

if((F->GetSucc())==True)

{

L=L->Next;

continue;

}

if((F->GetSucc())==False)

return False;

else

{

if((F->GetSucc())==True)

return False;

if((F->GetSucc())==False)

{

L=L->Next;

continue;

}

}

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

c=getchar();

flushall();

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

{

if(L->GetNumber()>0)

F->PutAct(1,True);

if(L->GetNumber()<0)

{

F->PutAct(1,True);

Tag=-1;

return False;

}

}

else

{

if(L->GetNumber()<0)

F->PutAct(-1,False);

else

{

F->PutAct(-1,False);

Tag=-1; //已经推理,不符合。 return False;

}

}

L=L->Next;

}

F=Fact;

for(;;)

{

if(Conc==F->GetNumber())

break;

F=F->Next;

if(Conc<24)

{

F->PutAct(1,True);

return False;

}

if(Tag!=-1)

{

F=Fact;

for(;;)

{

if(Conc==F->GetNumber())

break;

F=F->Next;

}

if(Conc<24)

{

F->PutAct(1,True);

return False;

}

cout<<"\nThis aniamal is "<GetName()<

return True;

}

return False;

}

int main()

{

fact *F,*T;

rule *Rule,*R;

char ch[8];

int i=1;

Fact=NULL;

while(str[i-1]) //初始化事实库,倒序排列。{

F=new fact(i,str[i-1]);

F->Next=Fact;

Fact=F;

i++;

}

F=Fact;

Fact=NULL;

while(F) //把倒序排列正过来。

{

T=F;

F=F->Next;

T->Next=Fact;

Fact=T;

}

i=0;

ch[0]='R';

ch[1]='U';

ch[2]='L';

ch[3]='E';

ch[4]='_';

ch[5]='a';

ch[6]='\0';

Rule=NULL;

for(i=0;i<15;i++) //初始化规则库。{

R=new rule(ch,rulep[i],rulec[i]);

R->Next=Rule;

Rule=R;

ch[5]++;

}

R=Rule;

for(;;)

{

i=R->Query();

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

break;

R=R->Next;

if(!R)

break;

}

if(!R)

cout<<"I don't know."<

cout<<"press any key to exit."<

return True;

}

人工智能小型动物分类专家系统的设计与实现PPT

小型动物分类专家系统的设计与实现 一、实验目的 通过本实验可使学生能够综合利用C语言(或C++)、面向对象程序设计、数据结构、数据库原理、人工智能、软件工程等课程的相关知识,设计并实现小型动物分类专家系统,培养学生综合运用所学计算机软件知识解决实际问题的能力,为今后从事计算机软件开发及应用打下基础。 二、实验内容 运用下列规则,设计并实现一个小型动物分类专家系统。 规则1: 如果:动物有毛发 则:该动物是哺乳动物 规则2: 如果:动物有奶 则:该单位是哺乳动物 规则3: 如果:该动物有羽毛 则:该动物是鸟 规则4: 如果:动物会飞,且会下蛋 则:该动物是鸟 规则5: 如果:动物吃肉 则:该动物是肉食动物 规则6: 如果:动物有犬齿,且有爪,且眼盯前方 则:该动物是食肉动物 规则7: 如果:动物是哺乳动物,且有蹄 则:该动物是有蹄动物 规则8: 如果:动物是哺乳动物,且是反刍动物 则:该动物是有蹄动物 规则9: 如果:动物是哺乳动物,且是食肉动物,且是黄褐色的,且有暗斑点 则:该动物是豹 规则10: 如果:如果:动物是黄褐色的,且是哺乳动物,且是食肉,且有黑条纹 则:该动物是虎

规则11: 如果:动物有暗斑点,且有长腿,且有长脖子,且是有蹄类 则:该动物是长颈鹿 规则12: 如果:动物有黑条纹,且是有蹄类动物 则:该动物是斑马 规则13: 如果:动物有长腿,且有长脖子,且是黑色的,且是鸟,且不会飞 则:该动物是鸵鸟 规则14: 如果:动物是鸟,且不会飞,且会游泳,且是黑色的 则:该动物是企鹅 规则15: 如果:动物是鸟,且善飞 则:该动物是信天翁 动物分类专家系统由15条规则组成,可以识别七种动物,在15条规则中,共出现 30个概念(也称作事实),共30个事实,每个事实给一个编号,从编号从1到30,在规则对象中我们不存储事实概念,只有该事实的编号,同样规则的结论也是事实概念的编号,事实与规则的数据以常量表示,其结构如下:Char *str{}={"chew_cud","hooves","mammal","forward_eyes","claws", "pointed_teeth","eat_meat","lay_eggs","fly","feathers","ungulate", "carnivore","bird","give_milk","has_hair","fly_well", "black&white_color","can_swim","long_legs","long_neck", "black_stripes","dark_spots","tawny_color","albatross", "penguin","ostrich","zebra","giraffe","tiger","cheetah","\0"} 程序有编号序列的方式表达了产生式规则,如资料中规则15,如果动物是鸟,且善飞,则该动物是信天翁。相应的规则数组第七条是{16,13,0,0,0,0},第十三个是“bird”(鸟),如果事实成立,询问使用者下一个事实,第十六个“fly_well”(善飞),如果也成立,则查找结论断言编号数组{30,29,28, 27,26,25,24,3,3,13,12,12,11,11,0}中第七个“24”,这里24对应事实数组中的“albatross”(信天翁)。 上述就是程序的推理过程,也是程序中的重点,该部分是由规则类(类rul e)中的Query方法实现。 三、实验原理 一个基于规则专家系统的完整结构示于图1。其中,知识库、推理机和工作存储器是构成专家系统的核心。系统的主要部分是知识库和推理引擎。知识库由谓词演算事实和有关讨论主题的规则构成。推理引擎由所有操纵知识库来演绎用户要求的信息的过程构成-如消解、前向链或反向链。用户接口可能包括某种自然语言处理系统,它允许用户用一个有限的自然语言形式与系统交互;也可能用带有菜单的图形接口界面。解释子系统分析被系统执行的推理结构,并把它解释给用户。

人工智能实验一指导

实验1: Prolog语言程序设计 人工智能(AI)语言是一类适应于人工智能和知识工程领域的、具有符号处理和逻辑推理能力的计算机程序设计语言。能够用它来编写求解非数值计算、知识处理、推理、规划、决策等具有智能的各种复杂问题。 Prolog是当代最有影响的人工智能语言之一,由于该语言很适合表达人的思维和推理规则,在自然语言理解、机器定理证明、专家系统等方面得到了广泛的应用,已经成为人工智能应用领域的强有力的开发语言。 尽管Prolog语言有许多版本,但它们的核心部分都是一样的。Prolog的基本语句仅有三种,即事实、规则和目标三种类型的语句,且都用谓词表示,因而程序逻辑性强,方法简捷,清晰易懂。另一方面,Prolog是陈述性语言,一旦给它提交必要的事实和规则之后,Prolog就使用内部的演绎推理机制自动求解程序给定的目标,而不需要在程序中列出详细的求解步骤。 一、实验目的 1、加深学生对逻辑程序运行机理的理解。 2、掌握Prolog语言的特点、熟悉其编程环境。 3、为今后人工智能程序设计做好准备。 二、实验内容 1、编写一个描述亲属关系的Prolog程序,然后再给予出一些事实数据,建立一个小型演绎数据库。 提示:可以以父亲和母亲为基本关系(作为基本谓词),再由此来描述祖父、祖母、兄弟、姐妹以及其他所属关系。 2、编写一个路径查询程序,使其能输出图中所有路径。 提示:程序中的事实描述了下面的有向图,规则是图中两节点间通路的定义。 e

3、一个雇主在发出招聘广告之后,收到了大量的应聘申请。为了从中筛选出不量的候选人,该雇主采用下列判据:申请者必须会打字、开车,并且住在伦敦。 (a)用Prolog规则表述这个雇主的选择准则。 (b)用Prolog事实描述下列申请者的情况: 史密斯住在剑桥,会开车但不会打字。 布朗住在伦敦,会开车也会打字。 简住在格拉斯哥,不会开车但会打字。 埃文斯住在伦敦,会开车也会打字。 格林住在卢顿,会开车也会打字。 (c)要求Prolog提供一个候选人名单。 4、实现递归谓词remove(X,Y,Z),它用于从表Y中除去所有整型数X的倍数值后得到新表Z。例如,对于询问 remove(2,[3,4,5,6,7,8,9,10],Z). 的回答为: Z=[3,5,7,9] 三、实验建议 1、首先运行Prolog安装目录中PROGRAM目录下的示例程序,对Prolog功能有一个感性认识。 (1)HANOI.PRO 实现汉诺塔演示的程序。 程序运行界面如图所示。

人工智能实验报告大全

人工智能实验报告大 全

人工智能课内实验报告 (8次) 学院:自动化学院 班级:智能1501 姓名:刘少鹏(34) 学号: 06153034 目录 课内实验1:猴子摘香蕉问题的VC编程实现 (1) 课内实验2:编程实现简单动物识别系统的知识表示 (5)

课内实验3:盲目搜索求解8数码问题 (18) 课内实验4:回溯算法求解四皇后问题 (33) 课内实验5:编程实现一字棋游戏 (37) 课内实验6:字句集消解实验 (46) 课内实验7:简单动物识别系统的产生式推理 (66) 课内实验8:编程实现D-S证据推理算法 (78)

人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现 学院:自动化学院 班级:智能1501 姓名:刘少鹏(33) 学号: 06153034 日期: 2017-3-8 10:15-12:00

实验1:猴子摘香蕉问题的VC编程实现 一、实验目的 (1)熟悉谓词逻辑表示法; (2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。 二、编程环境 VC语言 三、问题描述 房子里有一只猴子(即机器人),位于a处。在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。要求通过VC语言编程实现猴子摘香蕉问题的求解过程。 图1 猴子摘香蕉问题

四、源代码 #include unsigned int i; void Monkey_Go_Box(unsigned char x, unsigned char y) { printf("Step %d:monkey从%c走到%c\n", ++i, x, y);//x表示猴子的位置,y为箱子的位置 } void Monkey_Move_Box(char x, char y) { printf("Step %d:monkey把箱子从%c运到%c\n", ++i, x, y);//x表示箱子的位置,y为香蕉的位置 } void Monkey_On_Box() { printf("Step %d:monkey爬上箱子\n", ++i); } void Monkey_Get_Banana() { printf("Step %d:monkey摘到香蕉\n", ++i); } void main() { unsigned char Monkey, Box, Banana; printf("********智能1501班**********\n"); printf("********06153034************\n"); printf("********刘少鹏**************\n"); printf("请用a b c来表示猴子箱子香蕉的位置\n"); printf("Monkey\tbox\tbanana\n"); scanf("%c", &Monkey); getchar(); printf("\t"); scanf("%c", &Box); getchar(); printf("\t\t"); scanf("%c", &Banana); getchar(); printf("\n操作步骤如下\n"); if (Monkey != Box) { Monkey_Go_Box(Monkey, Box); } if (Box != Banana)

人工智能与专家系统复习

人工智能与专家系统复习尹朝庆,尹皓中国水利水电出版社 第一章 【P1】1.1何谓人工智能?人类智能主要包括哪些能力? 答:人工智能是研究、设计和应用智能机器或智能系统,来模拟人类智能活动的能力、以延伸人类智能的科学。 四种能力: 认识和理解外界环境的能力; 进行演绎和归纳推理、作出决策的能力; 学习的能力; 自适应的能力。 【P6-8】1.4人工智能有哪几个主要学派?各学派的基本理论框架和研究方法有何不同?答:(1)符号主义学派的框架: 知识是智能的基础,人工智能的核心问题是知识表示和知识推理,可以用一个符号系统在计算机上形式化的描述和模拟人的思维活动过程。 研究方法:功能模拟方法,力图用数理逻辑方法来建立人工智能的统一理论体系。 (2)联接主义学派的框架: 利用人工神经网络模仿人类智能,认为人的智能的基本单位是神经元,由人工神经元联接起来的人工神经网络可以具有学习和自适应能力。 研究方法:结构模拟。 (3)行为主义学派的框架: 提出智能行为的“感知-动作模式”。 研究方法:行为模拟方法。 【P8-9】1.5人工智能的近期研究目标和远期研究目标分别是什么? 近期:建造智能计算机。 远期:研究人类智能和机器智能的基本原理,用智能机器来模拟人类的思维过程和智能行为。 【P9-12】1.6人工智能主要的研究应用领域? 十条:定理证明;专家系统;机器学习;自然语言理解;智能检索;机器人学;自动程序设计;组合调度问题;模式识别;机器视觉。 第二章 【P19】2.2简述谓词逻辑中的下述推理规则: (1)P规则:在推理的任何步骤上都可引入前提; (2)T规则:在推理时,如果前面步骤中有一个或多个公式永真蕴含公式S,则可把S引入推理过程中; (3)CP规则:如果能从R和前提集合中推出S来,则可从前提集合推出R→S。 (4)反证法规则:P=>Q,当且仅当P∧┑Q<=>F。即Q为P的逻辑结论,当且仅当P∧┑Q是不可满足的。 【P20-21】2.3一阶谓词逻辑表示法适合于表示哪种类型的知识?它有主要哪些特点? 答:谓词逻辑适合于表示事物的状态、属性、概念等事实性的知识,也可以用来表示事物间确定的因果关系,即规则。

人工智能实验4三-专家系统方案

《人工智能导论》实验报告

一、实验题目:识别型专家系统设计 ————识别动物专家系统 二、实验目的 1、掌握专家系统的基本构成 2、掌握用人工智能程序设计语言编制智能程序的方法 三、实验容 1、所选编程语言:C语言; 2.拟订的规则: (1)若某动物有奶,则它是哺乳动物。 (2)若某动物有毛发,则它是哺乳动物。 (3)若某动物有羽毛,则它是鸟。 (4)若某动物会飞且生蛋,则它是鸟。 (5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。 (6)若某动物是哺乳动物且吃肉,则它是食肉动物。 (7)若某动物是哺乳动物且有蹄,则它是有蹄动物。 (8)若某动物是哺乳动物且反刍食物,则它是有蹄动物。 (9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。 (10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是金钱豹。 (11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。 (12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。 (13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。(14)若某动物是鸟且不会飞且会游泳且黑白色,则它是企鹅。 (15)若某动物是鸟且善飞,则它是海燕。 2、设计思路: 用户界面:采用问答形式; 知识库(规则库):存放产生式规则,推理时用到的一般知识和领域知识,比如动物的特征,动物的分类标准,从哺乳动物、食肉动物来分,再具体地添加一些附加特征得到具体动物;建立知识库的同时也建立了事实库。事实库是一个动态链表,一个事实是链表的一个结点。知识库通过事实号与事实库发生联系。

数据库:用来存放用户回答的问题,存放初始状态,中间推理结果,最终结果; 推理机:采用正向推理,推理机是动物识别的逻辑控制器,它控制、协调系统的推理,并利用知识库中的规则对综合数据库中的数据进行逻辑操作。推理机担负两项基本任务:一是检查已有的事实和规则,并在可能的情况下增加新的事实;二是决定推理的方式和推理顺序。将推理机制同规则对象封装在一起,事实对象记录了当前的状态,规则对象首先拿出前提条件的断言(只有这些前提都有符合时才会做这条规则的结论),询问事实对象集,如事实对象集不知道,则询问用户,如所有前提条件都被证实为真则结论为真,否则系统不知道结论真假。 3、程序流程图: 程序运行如下: 以老虎,金钱豹,长颈鹿为例画出程序流程图如下:

游戏人工智能实验报告四

实验四有限状态机实验 实验报告 一、实验目的 通过蚂蚁世界实验掌握游戏中追有限状态机算法 二、实验仪器 Windows7系统 Microsoft Visual Studio2015 三、实验原理及过程 1)制作菜单 设置参数:点击会弹出对话框,设置一些参数,红、黑蚂蚁的家会在地图上标记出来 运行:设置好参数后点击运行,毒药、食物、水会在地图上随机显示 下一步:2只红蚂蚁和2只黑蚂蚁会随机出现在地图上,窗口右方还会出现红、黑蚂蚁当前数量的统计 不断按下一步,有限状态机就会不断运行,使蚁群产生变化 2)添加加速键 资源视图中 下方

选择ID和键值 3)新建头文件def.h 在AntView.cpp中加入#include"def.h" 与本实验有关的数据大都是在这里定义的 int flag=0; #define kForage 1 #define kGoHome 2 #define kThirsty 3 #define kDead 4 #define kMaxEntities 200 class ai_Entity{ public: int type; int state; int row; int col; ai_Entity(); ~ai_Entity() {} void New (int theType,int theState,int theRow,int theCol); void Forage(); void GoHome(); void Thirsty(); void Dead(); }; ai_Entity entityList[kMaxEntities]; #define kRedAnt 1 #define kBlackAnt 2

大学人工智能期末考试题库

《人工智能与专家系统》试卷(1)参考答案与评分标准 问答题(每题5分,共50分) 1.人工智能是何时、何地、怎样诞生的?(5分) 答:人工智能于1956年夏季在美国达特茅斯(Dartmouth)大学诞生。(3分)1956年夏季,美国的一些从事数学、心理学、计算机科学、信息论和神经学研究的年轻学者,汇聚在Dartmouth大学,举办了一次长达两个月的学术讨论会,认真而热烈地讨论了用机器模拟人类智能的问题。在这次会议上,第一次使用了“人工智能”这一术语,以代表有关机器智能这一研究方向。这是人类历史上第一次人工智能研讨会,标志着人工智能学科的诞生,具有十分重要的意义。(2分) 2.行为主义是人工智能的主要学派之一,它的基本观点是什么?(5分) 答:行为主义,又称进化主义或控制论学派。这种观点认为智能取决于感知和行动(所以被称为行为主义),它不需要知识、不需要表示、不需要推理。其原理是控制论和感知——动作型控制系统。 3.什么是知识表示?在选择知识表示方法时,应该考虑哪几个因素?(5分)答:知识表示是研究用机器表示知识的可行性、有效性的般方法,是一种数据结构与控制结构的统一体,既考虑知识的存储又考虑知识的使用。知识表示实际上就是对人类知识的一种描述,以把人类知识表示成计算机能够处理的数据结构。对知识进行表示的过程就是把知识编码成某种数据结构的过程。(3分)在选择知识表示方法时,应该考虑以下几个因素:(1)能否充分表示相关的领域知识;(2)是否有利于对知识的利用;(3)是否便于知识的组织、维护和管理;(4)是否便于理解和实现。(2分) 4.框架表示法有什么特点?(5分) 答:框架表示法有如下特点:结构性、继承性、自然性。(5分) 5.何谓产生式系统?它由哪几部分组成?(5分) 答:把一组产生式放在一起,让它们相互配合,协同作用,一个产生式生成的结论可以供另一个产生式作为已知事实使用,以求得问题的解,这样的系统称为产生式系统。(2分) 产生式系统一般由三个基本部分组成:规则库、综合数据库和推理机。(3分) 6.产生式系统中,推理机的推理方式有哪几种?请分别解释说明。(5分)答:产生式系统推理机的推理方式有正向推理、反向推理和双向推理三种。 正向推理:正向推理是从己知事实出发,通过规则库求得结果。 反向推理:反向推理是从目标出发,反向使用规则,求证已知的事实。 双向推理:双向推理是既自顶向下又自底向上的推理。推理从两个方向进行, 直至在某个中间界面上两方向结果相符便成功结束;如两方衔接不上,则推理失败。

人工智能小型专家系统的设计与实现解读

人工智能技术基础实验报告 指导老师:朱力 任课教师:张勇

实验三小型专家系统设计与实现 一、实验目的 (1)增加学生对人工智能课程的兴趣; (2)使学生进一步理解并掌握人工智能prolog语言; (3)使学生加强对专家系统课程内容的理解和掌握,并培养学生综合运用所学知识开发智能系统的初步能力。 二、实验要求 (1)用产生式规则作为知识表示,用产生系统实现该专家系统。 (2)可使用本实验指导书中给出的示例程序,此时只需理解该程序,并增加自己感兴趣的修改即可;也可以参考该程序,然后用PROLOG语言或其他语言另行编写。 (3)程序运行时,应能在屏幕上显示程序运行结果。 三、实验环境 在Turbo PROLOG或Visual Prolog集成环境下调试运行简单的PROLOG程序。 四、实验内容 建造一个小型专家系统(如分类、诊断、预测等类型),具体应用领域由学生自选,具体系统名称由学生自定。 五、实验步骤 1、专家系统: 1.1建造一个完整的专家系统设计需完成的内容: 1.用户界面:可采用菜单方式或问答方式。

2.知识库(规则库):存放产生式规则,库中的规则可以增删。 3.数据库:用来存放用户回答的问题、已知事实、推理得到的中 间事实。 4.推理机:如何运用知识库中的规则进行问题的推理控制,建议 用正向推理。 5.知识库中的规则可以随意增减。 1.2推理策略 推理策略包括:正向(数据驱动),反向(目标驱动),双向 2、动物分类实验规则集 (1)若某动物有奶,则它是哺乳动物。 (2)若某动物有毛发,则它是哺乳动物。 (3)若某动物有羽毛,则它是鸟。 (4)若某动物会飞且生蛋,则它是鸟。 (5)若某动物是哺乳动物且有爪且有犬齿且目盯前方,则它是食肉动物。(6)若某动物是哺乳动物且吃肉,则它是食肉动物。 (7)若某动物是哺乳动物且有蹄,则它是有蹄动物。 (8)若某动物是有蹄动物且反刍食物,则它是偶蹄动物。 (9)若某动物是食肉动物且黄褐色且有黑色条纹,则它是老虎。 (10)若某动物是食肉动物且黄褐色且有黑色斑点,则它是猎豹。 (11)若某动物是有蹄动物且长腿且长脖子且黄褐色且有暗斑点,则它是长颈鹿。 (12)若某动物是有蹄动物且白色且有黑色条纹,则它是斑马。 (13)若某动物是鸟且不会飞且长腿且长脖子且黑白色,则它是驼鸟。

人工智能 课程实验 专家系统 程序源代码

游戏人物识别专家系统 ——邢洪伟一试验题目 游戏人物识别专家系统 二、试验内容 游戏人物识别专家系统是流行的专家系统实验模型,主要基于暴风公司出品的经典角色类游戏《暗黑破坏神2》。它用产生式规则来表示知识,共15条规则、可以识别八种游戏人物,这些规则既少又简单,可以改造他们,也可以加进新的规则,还可以用来识别其他东西的新规则来取代这些规则。游戏人物识别15条规则的中文表示是: 规则1: 如果: 暴风公司出品的单机角色类游戏 则: 该游戏是暗黑破坏神 规则2: 如果: 暴风公司出品的单机对抗类游戏 则: 该游戏是魔兽争霸 规则3: 如果: 暴风公司出品的网络游戏

则: 该游戏是魔兽世界 规则4: 如果: 网易游戏出品的网络游戏则: 该游戏是梦幻西游 规则5: 如果: 暗黑破坏神版本1 则: 该游戏是暗黑破坏神1 规则6: 如果: 是暗黑破坏神2 则: 该游戏是暗黑破坏神2 规则7: 如果: 是暗黑破坏神3 则:

该游戏是暗黑破坏神3 规则8: 如果: 暗黑破坏神版本2单手武器使用木棒的男性人物 则: 该人物是德鲁伊 规则9: 如果: 暗黑破坏神2单手武器使用手杖的男性人物 则: 该人物是亡灵法师 规则10: 如果: 暗黑破坏神版本2单手武器使用法杖的女性人物 则: 该人物是巫师 规则11: 如果: 暗黑破坏神版本2双手武器使用长剑和盾牌的男性人物则:该人物是圣骑士 规则12:

如果: 暗黑破坏神版本2单手武器使用斧头的男性人物 则: 该人物是野蛮人 规则13: 如果: 暗黑破坏神版本2单手武器使用爪子的男性人物 则: 该人物是刺客 规则14: 如果: 暗黑破坏神2单手武器使用长剑的女性人物 则: 该人物是亚马逊 规则15: 如果: 梦幻西游单手使用鞭子的女性人物 则: 该人物是飞燕女 游戏人物识别专家系统由15条规则组成,可以识别八种动物,在15条规则中,共出现37个概念(也称作事实),共37个事实,每个事实给一个编

《人工智能及其应用》实验指导书Word版

《人工智能及其应用》 实验指导书 浙江工业大学计算机科学与技术学院—人工智能课程组 2011年9月

前言 本实验是为了配合《人工智能及其应用》课程的理论学习而专门设置的。本实验的目的是巩固和加强人工智能的基本原理和方法,并为今后进一步学习更高级课程和信息智能化技术的研究与系统开发奠定良好的基础。 全书共分为八个实验:1.产生式系统实验;2.模糊推理系统实验;3.A*算法求解8数码问题实验;4.A*算法求解迷宫问题实验;5.遗传算法求解函数最值问题实验;6.遗传算法求解TSP问题实验;7.基于神经网络的模式识别实验;8.基于神经网络的优化计算实验。每个实验包括有:实验目的、实验内容、实验条件、实验要求、实验步骤和实验报告等六个项目。 本实验指导书包括两个部分。第一个部分是介绍实验的教学大纲;第二部分是介绍八个实验的内容。 由于编者水平有限,本实验指导书的错误和不足在所难免,欢迎批评指正。 人工智能课程组 2011年9月

目录 实验教学大纲 (1) 实验一产生式系统实验 (3) 实验二模糊推理系统实验 (5) 实验三A*算法实验I (9) 实验四A*算法实验II (12) 实验五遗传算法实验I (14) 实验六遗传算法实验II (18) 实验七基于神经网络的模式识别实验 (20) 实验八基于神经网络的优化计算实验 (24)

实验教学大纲 一、学时:16学时,一般安排在第9周至第16周。 二、主要仪器设备及运行环境:PC机、Visual C++ 6.0、Matlab 7.0。 三、实验项目及教学安排 序号实验名称实验 平台实验内容学 时 类型教学 要求 1产生式系统应用VC++设计知识库,实现系统识别或 分类等。 2设计课内 2模糊推理系统应用Matlab1)设计洗衣机的模糊控制器; 2)设计两车追赶的模糊控制 器。 2验证课内 3A*算法应用I VC++设计与实现求解N数码问题的 A*算法。 2综合课内4A*算法应用II VC++设计与实现求解迷宫问题的A* 算法。 2综合课内5遗传算法应用I Matlab1)求某一函数的最小值; 2)求某一函数的最大值。 2验证课内6遗传算法应用II VC++设计与实现求解不同城市规模 的TSP问题的遗传算法。 2综合课内 7基于神经网络的模式识别Matlab1)基于BP神经网络的数字识 别设计; 2)基于离散Hopfiel神经网络 的联想记忆设计。 2验证课内 8基于神经网络的 优化计算 VC++设计与实现求解TSP问题的连2综合课内 四、实验成绩评定 实验课成绩单独按五分制评定。凡实验成绩不及格者,该门课程就不及格。学生的实验成绩应以平时考查为主,一般应占课程总成绩的50%,其平时成绩又要以实验实际操作的优劣作为主要考核依据。对于实验课成绩,无论采取何种方式进行考核,都必须按实验课的目的要求,以实际实验工作能力的强弱作为评定成绩的主要依据。

人工智能实验报告大全

人工智能课内实验报告 (8次) 学院:自动化学院 班级:智能1501 姓名:刘少鹏(34) 学号: 06153034

目录 课内实验1:猴子摘香蕉问题的VC编程实现 (1) 课内实验2:编程实现简单动物识别系统的知识表示 (5) 课内实验3:盲目搜索求解8数码问题 (18) 课内实验4:回溯算法求解四皇后问题 (33) 课内实验5:编程实现一字棋游戏 (37) 课内实验6:字句集消解实验 (46) 课内实验7:简单动物识别系统的产生式推理 (66) 课内实验8:编程实现D-S证据推理算法 (78)

人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现 学院:自动化学院 班级:智能1501 姓名:刘少鹏(33) 学号: 06153034 日期: 2017-3-8 10:15-12:00

实验1:猴子摘香蕉问题的VC编程实现 一、实验目的 (1)熟悉谓词逻辑表示法; (2)掌握人工智能谓词逻辑中的经典例子——猴子摘香蕉问题的编程实现。 二、编程环境 VC语言 三、问题描述 房子里有一只猴子(即机器人),位于a处。在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。要求通过VC语言编程实现猴子摘香蕉问题的求解过程。 图1 猴子摘香蕉问题 四、源代码 #include unsigned int i; void Monkey_Go_Box(unsigned char x, unsigned char y) {

人工智能大作业实验

人工智能大作业实验-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

湖南中医药大学本科课程实验教学大纲 《人工智能》 计算机科学与技术专业 执笔人:丁长松 审定人:*** 学院负责人:*** 湖南中医药大学教务处 二○一四年三月

一、课程性质和教学目的 《人工智能》是计算机专业本科生的一门专业必修课,适应于计算机科学与技术专业、医药信息工程专业。本课程是关于人工智能领域的引导性课程,通过本课程的学习,是使学生了解和掌握人工智能的基本概念、原理和方法,培养学生在计算机领域中应用人工智能技术提高分析和解决较复杂问题的能力,启发学生对人工智能的兴趣,培养知识创新和技术创新能力。 《人工智能》主要研究智能信息处理技术、开发具有智能特性的各类应用系统的核心技术。本课程主要介绍人工智能的基本理论、方法和技术,主要包括常用的知识表示、逻辑推理和问题求解方法、人工智能发展学派以及主要理论。 先修课程:高等数学、数据结构、数据库原理、算法设计与分析、数理逻辑 二、课程目标 人工智能实验应在一种为高效率开发专家系统而设计的高级程序系统或高级程序设计语言环境中进行。在目前开来,专家系统开发工具和环境可分为5种主要类型:程序设计语言、知识工程语言、辅助型工具、支持工具及开发环境。在这里主要是要求学生能用相关术语描述、表示一些问题;用程序设计语言如:C、C++、JAVA编程来实现一些基本的算法、推理、搜索等过程。 三、实验内容与要求 实验一:谓词表示 【实验内容】 设农夫、狼、山羊、白菜都在河的左岸,现在要把它们运送到河的右岸去,农夫有条船,过河时,除农夫外船上至多能载狼、山羊、白菜中的一种。狼要吃山羊,山羊要吃白菜,除非农夫在那里。试设计出一个确保全部都能过河的方案。

人工智能实验报告_2

课程实验报告 学年学期2015—2016年第一学期课程名称人工智能原理与技术实验名称PROLOG语言编程练习实验室无 专业年级电气134 学生姓名赵倩 学生学号2013011989 提交时间2015.12.28 成绩 任课教师樊强 水利与建筑工程学院

第一章PROLOG语言编程练习 1.1实验目的 加深学生对逻辑程序运行机理的理解,使学生掌握PROLOG语言的特点、熟悉其编程环境,同时为后面的人工智能程序设计做好准备。 (1)熟悉PROLOG语言编程环境的使用; (2)了解PROLOG语言中常量、变量的表示方法; (3)了解利用PROLOG进行事实库、规则库的编写方法; 1.2实验环境 计算机,Turbo PROLOG教学软件。 1.3预习要求 实验前应阅读实验指导书,了解实验目的、预习PROLOG语言的相关知识。 1.4实验内容 (1)学习使用Turbo PROLOG,包括进入PROLOG主程序、编辑源程序、修改环境目录、退出等基本操作。(2)在Turbo prolog集成环境下调试运行简单的Turbo PROLOG程序,如描述亲属关系的PROLOG程序或其他小型演绎数据库程序等。 1.5实验方法和步骤 (1)启动Windows XP操作环境。 (2)打开文件目录,执行prolog应用程序,启动Turbo prolog,并按空格键(SPACE)进入集成开发环境。(3)选择Setup项,打开下拉菜单,选择Directories项,进行工作目录修改,按Esc键退出,选择Save Configuration项,保存修改。 (4)选择Files项,打开下拉菜单,选择New file项,进入源程序输入和编辑,或选择Load项,选择要打开的示例程序,再选择Edit项,可以进行编辑源程序。 (5)编辑之后,可以选择Run项,执行程序,可以在Dialog窗口进行询问,即外部目标的执行,查看程序运行结果,分析程序之功能。 (6)仿前例,可以选择其他程序并运行,分析程序功能。 (7)退出,选择Quit项,可以退出Turbo Prolog程序,返回到Windows XP环境。 1.6示例程序 逻辑电路模拟程序。该程序以逻辑运算“与”、“或”、“非”的定义为基本事实,然后在此基础上定义了“异或”运算。那么,利用这些运算就可以对“与”、“或”、“非”和“异或”等逻辑电路进行模拟。事实上,在此基础上也可以对其他任一逻辑门电路进行模拟。 domains d=integer predicates not_(d,d) and_(d,d,d) or_(d,d,d) xor_(d,d,d) clauses not_(1,0). not_(0,1). and_(0,0,0). and_(0,1,0). and_(1,0,0). and_(1,1,1).

《人工智能及其应用》实验指导书上课讲义

《人工智能及其应用》实验指导书

《人工智能及其应用》 实验指导书 浙江工业大学计算机科学与技术学院—人工智能课程组 2011年9月

前言 本实验是为了配合《人工智能及其应用》课程的理论学习而专门设置的。本实验的目的是巩固和加强人工智能的基本原理和方法,并为今后进一步学习更高级课程和信息智能化技术的研究与系统开发奠定良好的基础。 全书共分为八个实验:1.产生式系统实验;2.模糊推理系统实验;3.A*算法求解8数码问题实验;4.A*算法求解迷宫问题实验;5.遗传算法求解函数最值问题实验;6.遗传算法求解TSP问题实验;7.基于神经网络的模式识别实验;8.基于神经网络的优化计算实验。每个实验包括有:实验目的、实验内容、实验条件、实验要求、实验步骤和实验报告等六个项目。 本实验指导书包括两个部分。第一个部分是介绍实验的教学大纲;第二部分是介绍八个实验的内容。 由于编者水平有限,本实验指导书的错误和不足在所难免,欢迎批评指正。 人工智能课程组 2011年9月

目录 实验教学大纲 (1) 实验一产生式系统实验 (4) 实验二模糊推理系统实验 (6) 实验三 A*算法实验I (11) 实验四 A*算法实验II (14) 实验五遗传算法实验I (16) 实验六遗传算法实验II (21) 实验七基于神经网络的模式识别实验 (24) 实验八基于神经网络的优化计算实验 (28)

实验教学大纲 一、学时:16学时,一般安排在第9周至第16周。 二、主要仪器设备及运行环境:PC机、Visual C++ 6.0、Matlab 7.0。 三、实验项目及教学安排 序号实验名称实验 平台 实验内容学 时 类型教学 要求 1 产生式系统应 用VC++ 设计知识库,实现系统识 别或分类等。 2 设计课内 2 模糊推理系统 应用Matlab 1)设计洗衣机的模糊控制 器; 2)设计两车追赶的模糊控 制器。 2 验证课内 3 A*算法应用I VC++ 设计与实现求解N数码问 题的A*算法。 2 综合课内4 A*算法应用II VC++ 设计与实现求解迷宫问题 的A*算法。 2 综合课内 5 遗传算法应用 I Matlab 1)求某一函数的最小值; 2)求某一函数的最大值。 2 验证课内 6 遗传算法应用 II VC++ 设计与实现求解不同城市 规模的TSP问题的遗传算 法。 2 综合课内 7 基于神经网络 的模式识别Matlab 1)基于BP神经网络的数 字识别设计; 2)基于离散Hopfiel神经 网络的联想记忆设计。 2 验证课内 8 基于神经网络 的优化计算VC++ 设计与实现求解TSP问题 的连续Hopfield神经网 络。 2 综合课内 四、实验成绩评定

人工智能实验报告

实验报告 1.对CLIPS和其运行及推理机制进行介绍 CLIPS是一个基于前向推理语言,用标准C语言编写。它具有高移植性、高扩展性、 强大的知识表达能力和编程方式以及低成本等特点。 CLIPS由两部分组成:知识库、推理机。它的基本语法是: (defmodule< module-n ame >[< comme nt >]) CLIPS的基本结构: (1).知识库由事实库(初始事实+初始对象实例)和规则库组成。 事实库: 表示已知的数据或信息,用deftemplat,deffact定义初始事实表FACTLIS,由关系名、后跟 零个或多个槽以及它们的相关值组成,其格式如下: 模板: (deftemplate [] *) :: = | 事实: (deffacts [] *) 当CLIPS系统启动推理时,会把所有用deffact定义的事实自动添加到工作存储器中。常用命令如下:asser:把事实添加到事实库(工作存储器)中retract:删除指定事实 modify :修改自定义模板事实的槽值duplicate :复制事实 clear:删除所有事实 规则库 表示系统推理的有关知识,用defrule命令来定义,由规则头、后跟零个或多个条件元素以 及行为列表组成,其格式如下: (defrule [] * ; =>

人工智能习题&答案-第6章-专家系统

第六章专家系统 6-1 什么叫做专家系统?它具有哪些特点与优点? 专家系统是一种模拟人类专家解决领域问题的智能计算机程序系统,其内部含有大量的某个领域专家水平的知识与经验,能够利用人类专家的知识和解决问题的方法来处理该领域问题。也就是说,专家系统是一个具有大量的专门知识与经验的程序系统,它应用人工智能技术和计算机技术,根据某领域一个或多个专家提供的知识和经验,进行推理和判断,模拟人类专家的决策过程,以便解决那些需要人类专家处理的复杂问题。 特点: (1)启发性 专家系统能运用专家的知识与经验进行推理、判断和决策 (2)透明性 专家系统能够解释本身的推理过程和回答用户提出的问题,以便让用户能够了解推理过程,提高对专家系统的信赖感。 (3) 灵活性 专家系统能不断地增长知识,修改原有知识,不断更新。 优点: (1) 专家系统能够高效率、准确、周到、迅速和不知疲倦地进行工作。 (2) 专家系统解决实际问题时不受周围环境的影响,也不可能遗漏忘记。 (3) 可以使专家的专长不受时间和空间的限制,以便推广珍贵和稀缺的专家知识与经验。 (4) 专家系统能促进各领域的发展,它使各领域专家的专业知识和经验得到总结和精炼,能够广泛有力地传播专家的知识、经验和能力。 (5) 专家系统能汇集多领域专家的知识和经验以及他们协作解决重大问题的能力,它拥有更渊博的知识、更丰富的经验和更强的工作能力。 (6) 军事专家系统的水平是一个国家国防现代化的重要标志之一。 (7) 专家系统的研制和应用,具有巨大的经济效益和社会效益。 (8) 研究专家系统能够促进整个科学技术的发展。专家系统对人工智能的各个领域的发展起了很大的促进作用,并将对科技、经济、国防、教育、社会和人民生活产生极其深远的影响。

《人工智能及其应用》实验指导书

《人工智能及其应用》 实验指导书

浙江工业大学计算机科学与技术学院—人工智能课程组 2011年9月

前言 本实验是为了配合《人工智能及其应用》课程的理论学习而专门设置的。本实验的目的是巩固和加强人工智能的基本原理和方法,并为今后进一步学习更高级课程和信息智能化技术的研究与系统开发奠定良好的基础。 全书共分为八个实验:1.产生式系统实验;2.模糊推理系统实验;3.A*算法求解8数码问题实验;4.A*算法求解迷宫问题实验;5.遗传算法求解函数最值问题实验;6.遗传算法求解TSP问题实验;7.基于神经网络的模式识别实验;8.基于神经网络的优化计算实验。每个实验包括有:实验目的、实验内容、实验条件、实验要求、实验步骤和实验报告等六个项目。 本实验指导书包括两个部分。第一个部分是介绍实验的教学大纲;第二部分是介绍八个实验的内容。 由于编者水平有限,本实验指导书的错误和不足在所难免,欢迎批评指正。 人工智能课程组 2011年9月

目录 实验教学大纲 (1) 实验一产生式系统实验 (4) 实验二模糊推理系统实验 (7)

实验三A*算法实验I (13) 实验四A*算法实验II (17) 实验五遗传算法实验I (19) 实验六遗传算法实验II (26) 实验七基于神经网络的模式识别实验 (29) 实验八基于神经网络的优化计算实验 (35)

实验教学大纲 一、学时:16学时,一般安排在第9周至第16周。 二、主要仪器设备及运行环境:PC机、Visual C++ 6.0、Matlab 7.0。 三、实验项目及教学安排 序号实验名称实验 平台实验内容学 时 类型教学 要求 1 产生式系统应用VC++ 设计知识库,实现系统识别或 分类等。 2 设计课内 2 模糊推理系统应 用Matla b 1)设计洗衣机的模糊控制器; 2)设计两车追赶的模糊控制 器。 2 验证课内 3 A*算法应用I VC++ 设计与实现求解N数码问题的 A*算法。 2 综合课内 4 A*算法应用II VC++ 设计与实现求解迷宫问题的A* 算法。 2 综合课内 5 遗传算法应用I Matla b 1)求某一函数的最小值; 2)求某一函数的最大值。 2 验证课内 6 遗传算法应用II VC++ 设计与实现求解不同城市规模 的TSP问题的遗传算法。 2 综合课内7 基于神经网络的Matla1)基于BP神经网络的数字识 2 验证课内

人工智能第六章_专家系统_的要点

1什么是专家系统。有什么特点和优点? 专家系统是一个具有大量的专门知识与经验的程序系统 专家系统是一种模拟人类专家解决领域问题的计算机程序系统特点: 启发性,能够运用专家的知识进行推理判断与决策 透明性,能够解释推理过程和回答用户问题 灵活性,能不断增长知识,更新知识库 专家系统的优点,自己课后了解一下。 2专家系统由哪些部分构成?各部分的作用? 知识库;综合数据库;推理机;解释器;接口 知识库,存储各领域专家的专门知识。静态。硬盘 综合数据库,存储初始问题数据和推理过程的中间数据。内存推理机,根据知识进行推理并导出结论。CPU 接口,用户界面,和用户进行交互。向用户提问,回答用户问题,并进行必要的解释。

知识获取机制是将专业知识转换成机器能理解的表达形式。 解释机制向用户解释以下问题:系统为什么要向用户提出该问题(Why)?计算机是如何得出最终结论的(How)? 3专家系统的分类,自己课下了解。 4建造专家系统的关键步骤。 专家系统团队关系图

是否拥有大量知识是专家系统成功与否的关键。因此知识表示是设计专家系统的关键 一.设计初始数据库 二.原型机的开发与实验 三.知识库的改进与归纳 建立专家系统的步骤图6.3P156页 5基于规则的专家系统

知识库:包含解决问题用到的领域知识,知识表达成为一序列规则。每个规则使用IF(条件)THEN(动作)结构指定的关系。当满足规则的条件部分时,便激发规则,执行动作部分。 数据库:包含一序列事实(一个对象及其取值构成了一个事实),所有的事实都存放在数据库中,用来和知识库中存储的规则的IF(条件)部分相匹配。 3. 基于规则的专家系统的推理机制 推理机制分为两大类:前向连接和后向链接 前向链接就是根据已有事实推断出新的事实。例如已知事实A is x,根据规则IF A is x THEN B is y。获得B is y。然后将B is y加入数据库。再寻找新的规则,即IF B is y THEN ….。

相关文档
最新文档