当计算机诞生时, 人们便想将计算机技术与博弈游戏相结合,这就是机器博弈,机器博弈 是人工智能领域里一个重要研究领域, 在国际上已经开展了半个多世纪。
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设置、线程设置等。