2017年即将结束,微信的跳一跳游戏变成了最热门的游戏。你可以尝试下,让你的孩子开发一个程序,让你的跳一跳成绩在排行榜上名列前茅。
在之前的课堂教孩子把人工智能算法植入进Flappy-Bird 这个游戏中,让小鸟可以跨越障碍任意飞行。两个游戏类似,通过神经网络的训练可以让跳一跳游戏自动运行,机器可以不知疲倦的运行,从而刷最高分。
首先我们Flappy-Bird 的智能运行的方法:
人工神经网络是机器学习算法的一个子集。 它受到生物神经网络结构和功能的启发。
这些网络是由许多互相发送信号的神经元组成的。因此,要创建一个智能大脑,我们需要模拟神经元并将它们连接起来形成一个神经网络。通用人工神经网络由输入层,一个或多个隐藏层和输出层组成。 每层都有一些神经元。 输入和输出神经元直接连接到外部环境。 最后,隐藏的神经元连接在它们之间。在这个项目中,每个单位(鸟)都有自己的神经网络,用来作为玩AI的大脑。 它由以下三层组成:
1)有2个神经元代表鸟类看到的输入层:
水平距离到最近的差距
身高差距最近的差距
2)具有6个神经元的隐藏层
3)具有1个神经元的输出层,其提供如下动作:
如果输出> 0.5,那么挡板别无所求
遗传算法:
当我们谈到机器学习算法的时候,我们说用遗传算法来训练和改进神经网络。
遗传算法是一种基于搜索的优化技术,受自然选择和遗传过程的启发。 它使用选择,交叉和变异的相同组合来演变最初的随机人口。
这里是我们遗传算法实现的主要步骤:
1.创建具有随机神经网络的10个单位(鸟类)的初始种群
2.让所有单位通过自己的神经网络同时玩游戏
3.为每个单位计算其适应度函数来衡量其质量
4.所有单位死亡时,使用遗传算子将当前情况评估到下一个单位
5.回到步骤2
Fitness Function
除了遗传算法(步骤3)之外,我们还将详细介绍适应度函数 - 它是什么以及如何定义它。
既然我们想用最好的单位来演化一个种群,我们需要定义一个适应度函数。
一般而言,适应度函数是度量对象质量的指标。 虽然我们对每只鸟都有质量标准,但是我们可以选择最适合的单位,并用它们来繁殖下一个种群。
在这个项目中,我们奖励一只鸟,它的旅行距离是平等的。 而且,我们将其与目前距离最近的差距进行惩罚。 那么这样,我们就可以区分走过相同距离的鸟类。
总而言之,我们的适应度函数是一只鸟所覆盖的总距离与其距离最近的距离的距离之差。
Replacement Strategy
除了遗传算法(步骤4)之外,以下是在死亡人口中应用自然进化的步骤。 基本上,最好的单位生存和他们的孩子以这种方式取代最差的单位:
1.按现有鸟的存活状况排序
2.选出前四名(获胜者),并直接将其传给下一个人口
3.创造一个后代作为两个最佳赢家的交叉产品
4.创造3个后代作为两个随机获胜者的交叉产品
5.创建2个后代作为两个随机获胜者的直接副本
6.对每个后代应用随机突变来添加一些变化
下面我们介绍 跳一跳 如何刷分:
Python 2.7
Android 手机
Adb 驱动
Python Matplot绘图
关注公众号回复,跳一跳 获得今天需要使用的程序:
依赖安装
pip install -r requirements.txt
原理说明
将手机点击到《跳一跳》小程序界面;
用Adb 工具获取当前手机截图,并用adb将截图pull上来
adb shell screencap -p /sdcard/1.png adb pull /sdcard/1.png.
android 的手机可以通过adb和电脑终端连接在一起。
adb shell screencap 是截屏的意思
adb pull 是把手机里的文件传输电脑上
adb 工具的下载地址:https://developer.android.com/studio/command-line/adb.html
用matplot显示截图;
用鼠标点击起始点和目标位置,计算像素距离;
根据像素距离,计算按压时间;
用Adb工具点击屏幕蓄力一跳;
adb shell input swipe x y x ytime
如果你是 :
运行安装好的
将手机点击到《跳一跳》小程序界面
依次点击起始位置和目标位置,实现蓄力一跳
打开 ,根据蓄力一跳的精准情况更改其中的 ,直到获得最佳取值
安卓手机操作步骤
安卓手机打开USB调试,设置》开发者选项》USB调试
电脑与手机USB线连接,确保执行可以找到设备id
界面转至微信跳一跳游戏,点击开始游戏
运行,如果手机界面显示USB授权,请点击确认
最后结果:
芽课:用计算开启科学认知,展开生命智慧的大树。帮助孩子形成更好的科学素养和科研能力。让这些出生即数字公民的孩子,拥有释放自己无限想象力的能量。
欢迎关注YaK
用计算的力量改变世界是每一个程序员的梦想,YaK团队抱着对教育的敬仰和热忱,开发了有趣的YaK编程工具以及配套的系统化教学课程。让孩子可以用编程去学习和理解自然的语言:数学。
领取专属 10元无门槛券
私享最新 技术干货