Scratch3之AI集成 - flappy bird AI版本

AI神秘且有趣,我们以一个经典的游戏flappy bird集成AI,实现自训练成长的聪明的笨鸟。先上效果:

初始化的笨鸟拥有分身,每个分身都有自我学习功能,根据自己的移动轨迹和得分情况进行汇总,进行新一代的笨鸟的迭代,基本经过数十轮的训练和迭代,能完成高智慧的笨鸟,自我闯关能力强。

 

需要了解的AI知识:神经网络进化(Neuroevolution)- 神经网络进化wiki

 

 游戏实现

 1. 实例化 Neuroevolution 对象(图一的右上角 init 部分),其中定义了每代鸟的数量,以及网络模型中每一层的神经元数量。一般神经网络具有分层结构,实例化的 network 分别定义了输入层(input layer)、隐藏层(hidden layer)和输出层(output layer)中的神经元(neurons)数量。定义的每只鸟的权重随机。

2. 每只鸟进行自动运行,通过上下运动,判断与管道是否会碰撞,如果碰撞后则认为死亡,将network状态和score绑定,将score降序排列作为基因保存起来。

3. 遍历所有鸟,如果都死亡,则保存这代鸟的得分,创建开始新一代。

4. 经过进化算法一代代的迭代,network 的表现也会越来越符合预期。

 

游戏代码块组成:

1. 初始化模型、设置AI角色复制的分身术,启动GameAI程序

 

2. AI角色使用特征

 

3. AI角色使用行为

 

4. 当每轮执行,AI角色牺牲后进行决策记录

 

5. 异步实时计算AI角色是否牺牲(是否撞到管道)

 

6. 当一轮中所有AI角色都牺牲了,优化模型并保存模型,重启GameAI,进行下一代笨鸟的训练

 

核心代码组成:

Generation.js  -- 训练中代数的js文件

Network.js -- 神经网络的js文件

Neuroevolution.js -- 网络进化的js文件

AISprite.js -- AI角色(小鸟)的js文件

 

posted @ 2024-04-15 21:55  want  阅读(275)  评论(0编辑  收藏  举报