AI学会玩贪吃蛇!
神经网络学习在终端中玩贪吃蛇
查看这里可以了解使用macroquad作为GUI的AI的旧版本
使用方法
- 克隆仓库
git clone git@github.com:bones-ai/rust-snake-ai-ratatui.git
cd rust-snake-ai-ratatui
- 运行模拟
cargo run --release
配置
- 项目配置文件位于
src/configs.rs
- 更新
IS_LOW_DETAIL_MODE
以获得简化的UI,运行速度更快 - 设置
IS_SAVE_BEST_NET
以训练自己的网络。网络保存在data/net.json
中,保存后可以通过设置IS_LOAD_SAVED_NET
来使用训练好的网络 - 使用
data/net-100.json
可以观看AI在15x15的棋盘大小上完成游戏 - 将
USE_GAME_CANVAS
设置为true,并根据需要更新VIZ_GAME_SCALE
来缩放游戏
资源
以下是一些学习遗传算法的优秀资源:
算法
- 初始化:
- 模拟从"第0代"开始
- 创建一个新的蛇群体,每条蛇都有一个初始化为随机权重和偏差的神经网络
- 游戏更新:
- 每一步,通过将视觉输入传递给神经网络来更新每个游戏,以决定蛇的行动
- 以下情况游戏被标记为完成:
- 蛇撞到墙壁或自身
- 蛇在一定步数内未能吃到食物,防止无限循环
- 世代完成:
- 世代继续更新每个游戏,直到所有游戏完成
- 适应度评估:
- 每个世代结束时,根据蛇的表现进行排名
- 父代选择:
- 根据排名选择下一代的父代。排名较高的蛇被选为父代的概率更高
- 繁殖:
- 使用轮盘赌选择、精英主义等技术为下一代产生子代
- 新世代:
- 创建新的群体,从步骤2重复这个过程,直到模拟被手动停止
这个迭代过程使蛇逐步调整策略,最终导致蛇的长度随时间增加
其他
- 我主要在Twitter - @BonesaiDev上发布我的项目
- 蛇完成游戏的视频
- 在GitHub上查看我的其他项目https://github.com/bones-ai