thomasahle/sunfish

Sunfish: a Python Chess Engine in 111 lines of code

解决的问题

Sunfish 是一个用 Python 编写的紧凑且开源的国际象棋引擎。它既足够简单又足够强大,适合休闲对弈,同时为开发者提供了一个极高的可访问性平台,用于实验搜索算法、评估函数以及国际象棋编程中的深度学习。

工作原理

该引擎使用 MTD-bi 搜索算法(也称为 C*),并结合了经典的国际象棋引擎优化技术。它采用棋子位置表(PST)实现高效可更新的评估函数,并使用标准 Python 集合以保证代码清晰。另有一个独立的 NNUE 版本,将经典棋子位置评分与训练好的神经网络残差相结合,将整个网络压缩为单个 Python 整数,实现高性能评估。

适用人群

专为希望学习国际象棋引擎原理或构建自己衍生版本的国际象棋爱好者和开发者设计。同时也兼容标准的 UCI 图形界面和赛事工具。

主要亮点

  • 极致紧凑:压缩后核心引擎仅占用 126 行代码。
  • UCI 兼容:可与 Arena、Cute Chess、PyChess 等标准国际象棋 GUI 配合使用。
  • 支持 PyPy:针对 PyPy JIT 解释器优化,搜索速度比 CPython 最快可提升 2.7 倍。
  • 集成 NNUE:包含一个小型、经过验证的神经网络评估版本(nnue_4k),相比经典版本显著提升 Elo 等级。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目