| # 需求 | |
| 用Python制作一个基于Transformer的2048游戏AI | |
| 可以创建一个简单的窗口让我看到实时的训练状态,包括训练时AI的当前分数、训练速度、历史已经结束的游戏的*累积分数*变化、当前游戏的*局面分数*变化,窗口可切换演示模式和训练模式 | |
| 2048的一部分规定补充: | |
| - 开局会在随机位置生成一个2,后续在空格生成的砖块在随机位置且值为2或4 | |
| - 同时存在两个分数机制:累积分数和局面分数 | |
| - 累积分数机制:每合成一个增加合成后的砖块的数值 | |
| - 局面分数机制:根据*空格数量*、*相邻连续数字数量(相邻砖块拥有相邻数字的数量,取最大值,不计算重复,如512 1024 2048为3,256 512 512 2为2)*、*最高数字的对数*设计以恶合理的函数,局面分数越高越好 | |
| ## 第一步:训练模型 | |
| 为模型提供当前的局面状态和两种分数(累积分数的权重低于其它,目的是局面分数保持更高),输出只有上下左右 | |
| 游戏结束后再开始新的游戏继续训练,直到训练没有长进或我手动点击停止 | |
| 性能允许的话可以多开2048游戏进行训练 | |
| ## 第二步:演示模式 | |
| 在窗口中可以手动操作或AI托管,AI托管可以单步执行也可以持续下一步,可以看到两种分数及局面分数变化 |