美文网首页DQN+CNN
如何用AI玩贪食蛇?

如何用AI玩贪食蛇?

作者: f5065e26181b | 来源:发表于2019-06-25 11:19 被阅读2次

文章同步发于公众号:1024程序开发者社区(cxkfzsq1024)

公众号中回复“AI贪食蛇”获取代码链接

前几日在丹枫无迹大哥的公众号里读到一篇用PyGame制作的贪食蛇游戏的文章并进行了转载,详见:Python:游戏:贪吃蛇

玩的过程中我就在思考,如果用程序去控制蛇能达到怎样的效果呢?本文就将分析一下如何通过三种算法实现AI去玩贪食蛇。

一、搜索算法实现

第一大类就是通过获取蛇的头部和食物的位置,在避免碰到自己和边缘的前提下进行路径规划。这方面有大神已经研究过,在这里做简单介绍。

可以用的方法有:BFS、DFS、A*算法等,此处大神采用了BFS算法,也就是广度优先搜索算法,它从根节点开始遍历图并探索所有相邻节点,选择最近的节点并浏览所有未探测的节点。对于每个最近的节点,该算法遵循相同的过程,直到找到目标为止。具体实现过程可以看大神博客,实现的结果如图:

image

此种方法的好处在于实现起来速度快,蛇的目标明确,直奔食物,对于贪食蛇游戏基本能玩转,但是如果新加一些约束条件如:障碍物,或者一个更加复杂的游戏,这个方法扩展性、适应性就显得不足。

博客链接:http://hawstein.com/2013/04/15/snake-ai/

源代码:公众号后台回复“AI贪食蛇”

二、强化学习实现

第二大类就是通过强化学习Q-Learning完成了贪食蛇,该方法原理如图:

image

作者通过程序抽取游戏过程中蛇与食物相对的位置获取state,选择动作在环境中得到reward(吃到食物为1,死亡为-1,其他情况0.1),更新形成一个Q-table,其中动作空间为上下左右四种,每一种state对应四个动作的选择概率:

image

该位大神通过js实现了代码的整个过程,可以在浏览器中完成训练的全过程,效果如图。他对游戏进行了简化,及没有边界,只有碰到自己身体蛇会死亡:

image

此种方法优点:通过自学习的方式实现,避免了建模的复杂过程,模型灵活性较高。

缺点:需要大量训练,见效慢,且存在一定随机性。此外本模型中state的定义还存在一定的建模,没能完全脱离游戏模型。

博客链接:https://italolelis.com/snake

源代码:公众号后台回复“AI贪食蛇”

三、神经网络实现

第三类是通过建立神经网络来实现当前状态state和所要选取动作action之间的关系,也可以理解为一个分类问题。

image

具体建模方法为:

选取能表示蛇与食物以及环境关系的参数,共有七个:左侧是否有物体、前方是否有物体、右侧是否有物体、蛇头运动X方向向量、食物与蛇头X方向向量、蛇头运动Y方向向量、食物与蛇头Y方向向量。

image

比如:

image

输出为,左右前三个动作。

NN模型为两个隐含层,分别为9和15个节点,较之于深度神经网络这个模型可以说非常轻巧。效果如图:

image

此种方法难点是,训练数据获取,作者提出通过人工玩游戏这个过程进行数据采集,这就需要消耗一定的人力,而且数据越多模型玩的越好;

模型优点在于,建模简单,不需要考虑过多的逻辑关系和路径规划方法。

博客地址:https://theailearner.com/2018/04/19/snake-game-with-deep-learning-part-2/

源代码:公众号后台回复“AI贪食蛇”

以上,是三类方法构建AI玩贪食蛇的方法,下期会通过深度强化学习构建一个游戏AI,结合了第二、三种的优点,敬请期待。

后台回复【AI贪食蛇】,获取源码。

image

1024程序开发者社区的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里就技术问题进行交流,还没有加入的小伙伴可以扫描下方“社区物业”二维码,让管理员帮忙拉进群,期待大家的加入。

image

//猜你喜欢//

相关文章

  • 如何用AI玩贪食蛇?

    文章同步发于公众号:1024程序开发者社区(cxkfzsq1024) 公众号中回复“AI贪食蛇”获取代码链接 前几...

  • 人生何尝不是贪食蛇?

    最近在玩《贪食蛇大作战》游戏,挺好玩的,以前我玩过《蛇蛇争霸》游戏,再往远了说,在诺基亚手机上也玩过贪食蛇游戏,大...

  • 贪食蛇大作战——复利游戏

    昨晚玩一个有趣的游戏——贪食蛇大作战 把经典的贪食蛇游戏变成了网络游戏,可以互相消灭,互相pk,这个游戏开始成长很...

  • 从贪食蛇到“贪食人生”

    最近我疯狂地迷恋上贪食蛇这个小游戏,操作简单,极容易上手。 支配着我坐着玩,躺着玩,走路还玩的动力,大概就是自己不...

  • 全自动“未来武器”破解验证码

    当我们正讨论如何用AI推动产业升级、改变未来生活时,不法分子也在研究AI技术,并通过各种手段非法牟利。 AI技术破...

  • 我儿时的小梦想-开发贪食蛇小游戏

    前言 记得读书的年代,有一款手机游戏叫贪食蛇,以前的手机就几款游戏,同学们都废寝忘餐地玩,就像现在玩王者荣耀一样火...

  • 玩贪食蛇也能悟出这些

    记得早一阵子很火的游戏,叫贪吃蛇大作战,一条会一直变大的小蛇,那时候抓住了一群人的双手。 上个星期吧,无聊又下载回...

  • 贪食蛇谁最后赢。稳的赢

  • 智商爆表的李开复情商怎么样?

    开复老师这些天正忙活着“冷扑大师”和人类玩扑克,也断言人是干不过AI的,我有点好奇的是,AI这家伙有没有情商呢?如...

  • 快速get的技术干货:如何用AI做颤屏风格的海报?

    Hello,大家好,今天教大家如何用AI做颤屏风格的海报,首先在AI里,打上文字 这里我们选择思源黑体,粗体。 再...

网友评论

    本文标题:如何用AI玩贪食蛇?

    本文链接:https://www.haomeiwen.com/subject/lgctcctx.html