人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx

上传人:聆听****声音 文档编号:850666 上传时间:2023-04-29 格式:DOCX 页数:83 大小:2.16MB
下载 相关 举报
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第1页
第1页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第2页
第2页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第3页
第3页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第4页
第4页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第5页
第5页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第6页
第6页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第7页
第7页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第8页
第8页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第9页
第9页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第10页
第10页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第11页
第11页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第12页
第12页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第13页
第13页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第14页
第14页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第15页
第15页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第16页
第16页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第17页
第17页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第18页
第18页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第19页
第19页 / 共83页
人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx_第20页
第20页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx

《人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx》由会员分享,可在线阅读,更多相关《人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx(83页珍藏版)》请在冰点文库上搜索。

人工智能实验报告大全:猴子摘香蕉问题的VC编程实现等八次文档格式.docx

二、编程环境

VC语言

三、问题描述

房子里有一只猴子(即机器人),位于a处。

在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。

房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。

如图1所示,对于上述问题,可以通过谓词逻辑表示法来描述知识。

要求通过VC语言编程实现猴子摘香蕉问题的求解过程。

图1猴子摘香蕉问题

四、源代码

#include<

stdio.h>

unsignedinti;

voidMonkey_Go_Box(unsignedcharx,unsignedchary)

{

printf( "

Step%d:

monkey从%c走到%c\n"

++i,x,y);

//x表示猴子的位置,y为箱子的

位置

}

voidMonkey_Move_Box(charx,chary)

monkey把箱子从%c运到%c\n"

//x表示箱子的位置,y为

香蕉的位置

}voidMonkey_On_Box()

monkey爬上箱子\n"

++i);

}voidMonkey_Get_Banana()

monkey摘到香蕉\n"

}voidmain()

unsignedcharMonkey,Box,Banana;

********智能1501班**********\n"

);

********06153034************\n"

********刘少鹏**************\n"

请用abc来表示猴子箱子香蕉的位置\n"

);

Monkey\tbox\tbanana\n"

scanf( "

%c"

&

Monkey);

getchar();

\t"

scanf("

Box);

\t\t"

Banana);

\n操作步骤如下\n"

if(Monkey!

=Box)

{

Monkey_Go_Box(Monkey,Box);

}

if(Box!

=Banana)

Monkey_Move_Box(Box,Banana);

Monkey_On_Box();

Monkey_Get_Banana();

\n"

五、实验结果相关截图

六、心得体会

通过本次实验,我初步了学会了使用VC的新建工程,并且进行简单的程序编写。

此外我还学会如何使用一些谓词来解决生活中的一些简单问题,并且用VC编程给出具体的操作步骤,感觉对VC编程有了新的认识。

在实验中我也遇到过许多问题,比如在我写完代码进行编译时总是会出现一个错误“fatalerrorC1010:

在查找预编译头时遇到意外的文件结尾,是否忘记了向源中添加“#include‘stdafx.h’”关于这个错误我我问了几个同学得不出答案后,我决定通过上网查找,最终找到了解决方法,需要在该项目的每一个cpp结尾的文件属性中设置不使用预编译头即可。

在这个过程中也锻炼了自己解决问题的能力。

实验2:

编程实现简单动物识别系统的知识表示

自动化学院班 级:

智能1501

姓 名:

刘少鹏(33)

06153034

2017-3-1310:

00

1、理解和掌握产生式知识表示方法;

2、能够通过VC编程语言实现产生式系统的规则库。

二、实验内容

1、以动物识别系统的产生式规则为例;

2、用选定的编程语言建造规则库和综合数据库,并能对它们进行增加、删除和修改操作。

三、实验步骤

1、确定需要识别的动物及其属性

本次实验的简单动物识别系统总共能识别7种动物,即:

老虎、金钱豹、斑马、长颈鹿、

企鹅、鸵鸟和信天翁。

2、建立识别七种动物识别系统的规则

3、选定编程语言并确定综合数据库和规则库结构

(1)选用C语言作为编程语言

(2)综合数据库的建立

(3)规则库的建立

四、程序源代码

iostream>

#include<

string>

usingnamespacestd;

structRULES

{intcount;

charpre[255];

charback[255];

intmark;

};

voidcheck();

RULESr[100]={

{1, "

有毛发"

"

哺乳动物"

0}, //所有规则静态数据库

有奶"

0},

有羽毛"

鸟"

{2, "

会飞&

下蛋&

"

{1, "

吃肉"

食肉动物"

{3, "

有锋利的牙齿&

有爪&

眼睛盯着前方&

哺乳动物&

有蹄&

有蹄类哺乳动物"

反刍&

有偶蹄类哺乳动物"

{4, "

食肉动物&

黄褐色&

有暗斑&

金钱豹"

黑色条纹&

老虎"

有蹄类哺乳动物&

有长脖子&

有长腿&

长颈鹿"

黑条纹&

斑马"

{5,"

鸟&

不会飞&

黑白色&

鸵鸟"

会游泳&

企鹅"

信天翁"

反刍"

0}

intnumber;

intm;

intcat=15;

inta;

intlength;

//输入的事实长度stringf[255];

//输入的事实数组voidinput()

{while

(1)

cat++;

cout<

<

number"

endl;

cin>

>

r[cat].count;

输入事实,两种以上的事实请在每个事实后加上‘&

’符号"

r[cat].pre;

输入结果"

r[cat].back;

r[cat].mark=0;

while

(1)

{

cout<

输入“1”继续添加规则,输入“2”查看规则库"

intp;

cin>

p;

if(p==1)

}else

input();

if(p==2)

check();



}

cout<

输入错误,重新输入"

}voiddelate()

cout<

输入要删除的条数"

intbar;

cin>

bar;

for(intt=0;

t<

=cat;

t++)

r[bar-1]=r[bar];

bar++;

cat--;

check();

}voidcheck()

endl<

规则库如下"

for(inti=0;

i<

i++)

i+1<

."

由"

r[i].pre<

可得"

r[i].back<

输入“1”继续添加规则,输入“3”删除选定的规则"

m;

if(m==1)

if(m==3)

delate();

intfind_rule(ints) //查找规则库中是否还有可使用的规则

for(inti=0;

=15;

i++)s=s*r[i].mark;

//cout<

find_rule结果"

s<

returns;

intcompare1(RULESr)//当前提条件为1时

intj=0,i=1;

stringstr,str2;

str=r.pre;

while(i<

=length)

if(f[i]==str)

str2=r.back;

f[length+1]=str2;

//加入事实库

length++;

//事实库的长度加1

r.mark=1;

//标记规则已使用过break;

i++;

returnr.mark;

intcompare2(RULESr) //前提条件不为1

stringb[10];

inti,j=1,num=0;

inta=0;

str=r.pre;

for(i=0;

i!

=10;

++i)//转换数组

b[i]="

;

=str.length();

++i)

if(str.at(i)!

='

&

'

b[j]+=str.at(i);

j++;

i=1;

while(i<

=r.count)

for(j=1;

j!

=length+1;

j++)

if(f[j]==b[i])

a+=1;

if(a==r.count)

str2=r.back;

r.mark=1;

//标记规则已使用过

voidresult()

inti=1,m=0;

while(i!

=length+1)

if(f[i]=="

该动物是金钱豹"

m=1;

break;

该动物是老虎"

该动物是长颈鹿"

该动物是斑马"

该动物是鸵鸟"

该动物是企鹅"

if(m==0)

没有符合的动物,请确认特征,重新输入"

}voididetify()

inti=0,u=0;

if(find_rule(u)==0)//如果规则库中还有未使用的规则

{//cout<

还有未使用的规则"

intnum=length;

while(i<

16) //从第一条规则开始遍历

if(r[i].mark==0) //如果该条规则未使用

if(r[i].count==1) //该条规则前提数为1

u=compare1(r[i]);

if(u==1)

r[i].mark=1;

if(r[i].mark==1)

使用规则"

i+1;

且加入的新事实为"

u=compare2(r[i]);

if(r[i].mark==1)

if(i==15)

if(num!

i=0;

num=length;

i=16;

}

所有的规则都已使用"

result();

/*主函数*/voidmain()

******智能1501班********"

******06153034**********"

<

******刘少鹏************"

进行动物识别请输入7"

进行规则库操作请输入8"

a;

while(a==8)

{while

(1)

添加规则输入‘1’,查看已有规则输入‘2’"

if(m==2)

输入错误请重新输入"

if(a==7)

intu=0;

请输入动物的特征数"

length;

请输入动物的特征"

for(inti=1;

=length;

f[i];

idetify();

system("

pause"

1、程序总体结构

2、规则库操作→查看规则库

3、规则库操作→添加规则→添加袋鼠规则

4、规则库操作→删除规则→删除袋鼠规则

5、动物识别→识别长颈鹿

通过本次实验我深刻的理解和掌握产生式知识表示方法,并且能够通过VC编程语言实现产生式系统的规则库。

本次实验我同样遇到许多问题,我通过自己查阅资料,与同学们讨论,逐步的将自己的问题解决,在这个过程中提高了我的问题解决能力。

最后因为本次实

验只有对数据库有清楚的掌握,同时熟悉规则才能合理编程,因此我在平时的学习中应当加大数据库与数据结构的学习力度,提高自己的编程能力。

实验3:

盲目搜索求解八数码问题

班 级:

智能1501

刘少鹏(33)

06153034

2017-03-3010:

人工智能课内实验3:

盲目搜索求解8数码问题

1、实验目的

(1)熟悉人工智能系统中的问题求解过程;

(2)熟悉状态空间中的盲目搜索策略;

(3)掌握盲目搜索算法,重点是宽度优先搜索和深度优先搜索算法。

2、实验要求

用VC语言编程,采用宽度优先搜索和深度优先搜索方法,求解8数码问

3、实验内容

(1)采用宽度优先算法,运行程序,要求输入初始状态假设给定如下初始状态S0

2 8 3

1 6 4

7 0 5

和目标状态Sg2 1 6

4 0 8

7 5 3

验证程序的输出结果,写出心得体会。

(2)对代码进行修改(选作),实现深度优先搜索求解该问题

提示:

每次选扩展节点时,从数组的最后一个生成的节点开始找,找一个没有被扩展的节点。

这样也需要对节点添加一个是否被扩展过的标志。

4源代码及实验结果截图

(1)实验源代码

#include<

stdlib.h>

#include<

TypedefstructNode{intnum[9];

//棋盘状态

intdeepth;

//派生的深度g(n)

intdiffnum;

//不在位的数目h(n)intvalue;

//耗散值f(n)=g(n)+h(n)

structNode*pre;

structNode*next;

structNode*parent;

}numNode;

/*--endofstructnumNode--*/intorigin[9];

//棋盘初始状态

inttarget[9];

//棋盘目标状态

intnumNode_num,total_step;

numNode*open,*close;

//Open表和Close表

numNode*create_numNode()

{

return(numNode*)malloc(sizeof(numNode));

}

numNode*open_getfirst(numNode*head);

//返回第一项,并从Open表中删除

voidopen_insert(numNode*head,numNode*item);

//向Open表中按序插入新节点

voidclose_append(numNode*head,numNode*item);

//向Close表中插入新节点

intexpand(numNode*item);

//扩展节点

intprint_result(numNode*item);

//打印结果

numNode*copy_numNode(numNode*orgin);

charisNewNode(numNode*open,numNode*close,intnum[9]);

//是否在

Open表或Close表中

voidprint_num(intnum[9]);

//打印棋盘状态

intdiff(intnum[9]);

//求不在位棋子的个数

voidinit();

//初始化,获得棋盘初始状态和目标状态

voidswap(int*a,int*b);

intoperate(intnum[]

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2