1996年2月10日,IBM的超级电脑装载国际象棋程序“深蓝”首次寻衅国际象棋天下冠军加里·卡斯帕罗夫,但以2-4落败。
2月17日比赛结束后研究小组对深蓝做了进一步的改良。

1997年5月11日,卡斯帕罗夫以 2.5:3.5 (1胜2负3平)输给“深蓝”。

电子打算机开端于国外, 国际象棋在国际上开展较广泛, 以是国际象棋机器博弈的研究在国皮毛对较早。
中国象棋虽是天下上历史最为悠久的棋类, 早在两千多年前的战国时期就已经有了关于象棋的记载, 但是由于在中国的电子打算机的遍及及干系技能的发展远远掉队于国外前辈国家,中国象棋打算机博弈的研究近二十年才起步。

2006 年,为庆祝人工智能学科出身50 周年, 浪潮集团资助、中国人工智能学会举办了“ 浪潮杯” 首届中国打算机博弈锦标赛暨2006 机器博弈学术研讨会。
2006 年8 月,来自全天下18 支中国象棋打算机博弈软件代表队参加了锦标赛,分别是棋天算夜圣、象棋奇兵、象眼竞技、 理治棋壮、棋乐无穷、棋之梦、将神传说、落花、青羽堂、天机、象棋ABC、象棋旋风、宝岛一号(台湾)、兵芯(台湾)、深象(台湾)、梦着迷机(美国)、神乎棋技(美国)、感激大师(法国)。
前五名棋天算夜圣、象棋奇兵、象棋旋风、天机、将神传说分别与徐天红、卜凤波、柳大华、张强、汪洋等象棋专业选手进行了中国象棋人机大战。
结果棋软以3 胜5 和2 负略占上风。

中国象棋软件入门与免费本钱分享

1 象棋软件组成

中国象棋软件便是利用打算机来下棋,将棋局状态、行棋规则输入打算机,由打算机根据规则进行打算,然后再给出一步合理着法的程序。

象棋软件包括界面程序、引擎程序、开局库、审局库、残局库等。

象棋软件各部分各自独立,以界面程序为根本,引擎程序为核心。

(由于各部分遵守共同的UCCI或CCI协议,以是可以独自开拓,然后由界面程序集成到一起。
)

打开界面程序,可设置引擎程序(可选)、开局库(可选),以下是两个界面程序(兵河五四、鲨鱼象棋)与引擎程序和开局库的关系:

一样平常来说,界面程序、引擎程序都只有几十个M,体积弘大的是各种开局库、对局库、残局库(可选择加载)。

1.1 界面程序

界面程序是供应象棋奕棋的图形界面程序,须要加载引擎(打算和剖析工具)才具备棋力(一些界面程序也自带引擎)。
在对弈、拆棋时,引擎的打算与剖析能够直不雅观地显示在不同的界面子窗口中。

基于UCCI的象棋界面程序完成用户与人工智能博弈引擎的交互功能,一样平常在具有大家、人机(人与象棋博弈程序)、机机对战的基本功能之外,还有棋谱编辑、棋局管理等赞助功能。

免费的界面程序有 :

32位系统:

兵河五四3. 6,

鲨鱼象棋,

鹏飞象棋v3. 3. 0.9

64位系统:

兵河五四4.0,

兵河五四4.1

1.2 引擎程序

引擎程序是一个着法天生、搜索、评估、给出最佳着法的博弈程序。
 

免费引擎程序有:

32位系统:

象棋名手326六核版(老版破解引擎,残局棋力尚可)

象棋旋风6. 3破解版(运算较慢,棋力差)

南澳1.6双核版(棋力一样平常)

64位系统:

国圣双核破解版(棋力一样平常)

三元加强版(棋力略优于名手326)

佳佳象棋(最高支持12S线程,强机下棋力明显优于其他免费引擎)

ggzero (用显卡来运算的AI引擎,目前还在演习提高棋力中)

1.3 开局库

博弈程序如果能借鉴常用的开局模式,可以大大节省韶光, 为中局思考留下更多韶光。
由于开局阶段棋子多,棋型变革大, 搜索不会进行很深, 搜索的结果每每不如人们通过千遍万遍演习训练得到的常用开局, 避免搜索得到一些不太好的走法。

将成千上万的开局局势存储在打算机中, 形成一个开局库, 每一个局势都有一个最佳走法, 同时要把稳走棋方。
博弈引擎程序在开局阶段首先搜索开局库,如果有相同棋局, 则直接取出最佳走法作为当前搜索的结果。
当开局库中对应局势有多个时, 则要采纳一个策略从多个中优选一个来。
如果开局库中没有相同局势, 则用搜索算法重新进行搜索。
一旦开局库中没有相同局势,在后续搜索中都不再查找开局库了。

开局库必须要做到既方便存储, 又方便检索。
可以用数据库,也可以用文本文件。
在程序开始时, 将开局库中的内容读入内存, 在内存中检索。
如果在硬盘中检索,韶光花费太大了。

开局库是制作出来的棋谱,加载开局库可减轻引擎开局的运算压力,一样平常一贯跟库走至少不输,也有制作出来通过亏一步棋专门让对方脱库的开局库。

开局库也可以存储在做事器上(云库),由界面程序网络连接调用。

1.4 对局库

当行棋到一定的局势,只要加载的对局库里有这个局势,界面程序会自动在对局库里搜索到这局势的所有棋谱。

1.5 残局库

同样可以把常见的残局棋型及其最佳走法存储在打算机中, 形成残局库, 供引擎程序在残局阶段检索。
开局库由于开局是固定的, 前面几步局势变革不大, 开局库并不大。
但残局库棋子没有固定位置, 可以在它们能去的任何地方, 残局库蜇实在太大。

2 象棋软件利用

2.1 打开界面程序

打开界面程序及加载须要的窗口。

2.2 设置和加载引擎

包括多引擎加载、韶光设置、开局库设置、hash设置、线程设置等。

例如有的引擎在某些局势走得好,此时可以很方便地切换引擎,例如开局、中盘、残棋须要3个引擎,不须要打开三个界面占用系统资源。

2.3 启动剖析模式

点击“剖析模式”按钮即可启动剖析模式,可看到搜索层数、提示着法及评分。

可在【视图】菜单中打开须要的子窗口:

【思考细节】:显示引擎的思考细节,人机参考棋步很有用;

【着法窗口】:显示开局库的棋步;

【对局库窗口】:显示对局库中的棋谱。

3 名词

3.1 UCCI协议

中国象棋通用协议(Universal Chinese Chess Protocol,简称UCCI),是一种象棋界面和象棋引擎之间的基于文本的通讯协议。

设立中国象棋通用引擎协议的目的有:

(1) 使一个“可视化象棋软件”可以利用不同的“核心智能部件”,这些核心智能部件称为“引擎”,凡是遵照UCCI的引擎,都可以被该可视化象棋软件(也称为“界面”)所调用;

(2) 针对所有遵照UCCI的引擎,都可以开拓不同的界面,使其具有不同的功能。

这样,“可视化象棋软件”和“核心智能部件”实现了分离,使得一部分程序设计师能专注于前者(界面)的开拓,而另一部分程序设计师能专注于后者(引擎)的开拓,让中国象棋软件的设计事情系统化、分工化,提高软件设计效率。

UCCI是模拟国际象棋的UCI协议来制订的。
UCCI协议是开放式的协议,并且具有UCI协议的所有特点。

该协议由业余研究电脑象棋程序的复旦大学研究生黄晨首倡于2004年,经由推广目前支持UCCI协议的公开拓表的引擎已经增加到17个(截至2006年11月尾),为中国象棋的信息化铺平了道路。

3.2 界面程序

界面程序一样平常集对弈、拆棋、连线于一体。

界面的紧张元素有(以兵河五四为例)棋盘窗口、棋谱窗口、着法窗口、引擎信息、场合排场曲线、联赛窗口、图形连线、弈天登录及自动打擂、引擎联赛等。

界面程序一样平常基于多线程设计,界面线程卖力显示,赞助线程卖力与引擎通讯。

3.3 引擎程序

包括棋局局势表示,着法表示与天生(天生一棵博弈树),逐层逐个搜索树节点并做局势评估。
其策略核心在于棋局评估函数,核心方法是博弈树搜索。
同时开局库和残局库的构建对算法的性能也有主要的影响。

首先利用一个数据构造来描述棋局信息,对某一特定的棋局信息由着法天生器天生当前下棋方所有合法的着法并依次存入着法行列步队。
然后通过搜索算法来逐一读取着法并调用局势评估函数对该着法所产生的后继局势进行评估打分,从中选出一个最有可能导致走棋方取胜的着法。
在搜索的过程中还可以采取一些赞助手段来提高搜索的效率。

局势便是一盘棋经由多少回合之后当前所处的形势,包括棋盘、红黑双方所剩棋子及其在棋盘上的分布、当前该走棋一方、双方所剩韶光、双方所剩走棋步数等内容。
局势表示是象棋程序的根本, 局势表示的好坏直接关系到走法天生、搜索算法和局势评估的效率, 从而影响象棋程序得到的最佳走法。

象棋程序每一次思考的目的是获取一个最佳走法(至少在程序看来是最佳的)。
要实现这一目标的大略方法便是天生全部所有可能的走法(及可能走法下的新的书面的可能走法……), 然后再一个一个的比较(局势评估), 找出最佳的一个。

局势评估便是判断局势对红方(或者黑方, 或者是当该前走棋一方) 的上风,并把上风进行量化。
由于象棋程序搜索繁芜度太大, 搜索函数不可能搜索到棋局终了的状态, 以是必须在某个深度的结点上结束并返回上一层。
这个结点并没有达到棋局结束(胜平负),该当给它一个值, 反响局势状况, 对红方有利还是对黑方有利,有多少上风。
必须把这种上风量化,以便不同结点的上风可以进行比较, 以确定哪一个结点更好。

中国象棋的局势变革实在是太多了,有时候一个局势可能走法达100多种,一样平常局势也有40多种走法。
要完备搜索10步棋须要3.3年,纵然完备搜索7步棋也要27分钟(按每秒搜索10^8个结点计)。
按一盘棋均匀100步(50个回合)计,要完备搜索100步是绝对不可能的。
如何让打算机在有限的韶光内搜索到更多的空间和更深的步数,是打算机引擎程序必须考虑的问题。
这除了与打算机硬件有关之外,与搜索算法关系很大。
这是由于在搜索树空间中有些分支是多余的,搜索的时候可以跳过某些分支。
跳过的分支越多,搜索的速率越快, 但漏掉最优解的可能性也在增加。
搜索算法必须又快又准地找到最优解。

对付每一个局势,都可以天生一个如下类似的“博弈树”——树的每一个结点表示每一种可能的着法,形成新的局势。
对每一个局势(结点)根据不同的走法又产生不同的局势(生出新的结点),根据思考的步数增加,树的结点以几何倍数扩展。
搜索函数可以通过搜索以当前局势为根结点、限定层数以内的整棵树来得到一个最佳的着法。
有些“暂时”看来很不错的局势由于可能会产生很糟糕的局势因而根本没有考虑的代价。
以是当你看到某个局势有可能产生很糟糕的局势时(确切地说这里的“很糟糕”是与之前所剖析的情形比较较而言的),你应该急速停滞对其剩余子结点的剖析。

上图所示,每展开一步便是一层,象棋软件中所说的深度便是我们所说的层数,对应多少步棋。
其搜索和局势评估的打算以指数级增长。

其余,如果把中国象棋棋谱上一些公认为最佳的开局着法和残局着法存储在数据库中,在开局和残局时用查询取代搜索和评估,那么会大大提高打算机的对弈水平。

ttps://www.xqbase.com/protocol/cchess_ucci.htm

3.4 连线下棋

所谓“连线下棋”便是利用软件连线到各个游戏平台,让软件赞助你下棋或自动下棋。

界面程序一样平常都可以图形连线各大网站的客户真个棋盘,可以自动连线桌面上最上面的象棋客户端。
打开图形连线界面,可以做更新方案、删除方案、测试连线、连线对弈、人机不雅观战等操作。

选定了人机模式后,如果选定不保持同步,人机模式,是兵河五四的走棋不传到客户真个棋盘,你在兵河五四的棋盘只管拆棋,拆好了按按钮就把棋子传到客户端棋盘上了。
相称于拆棋后的立即出步,这点很方便人机模式,防止自己手工搬错子!

http://sharkchess.com/sharkhelp/

3.5 开局库   

开局库险些是每个象棋程序必备的部件,它的好处是:

(1) 纵然再笨的程序,开局库能使得它们在开局阶段看上去不那么业余;

(2) 通过随机选择走法,让开局灵巧多变,增加对弈的意见意义性。

3.6 FEN文件格式

FEN(Forsyth-Edwards Notation)是专门用来表示象棋局势的记录规范,在这个规范下,一个局势可以大略地用一行“FEN格式串”来表示,而不必啰嗦地说:“红帅在四路次底线,黑将在5路底线……”。
由于它是文本格式的(只牵扯到很有限的几个字母、数字和符号),因此网上通报棋局就非常方便,不用把棋图画在纸上或用笔墨笨拙地描述了,而是用棋谱编辑软件摆好局势,自动得到FEN格式串,使得棋谱互换快速而高效。

FEN格式串用来表示一个局势,局势发生变革时,界面程序向引擎程序通报局势信息,如以下的一个FEN格式串:

rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1

(1) 前面最长的一串,表示棋盘布局,中国象棋棋盘有10行,以是要用9个“/”把每一行隔开;棋子名称用英笔墨母表示。
小写表示黑方,大写表示红方。

(2) w,表示轮到哪一方走子,“w”表示红方,“b”表示黑方。

(3) -,空缺,始终用“-”表示。

(4) -”,空缺,始终用“-”表示。

(5) 0,表示双方没有吃子的走棋步数(半回合数),常日该值达到120就要判和(六十回合自然限着),一旦形成局势的上一步是吃子,这里就标记“0”。

(6) 1,表示当前的回合数,在研究中局或排局时,作为研究工具的局势,这一项可以写1,随着场合排场的发展逐渐增加。

https://www.xqbase.com/protocol/cchess_fen.htm

4.7 PGN文件格式

PGN(Portable Game Notation)是棋类游戏过程的文件格式。

(1) PGN文件是文本格式的,可以用任何文本编辑软件建立和修正;  

(2) PGN文件分为“标签部分”和“着法部分”,两部分都规范整洁,既方便阅读,也便于棋谱编辑软件产生和解读;

https://www.xqbase.com/protocol/cchess_pgn.htm

5 历年棋软比赛成绩

2006年棋软比赛成绩:

1.棋天算夜圣 (王骄)

2.象棋奇兵 (赵明阳)

3.象棋旋风(陈朝营)

4.天机 (张旭)

5.将神传说(雷春鸣)

2007年棋软比赛成绩:

1.象棋旋风(陈朝营)

2.天机 (郑旭)

3.棋天算夜圣 (王骄)

4.佳佳象棋 (李国来)

5.象棋奇兵(赵明阳)

2008年棋软比赛成绩:

1. Intella 倚天象棋(陈朝营、韦余涛)

2. Cyclone 象棋旋风(张闽谭卓勋)

3. EThinker 天机(郑 旭)

4. Gagachess 佳佳象棋(李国来)

5. MonkeyKing 猴王(徐心和)

6. NEUChess 棋天算夜圣(王 骄)

7. 3DChess 3D象棋(刘 进)

8. XQMASTER 象棋奇兵(赵明阳)

2009年棋软比赛成绩:

1.象棋名手 (蒋志敏)

2.佳佳象棋 (李国来)

3.陶情弈趣 (谭卓勋.张闽(孤独)

4.倚天象棋 (韦余涛)

5.天机 (郑 旭)

6.新奇兵 (王贤谷(赵明阳))

2010年棋软比赛成绩:

1.象棋旋风Tornado (陈朝营)

2.佳佳象棋Gaga chess (李国来)

3.象棋名手XQMS (蒋志敏.张闽)

4.先知象棋OracleX (张志福)

5.棋 弈Sunrise (北京理工大学)

6.哈工程 (赵国东(哈工程))

7.哈理工象棋 (哈尔滨理工大学)

2019年第三届楚天河界象棋人工智能对决:

1. “旋风”

2. “名手”

3. GGZero

4. 国圣象棋

2019年10月在北京举行的第13届中国打算机博弈锦标赛中,小虫象棋以8胜2和的战绩得到中国象棋组冠军。

6 资源

棋中论坛:http://www.qz777.com/

中国象棋云库:https://www.chessdb.cn/query

以下视频有干系免费资源的下载链接:

https://www.ixigua.com/i6919490649779601923/

ref

《C/C 中国象棋程序入门与提高》

-End-