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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

猴子摘香蕉实验报告含代码.docx

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

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

3、NA(banana)要达到的目标状态为:Sg:AT(monkey,box)HOLD(monkey,banana)ON(box,b)CLEAR(ceiling)CLEAR(c)BOX(box)BANANA(banana)3.从初始状态到目标状态的转化, 猴子需要完成一系列操作, 定义操作类谓词表示其动作。WALK(m,n):猴子从m走到n处,个体域:m,na,b,c;CARRY(s,r):猴子在r处拿到s,个体域:rc,ceiling,sbox,banana;CLIMB(u,b):猴子在b处爬上u;4.5.按照行动计划, 一步步进行状态替换, 直至目标状态。AT(monkey,a)EMPTY(m

4、onkey)ON(box,c)ON(banana,ceiling)CLEAR(b)BOX(box)BANANA(banana)AT(monkey,c)EMPTY(monkey)ON(box,c)ON(banana,ceiling)CLEAR(b)BOX(box)BANANA(banana)AT(monkey,c)HOLD(monkey,box)ON(banana,ceiling)CLEAR(b)CLEAR(c)BOX(box)BANANA(banana)AT(monkey,b)HOLD(monkey,box)ON(banana,ceiling)CLEAR(b)CLEAR(c)BOX(box)B

5、ANANA(banana)AT(monkey,box)EMPTY(monkey)ON(box,b)ON(banana,ceiling)CLEAR(c)BOX(box)BANANA(banana)AT(monkey,box)HOLD(monkey,banana)ON(box,b)CLEAR(ceiling)CLEAR(c)BOX(box)BANANA(banana)(目标得解)猴子行动的规则序列是:WALK(a,c)CARRY(c,box)WALK(c,b)CLIMB(box,b)CARRY(banana,ceiling)在上述过程中,我们应该注意,当猴子执行某一个操作之前,需要检查当前状态是否

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

7、int monbox; /*-1: monkey on the box;1: monkey the box;*/;struct State States 150;char* routesave150;/*function monkeygoto,it makes the monkey goto the other place*/void monkeygoto(int b,int i) int a; a=b; if (a=-1) routesavei=Monkey go to A; Statesi+1=Statesi; Statesi+1.monkey=-1; else if(a=0) route

8、savei=Monkey go to B; Statesi+1=Statesi; Statesi+1.monkey=0; else if(a=1) routesavei=Monkey go to C; Statesi+1=Statesi; Statesi+1.monkey=1; else printf(parameter is wrong); /*end function monkeyygoto*/*function movebox,the monkey move the box to the other place*/void movebox(int a,int i) int B; B=a;

9、 if(B=-1) routesavei=monkey move box to A; Statesi+1=Statesi; Statesi+1.monkey=-1; Statesi+1.box=-1; else if(B=0) routesavei = monkey move box to B; Statesi+1=Statesi; Statesi+1.monkey=0; Statesi+1.box=0; else if(B=1) routesavei = monkey move box to C; Statesi+1=Statesi; Statesi+1.monkey=1; Statesi+

10、1.box=1; else printf(parameter is wrong); /*end function movebox*/*function climbonto,the monkey climb onto the box*/void climbonto(int i) routesavei=Monkey climb onto the box; Statesi+1=Statesi; Statesi+1.monbox=1;/*function climbdown,monkey climb down from the box*/void climbdown(int i) routesavei

11、=Monkey climb down from the box; Statesi+1=Statesi; Statesi+1.monbox=-1;/*function reach,if the monkey,box,and banana are at the same place,the monkey reach banana*/void reach(int i) routesavei=Monkey reach the banana;/*output the solution to the problem*/void showSolution(int i) int c; printf (%s n

12、, Result to problem:); for(c=0; c=150) printf(%s n, steplength reached 150,have problem ); return; for (c=0; ci; c+) /*if the current state is same to previous,retrospect*/ if(Statesc.monkey=Statesi.monkey&Statesc.box=Statesi.box&Statesc.banana=Statesi.banana&Statesc.monbox=Statesi.monbox) return; i

13、f(Statesi.monbox=1&Statesi.monkey=0&Statesi.banana=0&Statesi.box=0) showSolution(i); printf(Press any key to continue n); getchar();/*to save screen for user,press any key to continue*/ return; j=i+1; if(Statesi.monkey=0) if(Statesi.box=0) if(Statesi.monbox=-1) climbonto(i); reach(i+1); nextStep(j);

14、 /*monkeygoto(-1,i); nextStep(j); monkeygoto(0,i); nextStep(j); movebox(-1,i); nextStep(j); movebox(0,i); nextStep(j);*/ else reach(i+1); nextStep(j); /*climbdown(i); nextStep(j);*/ else if(Statesi.box=1) /*monkeygoto(-1,i); nextStep(j);*/ monkeygoto(1,i); nextStep(j); movebox(0,i); nextStep(j); cli

15、mbonto(i); reach(i+1); nextStep(j); else /*box=-1*/ monkeygoto(-1,i); nextStep(j); movebox(0,i); nextStep(j); climbonto(i); reach(i+1); nextStep(j); /*end if*/ if(Statesi.monkey=-1) if(Statesi.box=-1) if(Statesi.monbox=-1) movebox(0,i); nextStep(j); climbonto(i); reach(i+1); nextStep(j); else climbd

16、own(i); nextStep(j); movebox(0,i); nextStep(j); climbonto(i); reach(i+1); nextStep(j); else if(Statesi.box=0) monkeygoto(0,i); nextStep(j); climbonto(i); reach(i+1); nextStep(j); else monkeygoto(1,i); nextStep(j); movebox(0,i); nextStep(j); climbonto(i); reach(i+1); nextStep(j); /*end if*/ if(States

17、i.monkey=1) if (Statesi.box=1) if(Statesi.monbox=-1) movebox(0,i); nextStep(j); climbonto(i); reach(i+1); nextStep(j); else climbdown(i); nextStep(j); movebox(0,i); nextStep(j); climbonto(i); reach(i+1); nextStep(j); else if(Statesi.box=-1) monkeygoto(-1,i); nextStep(j); movebox(0,i); nextStep(j); movebox(0,i); nextStep(j); climbonto(i); reach(i+1); nextStep(j); else monkeygoto(0,i); nextStep(j); movebox(0,i); nextStep(j); climbonto(i); reach(i+1); nextStep(j); /*end if*/*end nextStep*/int main() States0.monkey=-1; States0.box=1; States0.banana=0; States0.monbox=-1; nextStep(0);五、实验截图

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

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