当计算机诞生时, 人们想把计算机技术和游戏结合起来,这就是机器游戏,机器游戏 是人工智能领域的重要研究领域, 半个多世纪的国际发展。
1996年2月10日,IBM装载国际象棋程序深蓝色的超级电脑首次挑战国际象棋世界冠军加里·卡斯帕罗夫以2-4输掉了比赛。2月17日比赛结束后,研究小组进一步改进了深蓝。
1997年5月11日,卡斯帕罗夫 2.5:3.5 (1胜2负3平)输给深蓝。
电子计算机在国外开始, 国际象棋在世界上广泛发展, 因此,国际象棋机器博弈的研究在国外相对较早。中国象棋是世界上历史最悠久的棋类, 早在2000多年前,战国时期就有象棋记载, 然而,由于电子计算机在中国的普及,相关技术的发展远远落后于国外先进国家,中国象棋计算机博弈的研究才开始近20年。
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 引擎程序
引擎程序是一个生成、搜索、评估和给出最佳方法的游戏程序。3000
免费引擎程序包括:
32位系统:
棋手326六核版(旧版破解引擎,残局棋力还可以)
象棋旋风6. 3破解版(操作慢,棋力差)
南澳1.6双核版(棋力一般)
64位系统:
国圣双核破解版(棋力一般)
三元加强版(棋力略优于名人326)
佳佳象棋(最高支持12S线程、强机下棋能力明显优于其他免费引擎)
ggzero (用显卡计算AI引擎仍在训练和提高棋力)
1.3 开局库
如果游戏程序能借鉴常用的开局模式,可以大大节省时间, 留出更多的时间去思考中局。由于开局阶段棋子多,棋型变化大, 搜索不会很深, 搜索结果往往不如人们通过几千次演练获得的常见开始, 避免搜索得到一些不好的方法。
在计算机中存储成千上万的开局, 形成开局库, 每种情况都有最好的方法, 同时要注意棋方。如果游戏引擎程序在开始阶段首先搜索开始库, 当前搜索结果直接取出最佳方法。当开局库中有多种对应情况时, 从多个中选择一个策略是必要的。假如开局库没有同样的情况, 用搜索算法重新搜索。一旦开局库中没有相同的情况,就不会在后续搜索中找到开盘库。
开仓库必须方便储存, 检索也很方便。可以使用数据库或文本文件。程序开始时, 将开始库中的内容读入内存, 检索内存。如果在硬盘中检索,时间太长。
开局库是制作的棋谱。加载开局库可以减轻引擎开局的操作压力。一般来说,它至少不会输给库。还有一些开局库是专门通过亏损一步棋让对方脱库的。
由界面程序网络连接调用的服务器(云库)也可以存储开始库。
1.4 对局库
当行棋达到一定情况时,只要加载的游戏库中有这种情况,界面程序就会自动在对局库中搜索到这种情况的所有棋谱。
1.5 残局库
在计算机中也可以存储常见的残局棋类型及其最佳方法, 形成残局库, 在残局阶段检索引擎程序。开始库是固定的,因为开始是固定的, 前几步的情况变化不大, 开局库不大。但是残局库的棋子没有固定的位置, 它们可以去任何地方, 残局库蛰太大了。
2 使用象棋软件
2.1 打开界面程序
打开界面程序和加载窗口。
2.2 设置和加载发动机
包括多引擎加载、时间设置、开始库设置hash设置、线程设置等。
例如,有些发动机在某些情况下表现良好,可以很容易地切换发动机。例如,开始、中间磁盘和残余棋盘需要三个发动机,而打开三个界面来占用系统资源。
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-
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至827202335@qq.com 举报,一经查实,本站将立刻删除。文章链接:https://www.eztwang.com/dongtai/62907.html