关于逐鹿象棋对弈引擎

逐鹿象棋本身主要关注象棋程序界面及对弈数据管理相关功能的实现,在发布时会附带几个象棋引擎程序以便实现人机对弈功能。

象棋引擎概述

象棋引擎是基于给定的象棋盘面,通过计算得得红棋或黑棋一个或多个具体着法(即走哪一步棋)的程序。在人机对弈过程中,引擎是计算机下法的核心程序。

在国内,2000-2010年代曾经出现了一大批棋力相当不错的象棋引擎,有开源、免费、商业版本,一度将引擎棋力推到一个相当高的程度。

最近几年虽然象棋引擎开发热潮似乎已经过去,但是相比围棋等算法空间复杂度极高的棋类而言,之前累积的开源象棋引擎已经足够丰富和强大,以至于20年 前的开源象棋引擎也足以完胜绝大多数业余棋手和象棋爱好者。因此,可以说在棋力上已经完全能满足人机对战的要求,甚至还有余。

逐鹿象棋自带四个开源象棋引擎,棋力不同,棋风也不同,足以满足绝大多数棋友的人机对战需要。选择这四个引擎,不仅是考虑软件版权使用方面的原因, 同时也要考虑引擎棋力这一重要因素。

目前提供的四个引擎均采用开源授权协议授权,以满足自由发布的要求。引擎均由逐鹿象棋软件作者重新编译连同源码一并在此提供下载。

注:逐鹿象棋本身并非开源软件,而是一套独立系统。逐鹿象棋与引擎之间通过程序管道方式以UCCI通信协议进行交互,两个程序在不同的地址空间中运行, 属于两个不同的、互相独立的进程,因此逐鹿象棋本身不受GPL协议约束。

1、Mars

Mars是基于fruit 2.1的测试作品,对着法生成,着法排序,置换表,搜索进行了深入的分析。同时此引擎还包括一些高级且有难度的算法,如将军躲避算法,SEE。

Mars基于GPL公共许可协议发布,各位棋友可进入逐鹿象棋下载页面下载源码及可程序程序。

源码出处:Github: UCCI_ChessEngines

2、象眼

ElephantEye 是一款自由的中国象棋程序,在遵循《GNU宽松通用公共许可协议》(GNU Lesser General Public Licence)的前提下, 广大象棋爱好者和程序设计师可以自由使用 ElephantEye 及其源程序。

ElephantEye 中文名称为“象眼”,它跟“马腿”和“炮架子”一起构成了中国象棋“棋盘上的第三维”。

ElephantEye 通常与一个象棋棋谱编辑软件ElephantBoard 配合使用,寓意有板有眼(英文 Board 的意思是“板”)。 (注:现在 ElephantBoard 已更名为“象棋巫师”。)

象眼引擎基于L-GPL公共许可协议发布,各位棋友可进入逐鹿象棋下载页面下载源码及可程序程序。

源码出处:Github: Eleeye

3、理治棋壮

“理治棋壮”(BitStronger)是一个基于中国象棋通用引擎协议(UCCI)的中国象棋计算机博弈引擎。 项目采用C++开发,遵循GPL许可,目前版本可运行于32位Windows平台。

本引擎通过标准输入和标准输出与支持UCCI的中国象棋界面软件通讯,可实现跨平台及联网的人机、机机对战。

详细的使用说明与程序开发文档参见随程序一同发布的docs目录下的文件。

各位棋友可进入逐鹿象棋下载页面下载源码及可程序程序。

源码出处:Github: Bitstronger

4、ZWM引擎

ZWM引擎主要技术包括:

  • 数据结构:位行、位列(BitRank、BitFile),棋盘-棋子联系数组
  • 搜索算法:主要变例搜索(PVS:Principal Variation Search),平静搜索(Quiescent Search),迭代加深搜索(Iterative Deepening Search)
  • 裁剪:R=2的空着裁剪(Null Move Pruning),阈值为1/4的历史裁剪(History Pruning),置换裁剪,和棋裁剪,杀棋裁剪
  • 延伸:将军延伸(Check Extension),杀棋威胁延伸(Mate-Threat Extension),兑子延伸(Recapture Extension)
  • 启发:置换启发,内部迭代加深启发,吃子启发,历史启发(History Heuristic)
  • 平静扩展:吃子扩展,将军扩展
  • 局面评估:采用"梦入圣蛋"的快速局面评估方法
  • 开局库:共用ElephantEye的开局库
  • 置换表替换策略:始终覆盖

此引擎支持UCCI协议大多数命令,同时支持浅红协议基本的命令。

在棋力方面,根据历史数据,ZWM引擎在联众快棋上等级分:2400 (人工手动,非自动连线); 第一届,第二届UCCI引擎联赛第6名;ELO快棋等级分2455。

ZWM引擎基于GPL公共许可协议发布,各位棋友可进入下载页面下载源码及可程序程序。

源码出处:Github: ZWMv2

后续引擎计划

将来逐鹿象棋考虑在以下几个方面进行增强和改进:

(a) 开放引擎选择,让棋友可以选择与哪一个引擎对战,类似于逐鹿围棋的新局选择引擎的方式。

(b) 集成更多的开源引擎,计划将来增加梦入神蛋

(c) 开放引擎选择,让棋友可以自己下载其它的非开源引擎或自己开发的引擎,集成到逐鹿象棋中使用。

(d) 逐步建立引擎等级评分制度,棋友通过与引擎对战,由逐鹿象棋平台更新自己的等级分。

最后,在象棋引擎的集成和使用方面,我们也非常希望听到各位棋友的想法,请点击这里给我们留言

相关资源链接

可访问象棋百科全局中的UCCI引擎列表,了解更多其它象棋引擎的信息。

Github上有开源库UCCI_ChessEngines提供了多个开源引擎。