猴子摘香蕉实验报告含代码_第1页
猴子摘香蕉实验报告含代码_第2页
猴子摘香蕉实验报告含代码_第3页
猴子摘香蕉实验报告含代码_第4页
猴子摘香蕉实验报告含代码_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、华中科技大学人工智能与模式识别实验报告院 系: 电子与信息工程系班 级:姓 名:同组人:指导老师:电 话: 邮 箱:日 期:2013年12月24日、实验内容利用一阶谓词逻辑求解猴子摘香蕉问题:房内有一个猴子,一个箱子,天花板上挂了一串香蕉,其位置如图所示,猴子为了拿到香蕉,它必须把箱子搬到香蕉下面,然后再爬到箱子上。请定义必要的谓词,列出问题的初始化状态(即下图所示状态) ,目标状态(猴子拿到了香蕉,站在箱子上,箱子位于位置b)。(附加:从初始状态到目标状态的谓词演算过程。)二、实验平台VC6.0三、实验分析1. 定义描述环境状态的谓词。AT(x,w) : x 在 t 处,个体域:x?monk

2、ey ,w?a,b,c,box;HOLD(x,t) : x 手中拿着 t,个体域:t?box,ba nan a;EMPTY(x) : x手中是空的;ON(t,y) : t 在 y 处,个体域:y?b,c,ceiling;CLEAR(y) : y上是空的;BOX(u) : u是箱子,个体域:u?box;BANANA(v) : v 是香蕉,个体域:v?ba nan a;2. 使用谓词、连结词、量词来表示环境状态。问题的初始状态可表示为:So: AT(monkey,a)?EMPTY(monkey)?ON(box,c)?ON(banana,ceiling)?CLEAR(b)?BOX(box)?BANA

3、NA(ba nan a)要达到的目标状态为:Sg: AT(monkey,box)?HOLD(monkey,banana)?ON(box,b)?CLEAR(ceiling)?CLEAR(c)? BOX(box)?BANANA(ba nana)3. 从初始状态到目标状态的转化,猴子需要完成一系列操作,定义操作类谓词表示其动作。WALK(m,n):猴子从 m走到n处,个体域:m,n?a,b,c;CARR Y(s,r):猴子在 r 处拿到 s,个体域:r?c,ceili ng ,s?box,ba nan a;CLIMB(u,b):猴子在b处爬上u;这3个操作也可分别用条件和动作来表示。条件直接用谓词公

4、式表示,是为完成相应操作所必须具备的条件;当条件中的事实使其均为真时,则可激活操作规则,于是可执行该规则中的动作部分。动作通过前后状态的变化表示,即通过从动作前删除或增加谓词公式来描述动作后的状态。WALK(m,n):猴子从m走到n处条件:AT(monkey,m)动作:删除:AT (monkey m)增加:AT (monkey n)CARRY(s,r):猴子在r处拿到s条件:AT(mo nkey,r)?EMPT Y(mo nkey)?ON(s,r)?BOX(box)?BANANA(ba nana)动作.:删除:EMPTY(monkeaON(s,r):增加:HOLD(monkeys)CLEAR(

5、r)CLIMB(u,b):猴子在b处爬上u条件:AT(mo nkey,b)?HOLD(mo nkey,u)?CLEAR(b)?BOX(box)?BANANA(ba nana)动作:删除:AT(monkeyb)入 HOLD(monkeyu) CLEAR(c) 增加:AT(monkeyu)EMPTY(monke抚ON(u,c)4.按照行动计划,一步步进行状态替换,直至目标状态。AT(mo nkey,a)?EMPT Y(mo nkey)?ON(box,c)?ON(ba nan a,ceili ng)?CLEAR(b)?BOX(box)?BANANA(ba nan a)AT(mo nkey,c)?EM

6、PT Y(mo nkey)?ON(box,c)?ON(ba nan a,ceili ng)?CLEAR(b)?BOX(box)?BANANA(ba nan a)AT(mo nkey,c)?HOLD(mo nkey,box)?ON(ba nan a,ceili ng)?CLEAR(b)?CLEAR(c)?BOX(box)?BANANA(ba nan a)AT(mo nkey,b)?HOLD(mo nkey,box)?ON(ba nan a,ceili ng)?CLEAR(b)?CLEAR(c)?BOX(box)?BANANA(ba nan a)AT(mo nkey,box)?EMPT Y(mo

7、nkey)?ON(box,b)?ON(ba nan a,ceili ng)?CLEAR(c)?BOX(box)?BANANA(ba nan a)AT(mo nkey,box)?HOLD(mo nkey,ba nan a)?ON(box,b)?CLEAR(ceili ng)?CLEAR(c)?BOX(box)?BANANA(ba nana)(目标得解)猴子行动的规则序列是:WALK(a,c)f CARRY(c,box尸WALK(c,b) CLIMB(box,b)CARR Y(ba nan a,ceili ng)在上述过程中,我们应该注意,当猴子执行某一个操作之前,需要检查当前状态是否可使所要求的

8、条件得到满足,即证明当前状态是否蕴涵操作所要求的状态的过程。在行动过程中,检查条件的满足性后才进行变量的代换。代入新条件后的新状态如果是目标状态,则问题解决;否 则看是否满足下面的操作,如果不满足或即使满足却又回到了原来的状态,那么代入无效。四、源代码#i nclude struct Stateint mo nkey; /*-1:Mo nkey at 代0: Mo nkey at B;1:Mo nkey at C;*/int box; /*-1:box at A;0:box at B;1:box at C;*/int banana; /*Ba nana at B,Ba nan a=0*/int

9、 mon box; /*-1: mon key on the box;1: mon keythe box;*/;struct State States 150;char* routesave150;/*fu ncti on mon keygoto,it makes the mon key goto the other place*/ void mon keygoto(i nt b,i nt i)int a;a=b;if (a=-1)routesavei= Mon key go to A;Statesi+1=Statesi;Statesi+1.mo nkey=-1;else if(a=0)rou

10、tesavei= Mon key go to B;Statesi+1=Statesi;Statesi+1.mo nkey=0;else if(a=1)routesavei= Mon key go to C;Statesi+1=Statesi;Statesi+1.mo nkey=1;elseprin tf(parameter is wron g);/*e nd fun cti on mon keyygoto*/*fu ncti on movebox,the mon key move the box to the other place*/ void movebox(i nt a,i nt i)i

11、nt B;B=a;if(B=-1)routesavei二mon key move box to A;Statesi+1=Statesi;Statesi+1.mo nkey=-1;Statesi+1.box=-1;else if(B=0)routesavei = mon key move box to B;Statesi+1=Statesi;Statesi+1.mo nkey=0;Statesi+1.box=0;else if(B=1)routesavei = mon key move box to C;Statesi+1=Statesi;Statesi+1.mo nkey=1;Statesi+

12、1.box=1;elseprin tf(parameter is wron g);/*e nd fun cti on movebox*/*fu ncti on climb on to,the mon key climb onto the box*/void climb on to(i nt i)routesavei= Mon key climb onto the box;Statesi+1=Statesi;Statesi+1.m on box=1;/*fu ncti on climbdow n,mon key climb dow n from the box*/void climbdow n(

13、i nt i)routesavei= Mon key climb dow n from the box;Statesi+1=Statesi;Statesi+1.m on box=-1;reach/*fu ncti on reach,if the mon key,box,a nd banana are at the same place,the mon key banan a*/void reach(i nt i)routesavei二Mon key reach the banan a;/*output the soluti on to the problem*/void showSoluti

14、on (i nt i)in t c;printf (%s n, Result to problem:);for(c=0; c=150)prin tf(%sn, steple ngth reached 150,have problem );return;for (c=0; ci; c+) /*if the curre nt state is same to previous,retrospect*/if(Statesc.m on key=Statesi.m onkey&Statesc.box=Statesi.box&Statesc.ba nana =Statesi.ba nana&Statesc

15、.m on box=Statesi.m on box)return;if(Statesi.mo nbox=1 &Statesi.mo nkey=0&Statesi.ba nan a=0&Statesi.box=0)showSoluti on (i);prin tf(Press any key to con ti nue n);getchar();/*to save scree n for user,press any key to continu e*/ return;j=i+1;if(Statesi.m on key=0)if(Statesi.box=0)if(Statesi.m on bo

16、x=-1) climb on to(i); reach(i+1); nextStep(j);/*mon keygoto(-1,i); nextStep(j);mon keygoto(0,i); nextStep(j); movebox(-1,i); nextStep(j); movebox(0,i); n extStep(j);*/ elsereach(i+1); nextStep(j); /*climbdow n(i); n extStep(j);*/else if(Statesi.box=1)/*mon keygoto(-1,i); n extStep(j);*/ mon keygoto(

17、1,i); nextStep(j);movebox(0,i); nextStep(j);climb on to(i); reach(i+1); nextStep(j);else /*box=-1*/mon keygoto(-1,i); nextStep(j); movebox(0,i); nextStep(j);climb on to(i); reach(i+1); nextStep(j);/*e nd if*/if(Statesi.m on key=-1)if(Statesi.box=-1)if(Statesi.m on box=-1) movebox(0,i); nextStep(j);

18、climb on to(i); reach(i+1); nextStep(j); elseclimbdow n(i); nextStep(j); movebox(0,i); nextStep(j); climb on to(i); reach(i+1); nextStep(j);else if(Statesi.box=0)mon keygoto(0,i); nextStep(j); climb on to(i); reach(i+1); nextStep(j); elsemon keygoto(1,i); nextStep(j); movebox(0,i); nextStep(j); climb on to(i); reach(i+1); nextStep(j);/*e nd if*/if(States

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论