全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
机器人搬箱子问题设在房内c处有一机器人,在a及b处各有一张桌子,a桌子上有一个箱子。为了让机器人从c处出发把箱子从a处拿到b处的桌上,然后再回到c处,需要制定相应的行动规划。现在用一阶为此逻辑来描述机器人的行动过程。相关谓词定义TABLE(x):x是桌子EMPTY(y):y手中是空的AT(y,z):y在z附近HOLDS(y,w):y拿着wON(w,x):w在x上面问题初始状态TABLE(a)TABLE(b)EMPTY(robot)AT(robot,c)ON(box,a)问题目标状态TABLE(a)TABLE(b)EMPTY(robot)AT(y,z)ON(box,a)任务执行过程初始状态机器人在c处;机器人从c移动到a;在a处拿起了箱子;从a移动到b;在b处放下箱子;从b回到c。问题实现思路定义3个变量描述问题状态,robot_site表示机器人位置,取值为a,b,c;is_robot_block描述机器人手中是否拿着箱子,取值为Y、N;block_site描述箱子的位置取值为a,b。定义函数改变问题状态。运行结果实现程序#include #include /* author lizm */ / 描述系统状态 typedef struct Problemchar robot_site; /描述机器人的位置 char is_robot_block; / 机器人手中是否拿着箱子 char block_site; / 箱子所在位置 SProblem;/ 初始化系统初始状态和目标状态 int init_status(SProblem *obj, SProblem *p, int *status_number)obj- robot_site = c;obj- is_robot_block = N;obj- block_site = b;p- robot_site = c;p- is_robot_block = N;p- block_site = a;printf(状态%d:n机器人当前所在位置: %c, 机器人是否拿着箱子:%c,箱子所在位置:%c。nn, *status_number, p-robot_site, p-is_robot_block, p-block_site);*status_number += 1;/ 机器人移动 int robot_move(SProblem *p, char robot_object_site, int *status_number)char temp_robot_site = p- robot_site;p- robot_site = robot_object_site;printf(状态%d:n机器人从%c移动到了%c。nn, *status_number,temp_robot_site, p- robot_site);*status_number += 1;/ 机器人搬起箱子 int pick_up_block(SProblem *p, char is_robot_block, char block_site, int *status_number)p- is_robot_block = is_robot_block;p- block_site = block_site;if(p- is_robot_block = Y)printf(状态%d:n机器人拿起了箱子。nn, *status_number);*status_number += 1;/ 机器人放下箱子 int set_down_block(SProblem *p, char is_robot_block, char block_site, int *status_number)p- is_robot_block = is_robot_block;p- block_site = block_site;if(p- is_robot_block = N)printf(状态%d:n机器人将箱子放在了%c。nn, *status_number, p- block_site);*status_number += 1;/ 判断机器人是否完成任务 int judeg_obj(const SProblem obj, const SProblem p)if(obj.robot_site = p.robot_site & obj.is_robot_block = p.is_robot_block & obj.block_site = p.block_site)printf(机器人完成任务。n);int main(int argc, char *argv) SProblem sp;SProblem obj;int status_number = 1;char robot_object_site = a;char block_site = r;char is_robot_block;/ 状态1:机器人位置c 是否拿着箱子N 箱子位置a init_status(&obj, &sp, &status_number); / 状态2:机器人位置a 是否拿着箱子N 箱子位置a robot_move(&sp, robot_object_site, &status_number);block_site = r;is_robot_block = Y;/ 状态3:机器人位置a 是否拿着箱子Y 箱子位置robot pick_up_block(&sp, is_robot_block, block_site, &status_number); robot_object_site = b;/ 状态4:机器人位置b 是否拿着箱子Y 箱子位置robot robot_move(&sp, robot_object_site, &status_number);block_site = b;is_robot_block = N;/ 状态5:机器人位置b 是否拿着箱子N 箱子位置b set_down_block(&sp, is_robot_block, block_site, &status_number); robot_obj
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广东梅州市大埔县总工会招聘社会化工会工作者2人备考题库及参考答案详解1套
- 2026秋季浙江杭州银行杭州地区直属支行校园招聘备考题库附答案详解(培优a卷)
- 2025年陕西岳文投资有限责任公司社会招聘备考考点试题及答案解析
- 2025宁波市鄞州区五乡镇人民政府代招村工作人员2人备考题库及答案详解(名校卷)
- 2026中国工商银行河南省分行校园招聘580人备考题库(含答案详解)
- 2026中国民生银行宁波分行全球校园招聘备考题库(含答案详解)
- 2026年陕西省选调生招录备考题库(面向华东师范大学)附答案详解(巩固)
- 2026“梦工场”招商银行哈尔滨分行寒假实习生招聘备考题库含答案详解(基础题)
- 2025重庆巴南区人民政府一品街道办事处公益性岗位招聘2人备考题库完整答案详解
- 2025辽宁沈阳市沈河区总工会招聘工会社会工作者岗位派遣制人员9人备考题库附答案详解(基础题)
- JT-T-496-2018公路地下通信管道高密度聚乙烯硅芯塑料管
- 智能桥梁运维与管理平台
- 食材配送投标方案技术标
- 人工关节置换术后感染的预防策略
- 庭院工程施工报价参考模板
- 微机原理课程课件
- 部编版六年级语文上册课外阅读试题及答案
- 回弹仪使用前及使用后率定记录
- 鲁教版五四制八年级上册英语专项训练-综合填空专训
- 人工智能驱动的智能健康监测与远程医疗系统投资方案
- 员工信息登记表(标准版)
评论
0/150
提交评论