中国象棋之二开源 AI 引擎介绍

上篇

前言

本文将介绍针对中国象棋的开源 AI 引擎,旨在对希望打造自己的中国象棋引擎的开发者提供一点帮助。目前中国象棋 AI 引擎主要分为两类,第一类是传统的象棋 AI 引擎(如象棋名手、象棋旋风),属于 CPU 密集计算型的引擎;第二类则是基于 Alpha-Zero 深度强化学习算法的新兴 AI 引擎,属于 GPU 密集计算型的引擎。由于谷歌的 DeepMind Alpha-Zero 已经 “通杀” 围棋、国际象棋、日本将棋,因此第二类中国象棋 AI 引擎非常值得关注。

开源象棋引擎

Harmless

Harmless 是一款 Linux 下的中国象棋引擎,在普通机器上限定每步 6 秒时间的情况下,平均搜索深度在 5-8 层左右。核心搜索主要采用的是极小窗口搜索,并结合了哈希表技术和历史启发;评估函数则相对实现得比较简单,只考虑了棋子本身的价值和棋子间的灵活度,虽不靠谱,但基本能用。引擎部分完全用 C 语言实现,支持部分 UCCI 通信协议,并附带了一个简单的图形界面,运行环境依赖 Python-2.7.x 与 Pygame-1.9.x。附上原作者对该项目的博客分享:写了一个 Linux 下的中国象棋引擎

UCCI-ChessEngines

UCCI-ChessEngines 是中国象棋 UCCI 引擎源码的整理,引擎包括 ElephantEye(象眼)、 BitStronger、Eleeye、Mars、梦入神蛋 MRSD2(浅红引擎)

ChineseChess-Engines

ChineseChess-Engines 是基于 UCCI-ChessEngines 项目,整理了中国象棋 UCCI 引擎的源码,在原基础上做了大量修改,使其支持在 Linux 上运行,修改内容如下:

  • 增加了 Harmless 象棋引擎,Ubuntu 编译通过,支持 UCCI
  • BitStronger:增加了 makefile, Ubuntu 编译通过,支持 UCCI
  • ElephantEye(象眼):增加了 makefile, Ubuntu 编译通过,支持 UCCI
  • Mars:修改了相关代码,更改了编码方式为 UTF-8,增加了 makefile,Ubuntu 编译通过,支持 UCCI
  • 梦入神蛋 MRSD2(浅红引擎):修改了相关代码,更改了编码方式为 UTF-8,修改了 makefile,Ubuntu 编译通过,不支持 UCCI

cchess-zero

cchess-zero 是基于 Alpha-Zero 的实践项目,实现了一个中国象棋程序,使用 TensorFlow1.0 和 Python3.5 开发。附上原作者对该项目的博客分享:Alpha-Zero 实践 — 中国象棋(附论文翻译)

icyChessZero

icyChessZero 受到 Alpha-Zero 的启发,旨在训练一个中等人类水平或高于中等人类水平的深度神经网络,来完成下中国象棋的任务。目前该项目仍然没有完成全部的开发,处于停滞状态。附上原作者对该项目的博客分享:一个分布式中国象棋 Alpha Zero

CCZero

CCZero 的目标是将 Alpha-Zero 的算法应用到了中国象棋上,旨在借助广大象棋爱好者之力一起训练出一个可以打败旋风名手的 “象棋之神”。因为种种原因,这个目标截止 2018/11/07 为止仍未能实现,或者说还差得远,而且跑谱的人也越来越少了,作者已经放弃该项目。附上原作者对该项目的博客分享:中国象棋 Zero 技术详解

GGzero

GGzero 采用了谷歌 DeepMind 公司提出的 Alpha-Zero 深度强化学习算法,基于国际象棋引擎 leela-chess 进行开发,是目前世界上首款达到商业引擎水平的显卡加速象棋引擎。GGzero 项目是一个团队在维护,创作者是佳佳象棋的作者李国来;目前就 Elo 分来说是最强的,但发展状况逐渐呈现商业化趋势(作者没有公开发布最新的代码),更多资料可在社区论坛上获取。值得一提的是,GGzero 曾获得第三届楚河汉界象棋人工智能大赛第三名,2019 年北京人工智能大赛并列第二名,比赛规则与机器配置如下:

  • 赛制用时:10 分钟 + 3 秒
  • 其它商业引擎的机器配置:Xeon 2696 V4(44 核心),有开局库,有残局库
  • GGzero 的机器配置:Nvidia GeForce RTX 2070 Super X 4,无开局库,无残局库

中国象棋引擎排行榜

  • 第一阵营:象棋名手、象棋旋风
  • 第二阵营:小虫象棋、天机象棋、Alpha 猫、佳佳象棋、南奥象棋
  • 第三阵营:UFX、象棋天启

其他棋类的开源 AI 引擎

参考资料

下篇