注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

挥洒蓝天白云的孩子

 
 
 

日志

 
 

基于新平台的Home规划思想  

2013-08-14 21:16:45|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  新的平台总算是稳定了,思想还是不太好,对于以前所提出的算法,太过于复杂,这根本不是我们本科所可以解决的,但是对于完全的没有算法执行,总觉得太没有意思。真正的思想还是没有出来,实现的方法也不知道是不是可以写出来,暂时把我的思想记下来,完整的整理一下,让往后的开发方便一点。特此感谢余文俊将底层写出来,并留出适量的接口供我们使用,这个思想真的是一个很有创意。
  关于余文俊的高层思想:将得到的任务序列直接提取并执行,知道执行完,思想似乎没有什么问题,但是我认为单纯的这么想是没有方法优化的。第一就是对于局部约束没有良好的提出,似的就算任务执行完成,约束没有维护,这是扣很多分的。第二是单纯的这么走对于下一届的人员开发是没有任何帮助的,他们只能另辟蹊径再次重写。所以,一个组有两个算法是值得考虑的。
  我的想法很简答,尽最大的努力的减少对动作Move的使用,也就是减少减分最大动作的使用。再次我能想到的待解决问题又:怎样先前减少Move动作的使用;怎样在带到目的要求的同时解决约束问题;所提供的接口是否够用;怎样设计?需要几个变量,什么样的中间方法?
   说明:
  减少Move的使用是相对的,简单来说对于有些任务来说Move是不可减少的,比如1到2最少要一次,而怎样让它变成只有一次。比如任务把2上的罐子放到3上,再把2上的辈子给人类(1)。对于顺序执行那么就是要执行动作序列:
Move(2);PickUp(can);Move(3);PutDown(can);Move(2);PickUp(cup);Move(1);PutDown(cup);
但是谁都可以看得出来这么走Move()会少一点:
Move(2);PickUp(cup);ToPlate(cup);PickUp(can);Move(3);PutDown(can);Move(1);FromPlate(can);PutDown(cup);
从动作序列1和2对比我们就知道通过2虽然做做了一个动作,但是却是多得了两分。
  实现:
  1.从上面的序列看出来,想要得到这个方法,其实只要将其id进行对比即可,只要是id相同的就放在一起执行(先进行判断)。这里有一个难点:对于所有的动作序列都是存储在容器类Vector离得,提取是一方面,但是怎么样才能算是合理执行?
这是最简答的方法:加入两个被操作物体的location相同,将他两在vector_ins的位置设置为相邻。也就是添加了一个检测方法。这样的话可以很简单的实现我的方法同时是实现的过程不必那么的繁琐。
        2.最大的难点是在执行动作时维护约束。首先肯定是将约束单独的提取出来,然后我觉得应该是将约束的条件进行对比,这里肯定会有一个条件,一个约束条件加入和我们任务里的东西相同,那么任务里的物体肯定可以替代。一旦对比出相同的物体,那就以这个物体的相同Sort来寻找另一个物体来替代。这里的替代不是传统意义上的替代,虽然相同物体的很多性质相同,但是id使他们的本质不同,所以我们需要用这个物体来替代与他意义上相同的物体,再对那个物体操作。
   目前只能想到这些,方法还没有具体的实现出来,等在中间遇到问题在更新吧。
  评论这张
 
阅读(193)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017