中国象棋对弈系统计算机专业本科学位论文.doc
《中国象棋对弈系统计算机专业本科学位论文.doc》由会员分享,可在线阅读,更多相关《中国象棋对弈系统计算机专业本科学位论文.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河北大学2009届本科生毕业论文(设计)中国象棋对弈系统摘 要人机博弈是人工智能研究的经典课题之一。凭借设计优良的算法和计算机的快速运算能力,计算机可以在人机对弈中表现出相当高的“智能”。中国象棋是我们中华民族文化传统的一部分,有着悠久的历史,并拥有着广泛的群众基础。象棋程序主要由人工智能和界面设计组成。人工智能体现计算机的下棋思路,既计算机如何进行思考并以最佳走法完成下一步,先由相应的搜索算法进行搜索,并对各种可能的走法进行估值,从中选择胜利面最大的一步。界面部分主要便于用户通过以前的下棋步骤,更好地调整下棋思路,着法显示使用户能够清楚地知道下棋过程,更准确地把握整个局面。本文在概述计算机博
2、弈,特别是中国象棋软件概况的基础上,分析了现有中国象棋博弈软件实现方法中存在的问题,设计了棋盘、棋子和评价函数的表示方法,在博弈理论的基础上采用递归方法实现了-剪枝搜索,应用VC和MFC设计并实现了博弈界面。实现了一个具有一定棋力的中国象棋人机对弈程序。关键词:人机博弈 中国象棋 博弈树 VC ABSTRACTMan-machine Game is a classic topic in Artificial Intelligence. Relying on fine-designed algorithms and the fast operation ability, computers ca
3、n display high intelligence in playing chess. The Chinese chess is our Chinese nation culture tradition part, which has the glorious history and is having the widespread mass base. The Chinese chess procedure is mainly composed of the artificial intelligence and the contact surface design.The artifi
4、cial intelligence mainly manifests the mentality of the computer which plays chess.In other words, the computer how to carry on the ponder and completes the next step by the best move. First it carries on the corresponding searching algorithm, and selects the best move to win. Surface is used to adj
5、ust well the mentality of playing chess.Demonstrating can make users know clearly the process of playing chess, in order to grasp the entire aspect accurately.In this thesis, we first present a survey of the state of the art in Computer Game, especially Computer XiangQi software. Then aiming at addr
6、essing the existing problems in XiangQi software, we design a concise framework for XiangQi chessboard representation, static evaluation function and human-computer interface. Futher, we implement the interface and the XiangQi game program MyChess in VC+ and MFC. It is fair for beginner and we imple
7、ment the man-maching playing chess with cerain chess strengh.Key words:Man-machine gambling XiangQi game tree VC一 引言从1956年正式提出人工智能学科算起,50多年来,获得了迅速的发展,在很多学科领域都获得了广泛应用,并取得了丰硕的成果。人工智能已逐步成为一个独立的分支,无论在理论和实践上都已自成一个系统。人工智能目前在计算机领域内,得到了愈加广泛的重视。人工智能研究的一个主要目标是使机器能够胜任一些通常需要人类智能才能完成的复杂工作。当计算机出现后,随着社会的进步和科技的发展,现
8、在计算机似乎已经变得十分聪明了。1997年5月,IBM公司研制的深蓝(Deep Blue)计算机战胜了国际象棋大师卡斯帕罗夫(Kasparov)。在一些原来只属于人类的工作地方计算机以它的高速和准确性为人类发挥着它的作用。人工智能始终是计算机科学的前沿学科,计算机编程语言和其它计算机软件都因为有了人工智能的进展而得以存在。基于人工智能的博弈程序将人工智能和娱乐有机结合在一起。人工智能结合最强的博弈程序是国际象棋程序。国际象棋程序可以不断学习,因此可以不断的提高。计算机程序不会像人那样下棋,它只通过搜索所有可走的步来确定要走的下一步,而且计算机走的每一步都来自上一步的学习得到。博弈过程可以构建一
9、棵博弈树,将所有的走法罗列出来。博弈树的结点对应一个棋局,分支表示一步着法。根结点表示初始局面,叶节点表示终局。终局可以是赢、输、和三者之一。在深度优先的极大极小树过程中,博弈树的某些部分并不会产生有意义的值,因而无需扩展这一部分。-剪枝过程就是利用这一点,将生成后继与倒推估计值相结合,及时剪掉一些无用分支,从而提高了搜索效率。本设计项目拟将人工智能技术与中国象棋博弈相结合,应用博弈树的剪枝技术和最大最小值原理进行搜索,找出博弈的最佳着法,实现基本的人机对弈过程,在实践中更好地学习并掌握人工智能博弈技术。二 需求分析2.1 系统概述2.1.1 中国象棋的一般描述中国象棋是历史上最为悠久的棋类,
10、早在两千多年前的战国时代就有了中国象棋的记载,它至今仍是华人最喜欢的棋类之一。下棋双方根据对棋局形势的理解和对棋艺规律的掌握,调动车马,组织兵力,协调作战在棋盘这块特定的战场上,进行着象征性的军事战斗。棋盘和棋子: 棋盘由九道直线和十道横线交叉组成。棋盘上共有九十个交叉点,棋子就摆在和活动在这些交叉点上。棋盘中间没有划通直线的地方,叫做“河界” ;划有斜交叉线的地方,叫做“九宫” 。棋子共有三十二个,分为红黑两组,每组共十六个。红棋子:帅一个,车、马、炮、相、仕各两个,兵五个。 黑棋子:将一个,车、马、炮、象、士各两个,卒五个。其中帅与将、仕与士、相与象、兵与卒的作用完全相同,仅仅是为了区分红
11、棋和黑棋。将或帅移动范围:只能在九宫内移动。移动规则:每一步只能沿水平或垂直方向移动一点。士或仕移动范围:只能在九宫内移动。移动规则:每一步只可以沿对角线方向移动一点。象或相移动范围:河界的一侧。移动规则:每一步只可以沿对角线方向移动两点,在移动的过程中不能够穿越障碍。马移动范围:任何位置移动规则:每一步只可以水平或垂直移动一点,再按对角线方面向左或者右移动,移动的过程中不能够穿越障碍。车移动范围:任何位置移动规则:可以水平或垂直方向移动任意个无阻碍的点。炮移动范围:任何位置移动规则:移动起来和车很相似,但它必须跳过一个棋子来吃掉对方的一个棋子。兵移动范围:任何位置移动规则:过河前,每步只能向
12、前移动一点。过河后,它便增加了向左右移动的能力,兵不允许向后移动。2.1.2 国内外象棋发展情况象棋是中华民族精神文明的瑰宝,目前象棋博弈即人机对弈已经成为对计算机的算法以及人工智能研究的经典课题。人机博弈问题是近年来比较热点的问题,机器博弈被专家们描述为人工智能的果蝇,就是说人类对机器博弈的研究衍生了大量的研究成果,这些成果对更广泛的领域产生了重要影响。国外的研究人员经过五十多年的对国际象棋博弈系统的探索,终于IBM公司在1997年开发出了超级计算机“深蓝” ,并且战胜了世界国际象棋大师卡斯帕罗夫。这正表明国外计算机人工智能水平确实已经很高。在我国,人工智能也正在飞速发展中。有几个比较有名的
13、中国象棋软件:象棋大师、棋海无涯、象棋奇兵。在中国象棋软件中,核心是搜索技术,比较常见的有:-搜索、极大-极小搜索、迭代深化、置换表法等。2.2 系统运行环境2.2.1 硬件环境CPU:P I I I 内存:512M2.2.2软件环境操作系统:Windows XP2.3 系统功能需求通过对现有游戏工具的研究,游戏本身结构的分析和数据流程实现方式的探讨,本软件在设计上分为人工智能和界面两大部分。人工智能部分实现了如何让计算机下中国象棋,其中涉及人机博弈的基本理论及思想,是该程序的核心部分,同时也是本项目研究的重点所在。光有下棋引擎尚不能满足人机交互的基本要求,因此我们还需要一个界面来作为引擎的载
14、体,使系统更具人性化。 2.4 系统性能需求经济性:作为中国象棋这样的小游戏,其经济成分比重相对较少,主要是支出的费用:其中包括设备购置费、软件开发费用、管理和维护费等。技术性:技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。中国象棋对弈系统的工作主要是:凭借设计优良的算法和计算机的快速运算能力来搜索出最好的着法,计算机可以在人机对弈中表现出相当高的“智能”。计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。市场性:在当前计算机技术飞速发展的大环境下,人工智能和软件技术的更新使中国象棋完全有可能也有能力
15、采用这样先进技术。风险性:包括项目的经济风险、技术风险和市场风险。此项目投入小,技术要求不高,市场潜力比较大。三 概要设计3.1 系统设计目标程序的大概的思想是:首先使用一个数据结构来描述棋局信息,对某一特定的棋局信息由着法生成器生成当前下棋方所有合法的着法并依次存入着法队列。然后通过搜索算法来逐一读取着法并调用局面评估函数对该着法所产生的后继局面进行评估打分,从中选出最有可能导致走棋方取胜的着法。在搜索的过程中还可以采用一些辅助手段来提高搜索的效率。本系统设计了棋盘、棋子和评价函数的表示方法,应用VC和MFC设计并实现了博弈界面,在博弈树理论的基础上采用递归方法实现了-剪枝搜索。该程序用户界
16、面良好,实现了一个具有一定棋力的中国象棋人机对弈程序。程序功能包括:1) 人机对弈;2)棋子、棋盘样式和颜色选择;3)搜索深度设定; 4)新局、结束。3.2 程序设计总体框架整个程序的实现可分为两大部分:1)人工智能部分该部分实现了如何让计算机下中国象棋,其中涉及人机博弈的基本理论及思想,是该程序的核心部分,同时也是本项目研究的重点所在。2)界面及程序辅助部分光有下棋引擎尚不能满足人机交互的基本要求,因此我们还需要一个界面来作为引擎的载体,使系统更具人性化。 四 详细设计4.1 常用搜索算法4.1.1 概述从理论上说,让机器下中国象棋是一个简单的游戏,只要每一步都考虑各种可能的着法,以及每种着
17、法的后继变化,如此下去直至出现一方将死或双方和棋。但是实践操作中,这种策略是不可行的,因为需要考虑的每种着法加起来会是天文数字。不管是人类还是计算机去下棋,都有一整套下棋的理论,人类好几百年前就开始下棋,在近两百年里有很多理论知识,而机器下棋只有五十多年的历史。4.1.2 深度优先搜索图的深度优先遍历的递归定义:假设给定图G的初态是所有顶点均未曾访问过。在G中任选一顶点v为初始出发点(源点),则深度优先遍历可定义如下:首先访问出发点v,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为
18、从源点可达的顶点)均已被访问为止。若此时图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复上述过程,直至图中所有顶点均已被访问为止。 图的深度优先遍历类似于树的前序遍历。采用的搜索方法的特点是尽可能先对纵深方向进行搜索。这种搜索方法称为深度优先搜索(Depth-First Search)。相应地,用此方法遍历图就很自然地称之为图的深度优先遍历。深度优先搜索极大极小树的过程,可以表示为一个递归的形式。如图4-1所示的一棵树,共有三层。根结点为A,其子节点有B、C、D三个,而B、C、D也各有若干子节点。以深度优先算法搜索此树时,先进入根结点A,生成其第一个子节点B;然后遍历B,生成B的
19、第一个子节点E;E将其估值返回给父节点B,删掉E,B生成第二个子节点F;F将其估值返回给父节点B,删掉F,B生成第三个子节点G;G将其估值返回给父节点B,删掉G,B在三个叶节点的返回值中取极小值并将此值返回给A,A生成第二个子节点C,同样遍历C及其子节点,得到C的返回值再生成D并向下遍历之;最后A在B、C、D的返回值中取极大值,拥有该极大值的子节点就是下一步要走的方向。ABCEDFGHIJK图4-1 极大极小树从上述过程可以看出,深度优先搜索极大极小树的过程中,任何时候只要保存与其层数相同个数的结点。图4-1所示的树任何时候仅需保存3个结点。仅生成将要搜索的结点,搜索完成的结点可以立即删去以节
20、省空间。4.1.3博弈策略如今的象棋程序把棋局看成博弈树,每个局面表示成棋局树中的一个节点,每个着法代表它的一个分支。这样,树就由双方不同层面上的所有着法组成。令红棋胜的局面值为1,黑棋胜的局面值为-1,和局的值为0。当轮红棋走时,红棋定会选择子节点值为1或0(如果没有值为1的子节点的话)的走法;而轮到黑棋时,黑棋则会选择子节点值为-1或0(如果没有值为-1的子节点的话)的走法。对于中间结点的值有如下计算方法:如果该结点所对应的局面轮到红棋走,则该结点的值是其最佳(对红棋而言)的一个值;如果该结点所对应的局面轮到黑旗走,则该结点的值是其最差(对红旗而言)的一个值。这样,从这棵树的叶子节点倒推向
21、根部,就可以得出所有节点的值。双方就可以从其所面临的棋局中选择一步好棋。然后一步步走向胜利。表示轮到红方走棋表示轮到黑方走棋图4-2 象棋博弈示意图由博弈树的构造可知:在博弈树中,由于叶节点的值可以由估计函数给出,因此中间节点的值可以通过从其孩子节点中或取最大值或取最小值求得,从而最终确定根结点的值。极大极小搜索算法是通过递归的形式完成的。极大极小搜索算法运行时要检查整个博弈树,然后尽可能检查最好的线路。极大极小搜索算法容易理解,但是效率非常低。每次搜索最深一层时,树的大小就呈指数增长。在极大极小搜索的过程中,存在着一定程度的数据冗余。Alpha-Beta搜索能够让我们忽略许多结点的搜索。对于
22、每一个被忽略的非叶子节点来说,这都意味着不仅节点本身,而且节点下面的子树也被忽略掉了,这就导致了Alpha-Beta搜索需要遍历的节点远远于少于极大极小算法所遍历的节点。这也同时意味着对搜索同一棵树来说,Alpha-Beta搜索所花费的时间远远少于极大极小搜索算法所花费的时间。ABCDEF1615表示取极大值的节点表示取极小值的节点图4-3 Alpha剪枝示意如图4-3所示,有一棵极大极小树的片段,节点B的值为16,结点D的值为15,由此我们可以判断结点C的值将小于等于15(取极小值);而结点A的值为结点Max(B,C),为16,也就是说不再需要估结点C的其他结点如E、F的值就可以得出父节点A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中国象棋 对弈 系统 计算机专业 本科 学位 论文
限制150内