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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

人工智能实验报告总Word文档格式.docx

1、,+i);void catchbanana()monkey摘到香蕉nint main() char monkey,box,banana;请用a b c来表示猴子箱子香蕉的位置n);monkeytboxtbanannan scanf(%c,&monkey); getchar();tscanf(box);getchar();ttbanana);操作步骤如下nif(monkey!=box) go(monkey,box);if(box!=banana) movebox(box,banana);onbox();catchbanana();n五、实验结果相关截图六、心得体会本次实验通过VC+编程实现了经典

2、问题“猴子摘香蕉”。首先我定义了谓词,其次找个体的变量范围,最后确定了问题初始状态与目标状态。然后在程序中设置函数,确定变量,最后显示出猴子摘到香蕉的每个步骤。通过本次实验对用人工智能的知识解决问题有了初步的了解,但由于自身的C语言编程能力较差,实验过程不是很顺利,后来通过向编程能力强的同学请教顺利的完成了本次试验。实验2:编程实现简单动物识别系统的知识表示学 院: 自动化学院 日 期:1.理解和掌握产生式知识表示方法;2.能够通过VC编程语言实现产生式系统的规则库。二、实验内容1.以动物识别系统的产生式规则为例;2.用选定的编程语言建造规则库和综合数据库,并能对它们进行增加、删除和修改操作。

3、三、实验步骤1.确定需要识别的动物及其属性本次实验的简单动物识别系统总共能识别7种动物,即:老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟和信天翁。2.建立识别七种动物识别系统的规则3.选定编程语言并确定综合数据库和规则库结构(1)选用C语言作为编程语言 (2)综合数据库的建立(3)规则库的建立四、程序源代码 #include void birds()/鸟类动物识别 int a;*n1.长腿,长脖子,黑色,不会飞。2.不会飞,会游泳,黑色.n3.善飞n4.无上述特征n*nn请选择该动物特点:%d, &a); switch(a) case 1:该动物为鸵鸟nn break; case 2:企鹅 case

4、 3:信天翁 case 4:我们将会尽快升级系统,谢谢使用。 default:错误选择! void carnivore()/食肉动物识别 int d;1.黄褐色有暗斑n2.黄褐色有褐色条纹n3.无上述特点nd); switch (d) 猎豹老虎void ungulate()/哺乳动物识别 int e;1.黑白条纹n2.有暗斑点,且长腿,长脖子n3.无上述特点ne); switch(e) 斑马长颈鹿int main() while (1) int c; printf(动物专家识别系统nn1.有羽毛或会飞或会下蛋n2.该动物有蹄或会反刍n3.吃肉或有犬齿n scanf(c); switch (c)

5、 case 1:该动物属于鸟类 birds(); break; case 2:哺乳类动物 ungulate(); case 3:食肉动物 carnivore(); case 4: default: 本次试验的重点是综合数据库的建立和规则库的建立,本次实验的问题求解过程是一个不断地从规则库中选取可用规则与综合数据库中的已知事实进行匹配的过程,规则的每一次匹配都会使综合数据库增加新的内容,并朝着问题的解决前进了一步。这就是一个推理过程。通过本次实验我用VC编程实现了人工智能中的经典问题动物识别专家系统,我对用人工智能的知识解决问题有了进一步的了解,但由于我的编程能力较差,不能完整的写出程序,后来通

6、过搜索网上的例题,参考例题,最终完整的完成了本次试验。实验3:盲目搜索求解8数码问题(1)熟悉人工智能系统中的问题求解过程;(2)熟悉状态空间中的盲目搜索策略;(3)掌握盲目搜索算法,重点是宽度优先搜索和深度优先搜索算法。二、实验要求用VC语言编程,采用宽度优先搜索和深度优先搜索方法,求解8数码问题三、实验内容(1)采用宽度优先算法,运行程序,要求输入初始状态假设给定如下初始状态S0 2 8 31 6 47 0 5和目标状态Sg2 1 64 0 87 5 3验证程序的输出结果,写出心得体会。(2)对代码进行修改(选作),实现深度优先搜索求解该问题提示:每次选扩展节点时,从数组的最后一个生成的节

7、点开始找,找一个没有被扩展的节点。这样也需要对节点添加一个是否被扩展过的标志。#include math.h#define MAX_NODESIZE 362880 /9的阶乘9!=362880typedefstruct node /八数码结构体int a33;/节点状态/空格下标 int i_0; int j_0;/启发信息 /搜索深度 int w; /各棋子不在正确位置的数目 int f; /总代价struct node *father; /指向父节点指针node,*p_node;typedefstruct list /顺序表结构体p_node aMAX_NODESIZE; long len

8、gth;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;/*/static intsg33=2,1,6,4,0,8,7,5,3; /目标结点p_node s_0=(p_node) malloc(sizeof(node); /初始节点p_nodes_g=(p_node) malloc(sizeof(node); /目标节点p_list OPEN =(p_list) malloc (sizeof(list); /OPEN表p_list CLOSED=(p_list) ma

9、lloc (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_list(p_list&l,p_node s); /对表进行查找,成功返回truevoid sort_list(p_list& /对OPEN表进行排序(按f从小到大)void

10、 add_list(p_list& /加入结点到OPEN表中或CLOSE表中void copy_node(p_node s1,p_node &s2); /生成新的结点(将s2赋值给s1)void delete_list(p_list& /从OPEN表或CLOSE中删除结点boolis_equal(p_node s1,p_node s2); /判断两节点是否相等boolup_mov(p_node&s); /空格上移booldown_mov(p_node& /空格下移boolleft_mov(p_node& /空格左移boolright_mov(p_node& /空格右移void move(p_n

11、ode s); /移动父节点并加入未探索表中(扩展结点) init_node();n程序求解过程如下:=nnwhile(OPEN-length!=0 & CLOSED-lengtha0; /-把Open表的第一个节点取出放入Closed表,并记该节点为n delete_list(OPEN);if(is_equal(n,s_g) /考察节点n是否为目标节点。若是,则找到了问题的解,成功退出;亦可换成 if(w(n)=0). list_reverse(n);while(n) printf(第 %d 步:,n-d+1); out_node(n); n=n-father; break; add_lis

12、t(CLOSED,n);move(n);/扩展结点n sort_list(OPEN); / out_list(OPEN); if(OPEN-length=0 | CLOSED-length1000)n从初始结点无法到达目标结点! return 0;int f(p_node s) /估价函数 return (s-d+s-w);void out_node(p_node s) /输出八数码- x=%d,y=%dn,s-i_0,s-j_0); for (inti=0;i3;i+) for (int j=0;jw,s-f);l) /输出OPEN表*n for(inti=0;l-length; out_n

13、ode(l-ai);int w(p_node s) /计算各棋子不在正确位置的数目 int w=0;for (inti=0; if (s-aij!=sgij) w+; if (s-a11=sg11) w+=1; return w-1;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;axy-1=t;-s-return true;s) /空格右移if (y=2)axy+1;axy+1=t; +s- return true;s) /空格上移 if (x=0)ax-1y;ax-1y=t;

14、 -s-i_0;s) /空格下移 if (x=2)ax+1y;ax+1y=t;boolis_equal(p_node s1,p_node s2) /判断两节点是否相等 if (s1-=s2-aij) return false;s2) /生成新的结点(将s2赋值给s1) s1-aij=s2-aij; s1-i_0=s2- s1-j_0=s2-d=s2-d;w=s2-w;f=s2-f;father=s2-l,p_node s) /加入结点到OPEN表中或CLOSE表中al-length+=s;l) /从OPEN表或CLOSE中删除结点 l-ai=l-ai+1; l-length-;l,p_node

15、 s)/对表进行查找,成功返回true 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); co

16、py_node(p3,s); copy_node(p4,s); p1-father=s; p2- p3- p4-/如果能够移动且在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;w=w(p1);f=f(p1); else free(p1); if(right_mov(p2) &is_equal(p2,p2-search_list(CLOSED,p2) &search_list(OPEN,p2) add_l

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

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