首页 > 代码库 > Week 2 让chrome dinosaur小游戏自动玩出高分的自动学习系统-IAMDinosaur(上)
Week 2 让chrome dinosaur小游戏自动玩出高分的自动学习系统-IAMDinosaur(上)
想刷一个小游戏的高分,但是手动刷未免太单调,如何让电脑帮你完成这一切呢?
自动!374分!酷不酷炫!想不想学!
这一周要用的的开源项目是IAMDinosaur,地址是https://github.com/ivanseidel/IAMDinosaur
我们这周的任务不是深入了解原理,而是先用起来,要是用的好再想办法调参,达到我们的目的~~
1. 程序原理简介
程序采用遗传算法来逐步优化小恐龙的行为,跳过尽可能多的仙人掌,获得更高的分数。
程序的输入如下:
1)恐龙与下一个仙人掌的距离
2)下一个仙人掌的长度(仙人掌分大小的)
3)仙人掌的速度(其实是恐龙的速度)
程序的输出是一个0-1的数值:
1)<0.45:按“下”键。恐龙蹲下,然而只能卖萌 - -#
2)>0.55:按“上”键。恐龙跳起,可以躲避仙人掌
3)0.45~0.55:不动
程序采用神经网络,将实时输入的三个数值合成为一个0-1之间的输出,并根据输出的数值大小操作恐龙。游戏每一轮都训练12个神经网络,将恐龙最后跳过的仙人掌数目作为适应度函数,以此来调整每个神经网络,以期达到更高的分数。最初的神经网络具有末尾淘汰机制(加快初始训练速度),之后具有将神经网络crossover的机制,可以模拟杂交过程提高个体变异程度,防止个体陷入局部最优。
2. 安装
建议在linux下安装,win7的安装艰难且存在延迟过高的问题(见项目issue)。
我用的是ubuntu 14.04 LTS,安装贼容易:
1)sudo apt-get install nodejs nodejs-legacy npm
2) 将IAMDinosaur git clone下来
3) 在IAMDinosaur目录内 npm install
4) node index
5) 在chrome上开启chrome dinosaur game, 个人推荐这个离线版 http://www.trex-game.skipser.com/
5.5) chrome dinosaur game里有个bug:随着游戏多次进行,恐龙会逐渐向右漂移。
解决方法:在F12开发者视图中的Console内输入:
setInterval(function (){Runner.instance_.tRex.xPos = 21}, 2000)
6)激活终端页面,在屏幕上同时显示终端和chrome页面,按s开始训练
据说有些安装失败的原因是C++编译问题,请务必安装gcc/g++和sudo apt-get install build-essentials
3. 加速
当你发现,为什么自己的恐龙就只会傻傻的蹲下或者瞎跳呢?这和每个个体的初始化情况相关,一开始就有一个能跳过仙人掌的个体实在是运气爆棚。。
那么,为了节省时间,在按s开始训练前,可以按下选择要加载的个体(json文件形式),里面有一个ninja.json的文件,按回车选择后按s开始。
谁说我家的恐龙不会轻功来着~
当然,熟悉遗传算法的童鞋知道,可以通过调整参数的方式加速学习过程,下周就朝着这个方向努力吧!
Week 2 让chrome dinosaur小游戏自动玩出高分的自动学习系统-IAMDinosaur(上)