06 / 2026 / 已完成

Einstein Chess AI:基于MCTS与CNN的智能博弈系统

面向 5×5 EinStein 棋盘的桌面对弈程序,将 Tkinter GUI、规则引擎、MCTS 与 CNN 局面评估组合起来。

Einstein Chess AI:基于MCTS与CNN的智能博弈系统

问题

如何把棋局状态管理、蒙特卡洛树搜索和卷积神经网络估值组织成可运行、可实验的桌面对弈系统?

角色

队长;负责桌面交互、规则与状态管理、MCTS、CNN 估值和实验工具整合。

方法

Tkinter 图形界面;棋局规则引擎;MCTS 候选走法搜索;PyTorch CNN 局面估值;自博弈训练和模型参数对比。

结果

关联成果:安徽省大学生计算机博弈大赛二等奖。README 同时记录 GUI 固定尺寸、主线程搜索可能短暂无响应等限制。

# EinStein Chess AI **爱因斯坦棋智能对弈终端:Tkinter GUI + 蒙特卡洛树搜索 + CNN 局面评估**

EinStein Chess AI 项目封面

封面为程序运行截图。

项目简介

这是一个面向 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. 在“新游戏”中分别设置红蓝双方的 1~6 号棋子布局。
  2. 正数骰点代表红方,负数骰点代表蓝方。
  3. 选择骰点后点击电脑走子,程序会调用 CNN 估值和 MCTS。
  4. 可使用手动落子修正棋盘、撤销上一步或导出棋谱。

手动落子面向赛事记录与棋盘校正,不负责完整的规则合法性校验。

模型与训练

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 在界面主线程中执行,搜索量较大时窗口可能短暂无响应。
  • 当前仓库没有声明开源许可证;公开展示不代表授予复制、修改或商业使用许可。