本项目是一个 强化版的 2048 游戏 AI,包含完整可视化界面、启发式搜索算法、动态经验学习系统、多线程优化以及 Numba 加速。AI 会随着游戏不断调整权重,变得越来越强。
AI 会自动记录每一局的表现,并在每 10 局后自动优化策略权重,包括:
- 空格权重(empty weight)
- 平滑度(smoothness)
- 单调性(monotonicity)
- 角落策略(corner bonus)
- 边缘奖励(edge bonus)
- 合并潜力(merge potential)
- 蛇形布局(snake weight)
经验会保存到 ai_experience.pkl,下次启动继续使用。
- 使用 Numba @njit 加速关键函数(滑动合并逻辑比 Python 快几十倍)
- 使用 ThreadPoolExecutor 加速 Expectimax 搜索
- 多种启发式算法高度并行化
AI 通过综合评估规则决定最佳移动,包括:
| 指标 | 用途 |
|---|---|
| 空单元格 | 保持操作空间 |
| 平滑度 | 减少大数字冲突 |
| 单调性 | 保证大数字集中一边 |
| 角落权重 | 让最大数字呆在角落 |
| 边缘权重 | 更稳定的布局 |
| 合并潜力 | 预测未来是否可合并 |
| 最大数奖励 | 鼓励冲目标 |
| 蛇形排列 | 保证永不堵死 |
权重由经验系统自动调整,让 AI 越玩越强。
- 动态渲染每个格子的颜色与数字
- 支持实时观察 AI 决策
- 棋盘尺寸:4x4(可扩展)
- 自动记录分数、步数、最大方块
包含对 2048 游戏的所有规则实现,例如:
- 上下左右移动
- 自动生成新 tile
- 检测胜利(默认目标:40960)
- 检测游戏结束
- 最大 tile 自动跟踪
| 文件 | 说明 |
|---|---|
main.py |
主程序入口,渲染 + AI 控制 |
ai_experience.pkl |
AI 的历史经验数据(可删除以重置) |
README.md |
本说明文件 |
pip install pygame numpy numba(可选,为提升性能)
pip install concurrent.futurespython main.pyAI 会自动开始游戏并不断自我学习。
程序自动记录:
- 总对局数
- 最大 tile 历史
- 步数统计
- 平均分数
- 胜率
- 权重变化情况
可通过:
ai_experience.get_statistics()获取详细数据。
深度为 EXPECTIMAX_DEPTH = 3,支持多线程。
@njit
def slide_numba(row):负责所有方向的合并 + 得分计算。
每 10 局自动重新评估:
ai_experience.adjust_weights()你可以在顶部配置修改:
SIZE = 4
TARGET = 40960
EXPECTIMAX_DEPTH = 3
ENABLE_DELAY = False
MOVE_DELAY = 0.1支持自定义棋盘大小(例如 5x5、6x6)。
AI 经过训练后通常可以稳定达到:
- 2048
- 4096
- 8192
- 甚至 16384+
目标默认是 2048。