thomasahle/sunfish
Sunfish: a Python Chess Engine in 111 lines of code
解决的问题
Sunfish 是一个极简主义的国际象棋引擎,旨在保持简单、易读,并具备足够的竞技强度。它提供了一个紧凑的代码库,作为开发人员在国际象棋编程中实验搜索算法、评估函数和深度学习的学习平台。
工作原理
该引擎使用 Python 编写,并采用 MTD-bi (C*) 搜索算法。它采用了经典的国际象棋引擎技术,例如用于高效更新评估函数的 Piece Square Tables,以及用于数据结构的标准 Python 集合。此外还提供专门的 NNUE (Efficiently Updatable Neural Network) 版本,它将训练好的神经残差封装在一个单一的 Python 整数中,在保持极小占用的同时提高了对局强度。
适用对象
面向想要寻找易读的国际象棋引擎参考实现,或希望将其作为创建衍生引擎基础的开发人员、学生和国际象棋引擎爱好者。
亮点
- 超紧凑: 核心引擎仅约 152 行代码。
- 兼容 UCI: 可与 Arena、Cute Chess 和 PyChess 等标准国际象棋 GUI 配合使用。
- 支持 NNUE: 包含一个基于神经网络的评估版本,大小仅为几 KB。
- 可扩展性: 专门设计为用于实验并行搜索、深度学习和评估调优的平台。
相关
- 项目
- 项目
- 项目
- 项目
- 项目