zoukankan      html  css  js  c++  java
  • 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开始。

    谁说我家的恐龙不会轻功来着~

    当然,熟悉遗传算法的童鞋知道,可以通过调整参数的方式加速学习过程,下周就朝着这个方向努力吧!

  • 相关阅读:
    Codeforces 1316B String Modification
    Codeforces 1305C Kuroni and Impossible Calculation
    Codeforces 1305B Kuroni and Simple Strings
    Codeforces 1321D Navigation System
    Codeforces 1321C Remove Adjacent
    Codeforces 1321B Journey Planning
    Operating systems Chapter 6
    Operating systems Chapter 5
    Abandoned country HDU
    Computer HDU
  • 原文地址:https://www.cnblogs.com/codingpenguin/p/6942336.html
Copyright © 2011-2022 走看看