06 / 2026 / 已完成
Einstein Chess AI:基于MCTS与CNN的智能博弈系统
面向 5×5 EinStein 棋盘的桌面对弈程序,将 Tkinter GUI、规则引擎、MCTS 与 CNN 局面评估组合起来。
系统结构图暂不可用
问题
如何把棋局状态管理、蒙特卡洛树搜索和卷积神经网络估值组织成可运行、可实验的桌面对弈系统?
角色
队长;负责桌面交互、规则与状态管理、MCTS、CNN 估值和实验工具整合。
方法
Tkinter 图形界面;棋局规则引擎;MCTS 候选走法搜索;PyTorch CNN 局面估值;自博弈训练和模型参数对比。
结果
关联成果:安徽省大学生计算机博弈大赛二等奖。README 同时记录 GUI 固定尺寸、主线程搜索可能短暂无响应等限制。

封面为程序运行截图。
项目简介
这是一个面向 5×5 EinStein 棋盘的桌面对弈程序,提供完整图形界面,并将规则引擎、蒙特卡洛树搜索(MCTS)与卷积神经网络局面评估组合在一起。项目支持人机操作、AI 决策、悔棋、棋谱导出、自博弈训练以及模型/参数对比。
EinStein würfelt nicht! 由 Ingo Althöfer 设计。本仓库是独立的软件实现,与游戏设计者或发行方无官方关联;规则介绍可参考原始规则页。
功能亮点
| 模块 | 能力 |
|---|---|
| 桌面 GUI | 棋盘交互、红蓝双方布局、骰点选择、AI 走子、悔棋与胜负提示 |
| 博弈引擎 | 维护棋局状态、合法方向、历史记录与胜负判断 |
| MCTS | 通过模拟搜索评估候选走法 |
| CNN 估值 | 使用 PyTorch 模型对局面与走法进行评分 |
| 模型训练 | 通过自博弈生成数据并训练估值网络 |
| 实验工具 | 支持模型对战和多组搜索参数批量比较 |
系统结构
flowchart LR
GUI["Tkinter GUI<br/>app.py"] --> Game["Game Engine<br/>engine/game.py"]
Game --> Search["MCTS<br/>engine/search.py"]
Search --> Simulator["Virtual Board<br/>engine/simulator.py"]
Game --> Network["CNN Evaluator<br/>engine/network.py"]
Network --> Model["Model3.pkl"]
快速开始
推荐使用 Python 3.10。项目已在 Windows、Python 3.10.19、NumPy 1.26.4、PyTorch 2.9.0 CPU 和 Pillow 11.3.0 环境中完成模型加载与推理检查。
conda create -n einstein-chess python=3.10 -y
conda activate einstein-chess
pip install numpy==1.26.4 torch==2.9.0 Pillow==11.3.0 tqdm
python app.py
仓库中的 requirements.txt 保留了项目早期依赖版本,适合复现旧环境;现代 Python 环境建议使用上面的安装方式。
基本操作
- 在“新游戏”中分别设置红蓝双方的 1~6 号棋子布局。
- 正数骰点代表红方,负数骰点代表蓝方。
- 选择骰点后点击电脑走子,程序会调用 CNN 估值和 MCTS。
- 可使用手动落子修正棋盘、撤销上一步或导出棋谱。
手动落子面向赛事记录与棋盘校正,不负责完整的规则合法性校验。
模型与训练
GUI 当前默认加载 Model/Model3.pkl。模型结构包含多层卷积、批归一化与 Sigmoid 输出,共约 44.8 万个可训练参数。
使用自博弈重新训练并直接覆盖 GUI 默认模型:
python -m scripts.train_model --games 4000 --epochs 15 --augment --output Model/Model3.pkl
比较现有模型与候选模型:
python scripts/compare_models.py --model-a Model/Model3.pkl --model-b path/to/candidate.pkl
运行参数组合实验前,需要额外安装:
pip install pandas XlsxWriter
python scripts/benchmark_params.py --model Model/Model3.pkl
项目结构
.
├── app.py # Tkinter 图形界面
├── engine/
│ ├── game.py # 棋局状态与决策入口
│ ├── search.py # 蒙特卡洛树搜索
│ ├── parallel_search.py # 可选并行搜索
│ ├── network.py # CNN 与模型加载
│ └── simulator.py # 搜索使用的虚拟棋盘
├── scripts/
│ ├── train_model.py # 自博弈训练
│ ├── compare_models.py # 双模型对战
│ └── benchmark_params.py # 参数组合评测
├── Model/
│ └── Model3.pkl # GUI 默认模型
├── assets/
│ └── background-generated.png
└── requirements.txt
已知限制
- GUI 目前固定为 1200×800,并围绕 5×5 棋盘设计。
- MCTS 在界面主线程中执行,搜索量较大时窗口可能短暂无响应。
- 当前仓库没有声明开源许可证;公开展示不代表授予复制、修改或商业使用许可。