模式匹配瞄准算法设计.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
模式匹配瞄准算法设计

模式匹配瞄准 我们知道比较有战斗力的直线提前量和圆周运动瞄准算法,都是针对固定模式的瞄准算法,比如直线提前量算法,如果对手不是走直线,就打不准;而圆周运动算法是针对做圆周运动的机器人的,如果对手走S型路线呢?我们是不是还要设计一套S行路线的瞄准算法呢?好,就算我们设计出来了,遇到走三角形路线的呢?是不是又要设计一套新的算法呢?就算你都设计出来了,如果对手的运动模式不断变化,一会儿做圆周,一会儿做S型,你该怎么办,使用圆周算法瞄准还是S型算法瞄准?显然,我们原来的思路出现了局限性。这里我将要介绍一种技术,能让我们的机器人自己识别对手的运动模式,然后从对手的模式推导出瞄准点,不管对手怎样变,只要有规律,我们都能打得很准。这可以说是一种具有学习能力的算法了,学习完本文后,实际上你已踏入了人工智能的领域。 学习目标 理解模式匹配的基本原理。 理解例子中的应用原理。 了解机器人学习的概念。 任务 实现模式匹配瞄准算法。 实现任务 可能你现在对模式匹配算法还非常陌生,不用担心,下面会先介绍什么是模式匹配,然后再应用到机器人瞄准策略中。 1. 问题分析 模式匹配的基本概念是记录并寻找相似的样本,在AI-CODE中,样本一般情况就是指对手的运动状态,也就是说寻找相似的运动状态。我这里举个例子,比如对手做圆周运动5周后又做200个距离的直线运动,然后又开始做圆周运动,在做完4周之后你会预测它紧接着会怎样运动?按照我们常规的经验来分析,我们会推测它会继续作圆周运动1周,然后做直线运动。为什么你我会做出这样的推断?首先,因为我们记住了它原来的运动,它原来是运动5个圆周然后200距离直线,我们对此记得清清楚楚,其次我们做了比较,找出了最匹配的地方,我们把这4个圆周运动,看做它原来做5个圆周运动的开始4个,所以我们推断它还会按照原来的规律继续下去,如果对手真是有这样的规律,那么我们将击中它。模式匹配算法也正是采用了这两个步骤实现了像你我一样的推断能力,而且利用计算机强记忆能力和快速计算能力,更能做出比你我更精确的推断。也许有人要说了,刚才那个例子,如果机器人不是按照那个规律运动的,第一次做圆周5次然后直线,第二次就做圆周4次然后就直线了呢,很有可能有这样的机器人啊,那么我们的分析就错啦。我这里回答你,是的,我们的分析就错了,但是随着我们记录的更多,我们会慢慢的正确起来,第一次5周,第二次4周的这种变化也是一种规律,只要我们记录的足够多,分析的足够多,下一次它如果再出现这样的情况,我们就知道了。也就是说,只要对手的运动有一定规律,我们就能分析出来,打中它。实际上通常的机器人运动都是有规律的,只是有的很明显,变化少,有的不很明显,变化多,很显然对于前者,模式匹配算法会打的很好,对于后者,可能效果略差。不管怎么样,这都是瞄准算法的一个大突破,现在我们一起来实现了这样一个机器人,你会看到它的强大。 2. 算法设计 根据刚才的分析,我们知道模式匹配算法主要是两个步骤,记录样本和比较样本(也就是寻找相似的样本,即匹配的意思,样本即模式的意思,模式匹配由此得名)。实际上算法大体可以说就是三步,如下图所示: 整体思路其实很简单,就那样三个步骤,我们在脑海里结合我们人类自己分析对手运动规律的方法很好理解这三个步骤。但是要在机器人程序中实现这样的功能,可能就要费一番功夫了。我们不要害怕,只要认真思考,总会有答案。不过这里我们的思考方法就很重要了,我们要倒着顺序思考,理由很简单,因为我们最终的目的是要很好的击中对手,而计算对手未来位置的部分是最后一个步骤。因此我们先从这个部分开始思考,根据历史中的一系列对手状态推断对手的未来位置,我们最好采用什么样的方法?回顾一下圆周瞄准那一章的把圆周运动精确为实际的多边形的图,那就是一个轨迹,我们根据对手的转动速度算出对手的方向再结合对手运动速度就能一个单位时间一个单位时间的推出(迭代)对手的未来位置(如果忘记那章的内容,请详细阅读那章后再继续读此章内容)。也就是说,我们需要对手一系列连续单位时间的方向和速度就能推断对手的未来位置。因此我们这里可以考虑,对手的样本就是对手的方向和速度,正好,方向和速度也能体现对手运动规律,因此这两个属性既能作为比较的样本——第二步骤,又能作为推算对手未来位置的属性——第三步骤,显然,第一步骤我们需要记录的对手的样本就是对手的方向和速度了。 3. 编写代码 根据以上分析,这里给出一个示例方案的相关代码: /** * 用模式匹配算法开火的机器人 * @author xiemin */ public class PatternFire extends SimpleRobot { //开火的火力 private static final double POWER = 0.5; //保留历史纪录的最大长度 p

您可能关注的文档

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档