吴昊的一些想法:棋类的规则的复杂,其AI也随着一起复杂,有些时候,方法还是多样化的,比如,搜索和博弈算法是具有一些客观性的,但是,这些客观性如果 可以和某些主观性(比如,人为地确定的一些规则)结合起来,则可以起到一些更好的效果。目前,中国象棋AI水平最高的是巫师象棋,其在2008年的智运会 上夺得了中国象棋AI的冠军。其最新的引擎据说是目前世界水平第一的中国象棋大师的棋力的两倍左右。相比中国象棋来说,AI目前最难的还是围棋。目前围棋 AI最牛的软件是“手谈”,但是,即使这样,其水平也最多是业余一段左右。我听说日本围棋界的相关报道显示,假设真有一种“每一步棋都是最强的手筋”,也 就是最大效率的话,可以让曾经如日中天的赵治勋两子,此如果为实的话,估计也是基于一定概率的情况推算出来的。
(图为目前中国象棋界AI最牛B的巫师象棋)
摘 要
计 算机博弈是人工智能研究的一个重要分支,被专家门称为人工智能界的果蝇,意思是说人类对计算机博弈的研究衍生了大量的研究成果,这些成果在人工智能领域产 生了重要影响。国际象棋计算机博弈研究已经有了五十多年的历史,IBM公司在1997年开发出了超级计算机“深蓝”战胜了当时世界国际象棋大师卡斯帕罗 夫,标志其水平已达到国际象棋世界冠军水平。而中国象棋的历史更为悠久,虽然中国象棋计算机博弈研究起步晚于国际象棋,但起点高,国际象棋计算机博弈研究 的成果为我们提供了很多的借鉴技术。近年来随着研究的不断深入,中国象棋计算机博弈越来越成为继国际象棋后计算机博弈研究的热点之一。
本文在对目前主流的计算机博弈技术进行全面的综述后,对构成计算机博弈系统的四个组成部分进行了优化和改进,特别是针对静态估值算法不能应对局势变化的固有缺点,提出了动态局势再评估算法。在此之上实现了一个中国象棋计算机博弈系统,论文主要研究了以下3方面的问题:
第一、对计算机博弈系统的四个组成部分及基础技术进行了研究,包括数据结构,着法生成,搜索算法,估值算法。
第二、研究了建立在Alpha-Beta搜索算法基础之上的各种优化技术。主要讨论了窗口探测,静寂搜索,历史启发,深层迭代,Null Move5个方面的优化方法,并根据实验结果结合置换表技术提出了具体的组合方案。
第三、论文针对目前广泛使用的静态估值算法不能应对局势变化的固有缺点,提出了动态局势再评估算法。通过引入“局势因子”,使得估值算法根据当前局面形势做出攻防策略。
关键词:人工智能;中国象棋;博弈算法;动态局势再评估;局势因子
Abstract
Computer game is an important branch of artificial intelligence research. It is described as a fruit fly of the artificial intelligence by experts. That’s to say human’s research to the computer game has achieved massive research results. These achievements have played an important influence on a more widespread domain. Throug overseas researchers’ exploration of chess gambling system for more than 50 years, IBM Corporation developed super computer ”DarkBlue” in1997,and has defeated world chess master Ksparov; while the Chinese chess history is more glorious. The research of Chinese chess computer game is later than the research of chess computer game, but it based on the computer game’s research results. With the deeper study of research, Chinese chess computer game becomes one of the most active parts of computer game research area recently.
After summarizing related researches on Chinese chess computer game. Some key problems are studied and discussed in this dissertation. Based on above work,an integrated Chinese chess computer game system are designed and developed. The whole work mainly focuses on the following three aspects:
1. Introduce the key component parts of a Chinese chess computer game system which involve date structure, generate legal moves, search algorithms and evaluate algorithms.
2. Make a study on the optimization of search algorithm based on the Alpha-Beta algorithm which included Principal Variation Search, quiescence search, history heuristic, interative deepening, null-move pruning and so on.
3. This paper provides an algorithm called “dynamic situation evaluate algorithm” which avoids the drawback of static evaluate. As the introduction of “decision factor”, computer can make decisions by situation.
Key words: artificial intelligence; Chinese chess; game algorithm; dynamic situation evaluate algorithm; decision factor
目录
第一章 绪论... 8
1.1 选题背景和研究意义... 8
1.2 中国象棋计算机博弈的发展历程... 9
1.3 国内外研究现状... 10
1.4 本文的主要工作和论文结构... 11
第二章 背景知识... 13
2.1 数据结构... 13
2.1.1 棋盘表示... 13
2.1.2 置换表... 14
2.2 着法生成... 15
2.3 搜索算法... 16
2.3.1 博弈树的基本概念... 16
2.3.2极大极小算法... 17
2.3.3 负极大值法... 19
2.3.4 Alpha-Beta搜索算法... 20
2.4 估值算法... 22
2.5 本章小结... 23
第三章 搜索算法的优化... 24
3.1 窗口探测... 24
3.1.1渴望搜索... 24
3.1.2 极小窗口算法... 25
3.2 静寂搜索... 26
3.3 历史启发... 26
3.4 深层迭代... 27
3.5 Null Move. 29
3.6 内存优化... 29
3.7 本章小结... 30
第四章 动态局势再评估算法... 31
4.1 静态评估算法详述... 31
4.1.1 对子力和攻击性的评估... 31
4.1.2 对棋子位置附加值的评估... 31
4.1.3 对灵活性的评估... 32
4.1.4 对棋子的协调性和保护性的评估... 32
4.1.5 静态估值函数... 33
4.2 静态估值函数的缺陷... 33
4.3 局势因子及动态局势再评估函数... 33
4.4 动态局势再评估算法的步骤... 36
4.5 本章小结... 36
第五章 中国象棋计算机博弈系统——出棋制胜的设计与实现... 38
5.1 系统设计... 38
5.1.1中国象棋通用引擎协议层(UCCI) 38
5.1.2 “出棋制胜”软件系统结构图... 39
5.2 详细设计... 39
5.2.1 棋盘棋子表示... 39
5.2.2 着法生成... 40
5.2.3 搜索算法... 43
5.2.4 评估算法... 45
5.2.5 置换表... 45
5.3 实验结果和相关问题的讨论... 46
5.4 本章小结... 47
第六章 总结... 48
致谢... 49
参考文献... 50
Contents
Chapter 1 Introduction. 8
1.1 Research Topics’ Background and Significance. 8
1.2 Chinese Chess Computer Game’s Developing Process. 9
1.3 The Status Quo at Home and Abroad.. 10
1.4 The Main Work and Structure of this thesis. 11
Chapter 2 Background Knowledge. 13
2.1 Date Structure. 13
2.1.1 Chess Board Expression. 13
2.1.2 Transposing Table. 14
2.2 Moves Generation. 15
2.3 Search Algorithms. 16
2.3.1 game tree’s concept 16
2.3.2 Minimax Algorithm.. 17
2.3.3 Negamax Algorithm.. 19
2.3.4 Alpha-Beta Algorithm.. 20
2.4 Evaluate Algorithm.. 22
2.5 Chapter Summary. 23
Chapter 3 The Optimization of Search Algorithm.. 24
3.1 Window Detection. 24
3.1.1 Eager Search. 24
3.1.2 Principal Variation Search. 25
3.2 Quiescence Search. 26
3.3 History Heuristic. 26
3.4 Interative Deepening. 27
3.5 Null Move. 29
3.6 Memory Optimization. 29
3.7 Chapter Summary. 30
Chaper 4 Dynamic Situation Evaluate Algorithm.. 31
4.1 Static Evaluate Algorithm.. 31
4.1.1 The Evaluation of The Chessman’s Value. 31
4.1.2 The Evaluation of The Chessman’s Position. 31
4.1.3 The Evaluation of The Chessman’s Movability. 32
4.1.4 The Evaluation of The Chessman’s Compatibility. 32
4.1.5 Static Evaluate Method. 33
4.2 Static Evaluate Method’s Disadvantage. 33
4.3 Decision Factor and Dynamic Situation Evaluate Algorithm.. 33
4.4 The Steps of Dynamic Situation Evaluate Algorithm.. 36
4.5 Chapter Summary. 36
Chaper 5 Chinese Chess Computer Game System.. 38
5.1 System Design. 38
5.1.1 Universal Chinese Chess Protocol (UCCI) 38
5.1.2 The Structure of The System.. 39
5.2 Detailed Design. 39
5.2.1 Chess Board Expression. 39
5.2.2 Moves Generation. 40
5.2.3 Search Algorithms. 43
5.2.4 Evaluate Algorithm.. 45
5.2.5 Transposing Table. 45
5.3 The Experimental Results and Discuss Related Issues. 46
5.4 Chapter Summary. 47
Chapter 6 Summary. 48
Acknowledgement 49
References. 50
计 算机博弈是人工智能研究的一个重要分支,被专家门称为人工智能界的果蝇,意思是说人类对计算机博弈的研究衍生了大量的研究成果,这些成果在人工智能领域产 生了重要影响。国际象棋计算机博弈研究已经有了五十多年的历史,IBM公司在1997年开发出了超级计算机“深蓝”战胜了当时世界公认第一的国际象棋大师 卡斯帕罗夫,标志其水平已超过国际象棋世界冠军。而中国象棋的历史更为悠久,早在2000多年前的战国时代就已经有了关于象棋的记载。中国象棋计算机博弈 的难度绝不会低于国际象棋,表1.1是几种棋类游戏空间复杂度和树复杂度对比,其中中国象棋的空间复杂度是国际象棋的100倍,而树复杂度则达到了1027倍。
表1.1 几种棋类空间复杂度和树复杂度对比
中 国象棋计算机博弈起步晚,七十年代末才有相关的研究文献,比国际象棋晚了近20年,相对国际象棋计算机博弈技术还不够成熟。但近年来通过许多中国象棋软件 编程爱好者和多个象棋开发团队的努力,使中国象棋软件水平有了长足的进步,慢棋已达到业余大师水平,快棋可以和象棋大师对抗。但要设计出打败人类的中国象 棋软件,还需要一段发展过程。
人工智能的先驱者们曾认真地表明:如果能够掌握下棋的本质,也许就掌握了人类智能行为的核心;那些能够存在于下棋活动中的重大原则,或许就存在于其它任何需要人类智能的活动中。因此对于中国象棋人机博弈问题的研究意义重大。
计算机中国象棋是在计算机国际象棋博弈的基础上发展起来的。
第 一个棋弈程序写于电脑被真正发明之前,这是一个非常有趣的事实。它是由数学家阿伦·图灵(Alan Turing)所编写的,他知道可编程电脑即将出现,一旦发明出来,就有下棋的能力。图灵的伟大成就是领导专家小组破译了纳粹德国的“谜”密码,因此对第 二次世界大战的决定性结束作出了贡献。战争结束不久,他就写下了能够让机器下棋的指令。由于当时还没有一台机器能够执行这些指令,于是他就自己执行(即图 灵根据他所写的算法去运算,严格根据运算得出的结果去走棋),充当一个“人类CPU”,每走一步需要半个多小时。
国际象棋计算机博 弈的重大突破应归属于C.Shannon1950年发表的两篇有关计算机博弈的奠基性文章(Programming A Computer for Playing Chess 和A Chess-playing Machine)。1946年美籍匈牙利数学家约翰·凡·诺依曼(John von Neumann)被指派设计一台强大的计算机器以加快工作进度的任务。到了1950年,一台叫“MANIAC一号”的巨型机被交付使用,它内装有数千个电 子管和开关,每秒能执行10,000条指令,它也可以编程。科学家并不马上用它来设计核弹,而是先试验一下这台机器,而首先做的事情之一就是编写一个下棋 的程序,这是一个缩小的6x6棋盘,没有象。虽然这么简化了但程序要搜索四层的深度仍需要12分钟。
50年代中期,这台机器下了三局棋。第一局是自己对自己,白胜。第二局是对一位让王后的强棋手,这局棋进行了10个小时,结果人类大师胜。第三局机器的对手是一位刚学棋一个星期的的年轻姑娘,结果程序23回合得胜。这是在智力博弈中人类首次负于电脑。
1958 年,匹兹堡大学的三位科学家奈维尔、肖恩和西蒙(Newell, Shaw and Simon)有重大发现:可以从搜索树中剔除相当大的部分而不影响最后结果,他们把这叫Alpha-Beta算法。很重要指出的是,这是一个纯数学领域的 技巧,独立于任何国际象棋知识而生效。
1958年,IBM704成为第一台能同人下棋的计算机,名为“思考”思考速度每秒200步。60年代中期,科学家德里夫斯断言,计算机将无法击败一位年仅10岁的棋手。
1967年,MIT的Greenblatt等人在PDP-6机器上利用软件工具开发的Mac Hack VI程序,参加麻省国际象棋锦标赛,写下了计算机正式击败人类的记录。
从1970年起,ACM(Association for ComputingMachinery)开始举办每年一度的全美计算机国际象棋大赛。从1974年起,三年一度的世界计算机国际象棋大赛开始举办。
1975 年,电脑科学家肯·汤普森(Ken Thompson)觉得不能等待速度快5一25倍的百万美元级超级电脑来用于提高下棋能力。他和贝尔实验室的同事一起决定建造一台专门用途的机器,使用了 价值大约20,000美元的几百个芯片。他们把这台机器叫做“尤物”(belle),它只会下国际象棋。它能够每秒搜索大约18万个局面(而当时的超级电 脑只能搜索5000个)。“尤物”在比赛中可以搜索八至九层那么深,因此可以和大师同场竞技。从1980年到1983年它赢得了世界电脑国际象棋和所有其 它电脑竞赛冠军,直到被价钱贵上千倍的克雷X-MPs巨型机(Cray X-Mps)取代为止。
80年代中期,电脑科学家、卡梅隆 大学的汉斯·贝利纳(Hans Berliner)教授接手肯·汤普森放下的工作。贝利纳的几个学生包括华人许锋雄等自行研究叫“芯测”的机器,后来则是“深思” (Deep Thought)。它只花5000美元但每秒搜索50万个局面。就在它诞生的同一年,就因在一次比赛中击败了一位大师而震惊了国际象棋界,成了第一台国际 象棋大师级的计算机。许锋雄等后来加入了IBM,和其他人合作制造了IBM现在的“深蓝” (Deep Blue)。1997年深蓝在“回敬赛”中战胜棋王卡斯帕罗夫,标志者计算机国际象棋博弈达到了一个新的里程碑。
计算机中国象棋的研究历史较短,文献和报道均很少。台湾学者在七十年代末开始了计算机中国象棋的研究工作,并在八十年代初开发和出版了苹果机(6502) 和IBM PC机(8088)象棋程序。1983年南开大学开发了残局程序,并在随后的几年里开发了全局程序。但由于中国象棋在计算机实现方面比国际象棋更加复杂, 而且中国象棋博弈技术研究落后于国际象棋,所以中国象棋软件还远未达到世界冠军水平。但近年来通过许多中国象棋软件编程爱好者和多个象棋开发团队的努力, 使中国象棋软件水平有了长足的进步,慢棋已达到业余大师水平,快棋可以和象棋大师对抗。当然要设计出打败人类的中国象棋软件,还需要象开发国际象棋软件那 样有大量的商业金钱投入,比如要组建由中国象棋特级大师和最优秀象棋软件开发设计人员组成的开发团队,使用世界上最先进的超级计算机等。
中 国象棋计算机博弈研究开始于70年代,比较著名的软件有台湾的吴身润的《中国象棋》、光谱公司出品的《将族111》、晨业编制的《象棋水浒战》、《象棋武 林帖》而且涉足这个领域比较早的是台湾的一些专家学者。近几年,在内地也涌现出一批对中国象棋人机博弈问题感兴趣的高校、单位及个人,而且进入21世纪以 后,中国象棋计算机博弈的研究受到越来越多的学者的关注,比较著名的博弈软件如表1.2所示。
图1.1 知名象棋程序一览[1]