ImageVerifierCode 换一换
格式:DOCX , 页数:88 ,大小:611.62KB ,
资源ID:12720900      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12720900.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(人工智能实验报告总.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

人工智能实验报告总.docx

1、人工智能实验报告总人工智能课内实验报告(8次)学 院: 自动化学院 班 级: 智能 姓 名: 学 号: 06 人工智能课内实验报告实验1:猴子摘香蕉问题的VC编程实现学 院: 自动化学院 班 级: 姓 名: 学 号: 日 期 实验1:猴子摘香蕉问题的VC编程实现一、实验目的(1)熟悉谓词逻辑表示法;(2)掌握人工智能谓词逻辑中的经典例子猴子摘香蕉问题的编程实现。二、编程环境VC语言三、问题描述房子里有一只猴子(即机器人),位于a处。在c处上方的天花板上有一串香蕉,猴子想吃,但摘不到。房间的b处还有一个箱子,如果猴子站到箱子上,就可以摸着天花板。如图1所示,对于上述问题,可以通过谓词逻辑表示法来

2、描述知识。要求通过VC语言编程实现猴子摘香蕉问题的求解过程。图1 猴子摘香蕉问题 四、源代码#includeint i;void go(char x,char y)printf(step%d:monkey从%c走到%cn,+i,x,y); void movebox(char x,char y) printf(step%d:monkey把箱子从%c运到%cn,+i,x,y);void onbox() printf(step%d:monkey爬上箱子n,+i);void catchbanana() printf(step%d:monkey摘到香蕉n,+i);int main() char monk

3、ey,box,banana; printf(请用a b c来表示猴子箱子香蕉的位置n); printf(monkeytboxtbanannan); scanf(%c,&monkey); getchar();printf(t);scanf(%c,&box);getchar();printf(tt);scanf(%c,&banana);getchar();printf(操作步骤如下n);if(monkey!=box) go(monkey,box);if(box!=banana) movebox(box,banana);onbox();catchbanana();printf(n);getchar(

4、);五、实验结果相关截图六、心得体会本次实验通过VC+编程实现了经典问题“猴子摘香蕉”。首先我定义了谓词,其次找个体的变量范围,最后确定了问题初始状态与目标状态。然后在程序中设置函数,确定变量,最后显示出猴子摘到香蕉的每个步骤。通过本次实验对用人工智能的知识解决问题有了初步的了解,但由于自身的C语言编程能力较差,实验过程不是很顺利,后来通过向编程能力强的同学请教顺利的完成了本次试验。人工智能课内实验报告实验2:编程实现简单动物识别系统的知识表示学 院: 自动化学院 班 级: 姓 名: 学 号: 日 期: 实验2:编程实现简单动物识别系统的知识表示一、实验目的1.理解和掌握产生式知识表示方法;2

5、.能够通过VC编程语言实现产生式系统的规则库。二、实验内容1.以动物识别系统的产生式规则为例;2.用选定的编程语言建造规则库和综合数据库,并能对它们进行增加、删除和修改操作。三、实验步骤1.确定需要识别的动物及其属性本次实验的简单动物识别系统总共能识别7种动物,即:老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟和信天翁。2.建立识别七种动物识别系统的规则3.选定编程语言并确定综合数据库和规则库结构(1)选用C语言作为编程语言 (2)综合数据库的建立(3)规则库的建立四、程序源代码 #include void birds()/鸟类动物识别 int a; printf(*n); printf(1.长腿,长

6、脖子,黑色,不会飞。n); printf(2.不会飞,会游泳,黑色.n); printf(3.善飞n); printf(4.无上述特征n); printf(*nn); printf(请选择该动物特点:n); scanf(%d, &a); switch(a) case 1: printf(该动物为鸵鸟nn); break; case 2: printf(该动物为企鹅nn); break; case 3:printf(该动物为信天翁nn); break; case 4: printf(我们将会尽快升级系统,谢谢使用。nn); break; default: printf(错误选择!n); brea

7、k; void carnivore()/食肉动物识别 int d; printf(*n); printf(1.黄褐色有暗斑n2.黄褐色有褐色条纹n3.无上述特点n); printf(*nn); printf(请选择该动物特点:n); scanf(%d, &d); switch (d) case 1: printf(该动物为猎豹nn); break; case 2: printf(该动物为老虎nn); break; case 3: printf(我们将会尽快升级系统,谢谢使用。nn); break; default: printf(错误选择!n); break; void ungulate()/

8、哺乳动物识别 int e; printf(*n); printf(1.黑白条纹n2.有暗斑点,且长腿,长脖子n3.无上述特点n); printf(*n); printf(请选择该动物特点:nn); scanf(%d, &e); switch(e) case 1: printf(该动物为斑马nn); break; case 2: printf(该动物为长颈鹿nn); break; case 3: printf(我们将会尽快升级系统,谢谢使用。nn); break; default: printf(错误选择!n); break; int main() while (1) int c; printf

9、(动物专家识别系统nn); printf(*n); printf(1.有羽毛或会飞或会下蛋n2.该动物有蹄或会反刍n3.吃肉或有犬齿n); printf(*nn); printf(请选择该动物特点:n); scanf(%d, &c); switch (c) case 1: printf(该动物属于鸟类n); birds(); break; case 2: printf(该动物属于哺乳类动物n); ungulate(); break; case 3: printf(该动物属于食肉动物n); carnivore(); break; case 4: printf(我们将会尽快升级系统,谢谢使用。n)

10、; break; default: printf(错误选择!n); break; 五、实验结果相关截图六、心得体会 本次试验的重点是综合数据库的建立和规则库的建立,本次实验的问题求解过程是一个不断地从规则库中选取可用规则与综合数据库中的已知事实进行匹配的过程,规则的每一次匹配都会使综合数据库增加新的内容,并朝着问题的解决前进了一步。这就是一个推理过程。通过本次实验我用VC编程实现了人工智能中的经典问题动物识别专家系统,我对用人工智能的知识解决问题有了进一步的了解,但由于我的编程能力较差,不能完整的写出程序,后来通过搜索网上的例题,参考例题,最终完整的完成了本次试验。人工智能课内实验报告实验3:

11、盲目搜索求解8数码问题学 院: 自动化学院 班 级: 姓 名: 学 号: 日 期:实验3:盲目搜索求解8数码问题一、实验目的(1)熟悉人工智能系统中的问题求解过程;(2)熟悉状态空间中的盲目搜索策略;(3)掌握盲目搜索算法,重点是宽度优先搜索和深度优先搜索算法。二、实验要求用VC语言编程,采用宽度优先搜索和深度优先搜索方法,求解8数码问题三、实验内容(1)采用宽度优先算法,运行程序,要求输入初始状态假设给定如下初始状态S0 2 8 31 6 47 0 5和目标状态Sg2 1 64 0 87 5 3验证程序的输出结果,写出心得体会。(2)对代码进行修改(选作),实现深度优先搜索求解该问题提示:每

12、次选扩展节点时,从数组的最后一个生成的节点开始找,找一个没有被扩展的节点。这样也需要对节点添加一个是否被扩展过的标志。四、源代码#include #include #include #define MAX_NODESIZE 362880 /9的阶乘9!=362880typedefstruct node /八数码结构体int a33;/节点状态/空格下标 int i_0; int j_0;/启发信息 int d; /搜索深度 int w; /各棋子不在正确位置的数目 int f; /总代价struct node *father; /指向父节点指针node,*p_node;typedefstruc

13、t list /顺序表结构体p_node aMAX_NODESIZE; long length;list,*p_list;/static int s033=2,8,3,1,6,4,7,0,5; /初始结点static int s033=2,8,3,1,6,4,7,0,5; /初始结点/*2 8 31 6 47 0 5*/static intsg33=2,1,6,4,0,8,7,5,3; /目标结点/*2 1 64 0 87 5 3*/p_node s_0=(p_node) malloc(sizeof(node); /初始节点p_nodes_g=(p_node) malloc(sizeof(no

14、de); /目标节点p_list OPEN =(p_list) malloc (sizeof(list); /OPEN表p_list CLOSED=(p_list) malloc (sizeof(list); /CLOSE表int w(p_node s); /计算各将牌不在正确位置的数目int f(p_node s); /估价函数void init_node(); /初始化void out_node(p_node s); /输出八数码void list_reverse(p_node&p); /将链表逆序void out_list(p_list&l); /输出OPEN表boolsearch_li

15、st(p_list&l,p_node s); /对表进行查找,成功返回truevoid sort_list(p_list&l); /对OPEN表进行排序(按f从小到大)void add_list(p_list&l,p_node s); /加入结点到OPEN表中或CLOSE表中void copy_node(p_node s1,p_node &s2); /生成新的结点(将s2赋值给s1)void delete_list(p_list&l); /从OPEN表或CLOSE中删除结点boolis_equal(p_node s1,p_node s2); /判断两节点是否相等boolup_mov(p_nod

16、e&s); /空格上移booldown_mov(p_node&s); /空格下移boolleft_mov(p_node&s); /空格左移boolright_mov(p_node&s); /空格右移void move(p_node s); /移动父节点并加入未探索表中(扩展结点)int main() init_node(); printf(n程序求解过程如下:n); printf(=nn);while(OPEN-length!=0 & CLOSED-lengtha0; /-把Open表的第一个节点取出放入Closed表,并记该节点为n delete_list(OPEN);if(is_equal

17、(n,s_g) /考察节点n是否为目标节点。若是,则找到了问题的解,成功退出;亦可换成 if(w(n)=0). list_reverse(n); list_reverse(n); list_reverse(n);while(n) printf(第 %d 步:n,n-d+1); out_node(n); n=n-father; break; add_list(CLOSED,n);move(n);/扩展结点n sort_list(OPEN); / out_list(OPEN); if(OPEN-length=0 | CLOSED-length1000) printf(n从初始结点无法到达目标结点!

18、nn); return 0;int f(p_node s) /估价函数 return (s-d+s-w);void out_node(p_node s) /输出八数码 printf(-); printf( x=%d,y=%dn,s-i_0,s-j_0); for (inti=0;i3;i+) for (int j=0;jaij); printf(n); printf(-); printf( d=%d,w=%d; f=%dnnn,s-d,s-w,s-f); void out_list(p_list&l) /输出OPEN表 printf(*n); for(inti=0;ilength;i+) ou

19、t_node(l-ai); printf(*n);int w(p_node s) /计算各棋子不在正确位置的数目 int w=0;for (inti=0;i3;i+) for (int j=0;jaij!=sgij) w+; if (s-a11=sg11) w+=1; return w-1;boolleft_mov(p_node&s) /空格左移 int x=s-i_0,y=s-j_0;if (y=0) return false; int t; t=s-axy; s-axy=s-axy-1; s-axy-1=t;-s-j_0;return true;boolright_mov(p_node&s

20、) /空格右移 int x=s-i_0,y=s-j_0;if (y=2) return false; int t; t=s-axy; s-axy=s-axy+1; s-axy+1=t; +s-j_0; return true;boolup_mov(p_node&s) /空格上移 int x=s-i_0,y=s-j_0; if (x=0) return false; int t; t=s-axy; s-axy=s-ax-1y; s-ax-1y=t; -s-i_0; return true;booldown_mov(p_node&s) /空格下移 int x=s-i_0,y=s-j_0; if (

21、x=2) return false; int t; t=s-axy; s-axy=s-ax+1y; s-ax+1y=t; +s-i_0; return true;boolis_equal(p_node s1,p_node s2) /判断两节点是否相等 for (inti=0;i3;i+) for (int j=0;jaij!=s2-aij) return false; return true;void copy_node(p_node s1,p_node &s2) /生成新的结点(将s2赋值给s1)for (inti=0;i3;i+) for (int j=0;jaij=s2-aij; s1-

22、i_0=s2-i_0; s1-j_0=s2-j_0; s1-d=s2-d; s1-w=s2-w; s1-f=s2-f; s1-father=s2-father;void add_list(p_list&l,p_node s) /加入结点到OPEN表中或CLOSE表中l-al-length+=s;void delete_list(p_list&l) /从OPEN表或CLOSE中删除结点 for (inti=0;ilength;i+) l-ai=l-ai+1; l-length-;boolsearch_list(p_list&l,p_node s)/对表进行查找,成功返回true for(inti

23、=0;ilength;i+) if(is_equal(l-ai,s) return true; return false;void move(p_node s)/移动父节点并加入未探索表中(扩展结点)p_node p1=(p_node) malloc(sizeof(node); p_node p2=(p_node) malloc(sizeof(node); p_node p3=(p_node) malloc(sizeof(node); p_node p4=(p_node) malloc(sizeof(node); copy_node(p1,s); copy_node(p2,s); copy_n

24、ode(p3,s); copy_node(p4,s); p1-father=s; p2-father=s; p3-father=s; p4-father=s;/如果能够移动且在CLOSED表中不存在,则加入OPEN表中 if(left_mov(p1) & !is_equal(p1,p1-father) & !search_list(CLOSED,p1) & !search_list(OPEN,p1) add_list(OPEN,p1); p1-d+=1; p1-w=w(p1); p1-f=f(p1); else free(p1); if(right_mov(p2) & !is_equal(p2,p2-father) & !search_list(CLOSED,p2) & !search_list(OPEN,p2) add_l

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

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