




已阅读5页,还剩58页未读, 继续免费阅读
(计算机应用技术专业论文)中国象棋博弈·局面评估研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 计算机博弈是博弈领域长期的奋斗目标,也是人工智能学科极具挑战性 的研究课题之一。凭借计算机的高速运算能力和设计严谨的算法,计算机可 以在人机对弈中表现出相当高的“智能”。 国际象棋已经有了“深蓝”这样震惊世界的成果,更加复杂的中国象棋 计算机博弈水平却远远落后。 一款象棋博弈程序的实现主要被分为两大部分:界面( 程序辅助) + 引擎 ( 人工智能) 。本文将介绍如何实现一款中国象棋博弈程序。其中包括:搜索 算法、局面评估、哈希表、历史启发、局面库以及中盘研究;打谱;复盘等 功能的实现。 关键词:中国象棋;人工智z f j 匕v - , ;博弈树;p v s 搜索算法;局面评估; i i a b s t r a c t a b s t r a c t c o m p u t e rg a m ei st h ea i mo fg a m ef i e l d sf o rl o n g ,a n di st h eo n eo ft h e c h a l l e n g i n gt o p i c s i na r t i f i c i a l i n t e l l i g e n c e r e s e a r c h w i t ht l l e c o m p u t e r s l l i g h - s p e e dc o m p u t i n gp o w e ra n dw 色l l - s t r u c t u r e da l g o r i t h m s ,t h ep e r f o r m a n c eo f c o m p u t e rc a nb ev e r y “s m a r t i nm a n m a c h i n ec h e s s t h o u g hw eh a v ec h e s sl i k e “d e e pb l u e ”w h i c hs h o c k e dt h ew o r l d ,t h em o r e c o m p l i c a t e dc h i n e s ec h e s sl e v e l sa r ef a rb e h i n d t h ei m p l e m e n t a t i o no fc h e s sg a m ep r o g r a ms h a l lb ed i v i d e di n t ot w op a r t s : i n t e r f a c e ( p r o g r a ma s s i s o + e n g i n e ( a r t i f i c i a li n t e l l i g e n c e ) 7 n l i sa r t i c l ew i l l i n t r o d u c eh o wt o i m p l e m e n tac h i n e s ec h e s sg a m ep r o g r a m a b o u t :s e a r c h a l g o r i t h m 、r e s e a r c ho fs i t u a t i o na s s e s s m e n t 、h a s h t a b l e 、h i s t o r i c a li n s p i r a t i o n 、 s i t u a t i o nl i b r a r ya n dm i d c a pr e s e a r c h 、m a k es i t u a t i o n 、r e c o v e r yd i s ka st h e r e a l i z a t i o no ff u n c t i o n ss u c h k e yw o r d s :c h i n e s ec h e s s ;a r t i f i c i a li n t e l l i g e n c e ;g a m et r e e ;p v ss e a r c h a l g o r i t h m ;r e s e a r c ho fs i t u a t i o na s s e s s m e n t ; i i i 学位论文独创性声明 学位论文独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果,也不包含为获得直昌盍堂或其他教育机构 的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均 已在论文中作了明确的说明并表示谢意。 学位论文作者签名( 手写) :眵撙 签字日期: 硼罗年l 乞月衫日 学位论文版权使用授权书 本学位论文作者完全了解直邑太堂有关保留、使用学位论文的规定,有权保 留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。 本人授权直量太堂可以将学位论文的全部或部分内容编入有关数据库进行检索, 可以采用影印、缩印或扫描等复制手段保存、汇编本学位论文。同时授权中国科 学技术信息研究所将本学位论文收录到中国学位论文全文数据库,并通过网 络向社会公众提供信息服务。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名( 手写) : 哆撙 签字日期:叫年l z 月勺” 导师签名( 手写) :白c 妒 签字日期:训7 年f2 ,月弓e l 第1 章引言 第1 章引言 1 1 计算机博弈概述 计算机博弈是人工智能学科和计算机学科的交叉研究方向之一。自从计算机 诞生以来,许多著名学者都曾经涉足于这一领域的研究工作。计算机之父冯诺 依曼( w b n n e u n a n n ) 就提出了用于博弈的极大极小定理【1 1 ,信息论的创始人香浓 ( c l a u d ee s h a n n o n ) 教授,又给出了极大极小算法 2 1 ,著名的计算机学家阿兰图 灵( a t u r i n g ) 也曾做过机器博弈的研究【3 1 。伴随着计算机硬件的飞速发展, a l p h a b e t a 剪枝算法的提出”1 、极小树的证明【5 t 、负极大值算法的给出1 5 1 、迭代深 化思想的实现f 6 1 ,都使得机器博弈有了长足进展。以i b m “深蓝为代表的划时 代成果,表明计算机的弈棋能力已经可以和人类精英较量。如今,机器博弈已经 成为一个独立而重要、颇有发展前途的学术研究领域,但是它在中国的发展还很 落后。计算机博弈通常只被看作是一种科技活动,而常常被学术界所忽视,也正 是由于缺少学术研究的有力支持,才使得这一方向的发展比较缓慢,尤其是在中 国内陆。机器博弈作为计算机学科的一个分支,在吸收其他学科的成果方面明显 不够,如对策论、系统论、控制论等。作为人工智能学科的“果蝇 ,机器博 弈由于缺少计算机学科的有力支持,其研究成果也只能作为初级的游戏产品。 1 2 计算机棋类博弈分析 尽管目前有的棋类的计算机水平已经高出了人类大师,如国际象棋,但是计 算机间的较量仍然持续不断,各种人机大战也接二连三。因为计算机的智能也需 要不断地提高。而那些水平还不高的计算机博弈项目,如中国象棋、日本将棋和 围棋,更是倍受人们的青睐。 计算机棋类博弈基本属于完全信息的动态博弈。也就是对弈双方不仅清楚当 前的局面,了解对手以往的着数,而且了解对手接下来可能采取的着数。尽管双 方可能采取的着法数以十计、百计,但毕竟还是有限的。计算机可以通过展开一 颗根在上、叶在下的庞大的博弈树描述这一过程。再利用自身在时间、空间上的 强大能力进行巧妙的搜索,从而找到可行解及近优解,即给出当前的着法。 摩尔根与果蝇 p p t o l ,t o m a sh u n tm o r g a na n dd r o s o p h i l a h t t p :b a s i c s h s m u e d u c n j p k c m a r x _ p h i l o s o p h y y x y z x 2 5 6 ,1 ,t h o m a sh u n tm o r g 柚 l 第1 章引言 显然,计算机的搜索能力是计算机智力水平的重要体现。其实,人类在求解 各种问题的时候,解析求解还是次要的。人们大量采用的方法,人类智能的体现, 主要也是在头脑里搜索。脑袋转的快、主意多,智商就高。 棋类博弈软件的设计,首先遇到的难题便是数据结构的选择。其中包括棋盘、 棋子、棋局和着法的编码与存储。良好的数据结构可以节省大量的存储空间,可 以提高存取的效率。为了适应博弈树的展开与搜索,常常还要同时给出棋局的多 种数据格式。如棋局状态、棋子位置、比特棋局和比特向量,还要用到哈希变换 和哈希表等。 棋局的静态评估是机器博弈的另一个难点,它不仅需要棋类对弈的基本知 识,而且用到直接量化、模式量化、随机评估、模糊评估等一系列手段。对于象 棋可以给每个棋子和棋位打分,而对于围棋则要进行定式的抽取和模式的匹配。 棋类博弈的高手主要应在这方面提供更多的专业知识。 搜索算法是机器“思维 的核心。包括着法生成,博弈树展开,各种剪枝搜 索和各种启发式搜索。现有的成果非常丰富,也是今后研究工作的重点。 编程语言,程序设计方法、软件工程、并行计算等都是算法实现的重要技术, 需要和博弈原理有机结合,才能编写出高水平的博弈软件。 2 第2 帝中国象棋在计算机中的表示 第2 章中国象棋在计算机中的表示 2 1 基本功能模块 中国象棋要在计算机上实现,首先要解决的就足界面和操作问题。程序应该 挺供给用户个基本的游戏界面并且能够实现下棋,悔棋等千h 关的操作。 圈2 】程序界面 由此,我们给程序规划了以下几个基本功能模块 一、初始化部分 p r i v a t ev o i di n i t g a m e 0 rj ! g j - ! “ ! ! j 二j 叫乜签 ) l n i t g a m e 0 负责的是游戏的韧始化。我们把有关中国象棋的棋局初始化过程放 在了这里f i i 。初始化的内容包括:l 、引擎部分用到的相关变量初始化( 包括棋 予位赶( 拱盘数组) ,当前下棋方标志、选中棋子标志、游成模式、棋局过程数 组等) :2 、程序辅助部分用到的帽关控件的初贻化( 包括对上一步、下一步按钮 的状态显示,棋局过程列表框显示等) 。 挝瑟l_盖髫上甲11笛国甲氩_i一|门溶箩忿警嘞一塞浆擎卜y|i卜l澎 第2 章中国象棋在计算机中的表示 二、绘图部分 v o i dd r a w q p ( ) v o i dd r a w k u a n g o v o i dd r a w v a l u e 0 ;: ) d r a w q p 0 函数和d r a w k u a n g ( ) 匪1 数负责的是程序界面的绘图。在这里要完成 棋盘、棋子的显示,下棋起始位置和目标位置的提示框的显示。 由于程序中的棋盘、棋子等都是以位图的形式给出的。所以在d r a w q p ( ) i 呈j 数 里所做的工作主要都是在贴位图。 需要注意的是由于位图文件不能像g i f 文件那样有透明的背景并且棋子是圆 形的而位图文件只能是矩形的,所以如果直接贴图的话会在棋盘上留下一块白色 的边框棋子的背景。因此,要想让棋子文件的背景“隐藏”需要通过一些“与” 和“异或”操作来屏蔽掉棋子的背景。在这里使用到了一些a p i 函数:如 c r e a t e c o m p a t i b l e d c ( ) 、t r a n s p a r e n t b l t ( ) 、s e l e c t o b je c t ( ) 等。另外为了对颜 色更好控制,还需要编写一个颜色转换函数,能够将颜色值( c o l o r 对象) 转换 成r g b 值。 d r a w v a l u e ( ) i 函数负责的是游戏过程中局面分数的显示,它能够把当前局面每 一个棋子的得分画在棋子的下方并且显示局面分差。这样方便我们观察棋局过程 棋子分数的变化,来理解计算机选择下法的依据,从而判断局面评估函数参数是 否设置得合理。这也是程序中重要的一个辅助部分。 三、行棋部分( 鼠标事件响应) 程序中下棋的操作是通过鼠标在棋盘( p a n e l _ q i p a n 控件) 上的点击实现的, 我们为该控件添加鼠标事件的消息,可得到如下函数: p f i v a t ev o i dp a n e l _ q i p a n _ m o u s e c l i c k ( o b j e c ts e n d e r , m o u s e e v e n t a r g se ) : ) 当用户在窗体棋盘面板按下鼠标左键时,程序就会调用该函数来进行处理。其 中第二个参数e 是我们在程序中所要用到的,它给出了当鼠标被按下时鼠标指针 相对于棋盘的位置坐标。通过对这一信息进行转换我们可以得知用户的走法,并 且调用相关的规则函数判断该走法是否合法。 4 第2 章中国象棋在计算机中的表示 在m o u s e c l i c k 函数里我们处理以下几种游戏模式: 1 、人机对战 2 、打谱练习 3 、复盘模式 4 、局面评估 5 、中盘研究 6 、空模式 在大多数模式中,主要的操作为: 1 、如果用户点击鼠标的位置落在己方的棋子上,表示用户选中了该棋子, 下一步将移动该子进行走棋( 也可能用户下一步将会选择己方另外的棋子,总之 这一操作会记录下用户所选的将要走的棋子) 。 2 、如果之前用户已经选过了棋子,那么这一次的点击( 如果不是另选本方 的其它棋子的话) 表达了用户的一次走棋过程。在收到用户传达的走棋信息后, 我们先判断该着法是否合法( 是否符合中国象棋的游戏规则) ;如果合法,则执 行该下法。如此,在m o u s e c l i c k 函数里,我们实现了游戏的操作部分( 当然每走 一步棋,还还需要调用绘图函数来显示棋盘局面的更新) 。 以上三部分并非程序所实现的全部,而仅仅是与我们的程序密切相关的部 分。此外还有其它部分对程序同样必不可少,比如游戏规则函数、棋局过程显示 等,但在此不多做介绍。 2 2 棋局表示 计算机下棋的前提是要让计算机读懂象棋。所谓读懂,即计算机应该能够清 楚地了解到棋盘上的局面( 棋盘上棋子的分布情况) 以及下棋方所走的每一种着 法。因而首先我们需要有一套数据结构来表示棋盘上的局面以及着法。 当前主要有两种棋盘表示法:一种是棋盘数组,另一种是位棋盘。位棋盘最 初是国际象棋( 8 木8 ,刚好6 4 b i t s ) 里引入的,其最大的优点就是超高的运算效率与 空间节省。所以大多数博弈软件都是用位棋盘作为基本的数据结构。但中国象棋 是1 0 9 的棋盘,不易用位棋盘表示。这里采用了最传统的同时也是最为简单的 棋盘数组。即用一个1 0 9 的数组来存储棋盘上的信息,数组的每个元素存储棋 盘上相应位置是何种棋子。这种表示方法简单易行( 缺点是效率不是很高) 。按 此方法棋盘的初始情形如下所示: 第2 章中国象棋在计算机中的表示 p u b l i cb y t e , c h e s s b o a r d 2 n e w b y t e 10 ,9 】 1 1 ,1 0 ,1 2 ,1 3 ,1 4 ,1 3 ,1 2 ,1 0 ,1 1 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 0 ,9 ,0 ,0 ,0 ,0 ,0 ,9 ,0 8 ,0 ,。8 ,0 ,8 ,0 ,8 ,0 ,8 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 1 ,0 ,1 ,0 ,1 ,0 ,1 ,0 ,1 a l p h a )a l p h a = s c o r e ;保留最大值 i f ( s c o r e = b e t a )b r e a k ;剪枝 r e t u r na l p h a ;返回极大值 ) 1 4 第3 章算法设计与实现 p v s ( 也称极小窗口m i n i m a lw i n d o w ss e a r c h ) 搜索算法是a l p h a - b e t a 的 种变体。此算法基于如下假设:假定第一步是最佳的下法,搜索其后继者,直到 更好的另一节点。在每一个中间节点中,第一个分枝都以完整窗口( a ,b ) 进行搜 索并产生一个值v ,后继的分枝则以一个极小的窗口( v ,v + 1 ) 进行搜索。如果猜 测被证明不准确( f a i l h i g h ) ,随后就需要以( v + l ,b ) 为窗口进行搜索;如果猜测 是( f a i l l o w ) 则剪枝;否则表示猜测命中。以此达到高效搜索的目的。p v s 算法 的基本代码如下 i n tn e g a s c o u t ( i n td e p t h ,i n ta l p h a ,h a tb e t a ) i f ( d e p t h 一0 ) r e t u r ne v e l u a t e 0 ; c r e a t e a l l m o v e 0 ;m a k e m o v e o ; b e s t = n e g a s c o u t ( d e p t h 一1 一b e t a , - a l p h a ) ;调用全窗口搜索第一个结点 u n m a k e m o v e o ; f o r ( e a c hm o v em 、 。i f ( b e s t a l p h a ) a l p h a 2 b e s t ; m a k e m o v e 0 ; s c o r e = - n e g a s c o u t ( d e p t h l ,一a l p h a - 1 ,一a l p h a ) ;极窄窗口搜索 i f ( s c o r e a l p h a & & s c o r e b e s t ) b e s t = s c o r e ;窄窗搜索命中 u n m a k e m o v e o ; ) r e t u r nb e s t ; ) 第4 章算法的优化 第4 章算法的优化 通过设计好的搜索算法和局而评估,我们已经可以让计算帆产生搏弈的过 程。但如果能加i 二一蝗附加的手段进行优化,计算机所体现出来的智商会大大的 提高。 4 1 哈希表应用 计算机在搜索过程中时有可能会出现以下局面,如幽4 辫辫饕 嚣淄嚣 黼 嘲 目喜喜 事毒s 茜 蘸 田 曰 净t 争 潦母s 每掣 一 誊始嗡舞; | f。x 1 :萼蚓 一 。;7 遣:= := i 图4l 相同节点 喜占:;0 圭 田 从圈中我们可以看出:从a 节点开始,有两个分枝( b 节点和c 节点) 。b 1 6 第4 章算法的优化 节点又有子节点d ,c 节点有子节点e 。在再往下d 节点又存在子节点f ,e 节 点存在子节点g 。节点f 和g 在同一层,却又是两个完全相同的局面。这时我们 在搜索g 节点的时候完全可以利用已经搜索过的f 节点的结果,而没有必要浪费 时间重新搜索一次g 。 将已经搜索过的节点结果保存起来,在以后的搜索过程中先在表中进行查 找,如果找到了则直接使用该值,找不到则正常搜索。可以提高搜索的效率。 考虑到存放数据和查找数据速度要尽可能的快( 否则将得不偿失) ,哈希表 是一种很好的选择。其基本算法如下: i n ta l p h a b e t a ( i n td e p t h ,i n ta l p h a ,i n tb e t a ) s c o r e = s e a r c h h a s h t a b l e 0 ;至l j 哈希表中查找该局面是否出现过 i f ( 搜索命中) r e t u r ns c o r e ; i f ( d e p t h o ) a d d h a s h i t e m ( s c o r e ) ;添加结果到哈希表节点 r e t u r ne v a l u a t e ( ) ;由局面评估函数返回估值 : 为了能更快速的进行局面的存放和查找,每一个保存的节点应该是敖列存放 的。c 拌中有一个现成的h a s h t a b l e 类可以使用,我们要解决的问题是:如何迅速 确定该节点在哈希表中的位置。为此我定义了一个3 2 位的1 0 9 二维数组和一个 6 4 位的1 0 9 二维数组,它们的值都由随机函数产生。通过对3 2 位二维数组的计 算得到该节点在哈希表中的下标,再通过对6 4 位二维数组的计算生成一个验证 码,确定节点与局面是否相同。在搜索的过程中,每一个搜索过的节点都把得分 保存到哈希表中去,而在搜索节点之前则先在表中查找一下该节点是否存在:如 果存在,直接取出结果;否则正常搜索。 4 2 历史启发 在各类搜索算法中,改进搜索算法的目的在于将不必搜索的分枝从搜索过程 中排除( 剪枝) 。而剪枝的效率几乎完全取决于节点排列的顺序。在节点排列顺 1 7 第4 章算法的优化 序处于理想状态下,a l p h a b e t a 搜索算法需要遍历的节点数仅为完全遍历节点数 平方根的两倍左右。也就是说如果一般情况搜索5 层局面需要遍历l 亿个节点, 那么理想状态下的a l p h a b e t a 搜索只需要遍历约2 万个节点( 狭义理解速度提高 了5 0 0 0 倍) 。如何调整节点的顺序是提高搜索效率的关键。 我们可以将一些具体的棋类知识加入其中,例如:优先展开车马炮所产生的 节点,优先展开攻防关键棋子所产生的节点等等。但这一方法需要通过一系列复 杂的判断。 我们还可以使用历史启发【7 1 ( h i s t o r yh e u r i s t i c ) 进行增强排序。该方法脱离 了对具体棋类知识的依赖:在搜索过程中,每找到一个好的走法,就将该走法对 应的历史得分增加。这样一个被多次搜索且被确认好的走法,其历史得分会较高。 当搜索中间节点时,将产生的节点集合( 步骤数组) 按历史得分预先做一个排序, 从而在搜索时引发更多的剪值以实现高效。好的走法可以定义如下: 1 、由其产生的节点引发了剪枝。 2 、是同层节点中最好的走法 这一方法的实现需要我们解决两个问题: 首先,如何将一个走法映射到历史得分的数组中? 考虑到整个象棋棋盘是1 0 行9 列的显示,我们可以使用起始和目标坐标作为存取这个数组的两个下标。汶 样就只需要9 0 * 9 0 的一个二维数组即可。 另一个问题是如何确定历史得分的权重? 也就是说当一个好的走法被发现 时,应该给它加多少分合适呢? 一般而言,当该节点越靠近根节点的时候,所对 应的局面相似程度就越高,搜索得到的值也就越可靠。所盼在程序中设定每发现 d e p t h 一个好走法就给其历史得分加上2 ( d e p t h 是当前层数) 。 4 3 开局库与残局库 中国象棋经过千百年的演绎和发展,涌现出许多干锤百炼的经典招数。无论 我们的搏弈程序如何优秀,由于其受到诸多因素的影响,搜索出来的大部分着法 都很难与之相媲美。特别是开局和残局。如果我们能将这些开局方法和残局手段 加以引入,可以大大的提高博弈的质量。 大多数棋谱类书籍中都能找到几十种常用的开局方式。将这些经典开局搜集 起来集中保存,我们可以建立一个5 1 0 步的开局数据库。这样博弈时就可以先 在开局库中找出类似的局面,直接获得其着法,加快开局的速度和质量。 l r 第4 章算法的优化 开局库的数据库不必很大,我们也可以在其中使用哈希方法,只存放某一局 面的哈希值以及对应的走法。有时候某一局面有着多种不错的走法,这时我们可 以把一系列开局走法归为一组,前面的走法随机选择一种,后继的走法则在该组 中优先选择。这样可以保持一个一致的策略。此外还可以增加一个胜率统计的字 段,通过统计不同开局的胜率来自动选择成功率较高的开局。 残局与开局不同,残局的局面极少相同。我们建立的残局库可以使用回朔分 析( r e t r o g r a d ea n a l y s i s ) 的方法生成一个数据库。将所有6 子( 6 子以下) 残局 的结果保存在数据库中。在棋局的过程中一但出现了棋子数量少于或等于5 个的 局面,就可以直接在库中取出其最终的结果。这样搜索的精度就大大的提高,同 时也可以提早发现一些必胜必败的结局。但7 子( 7 予以上) 残局库受存储空间 和数据库查询速度等因素的影响j 较难实现。 残局库的具体实现上依然可以使用哈希技术。唯一不同的是哈希表所使用的 随机数组应该做为常量保存在残局库中,在程序启动时不再生成该数组,而是从 库中取出使用。这样在搜索过程中生成的哈希值才能和残局库中保存的局面相契 合。 1 9 第5 章算法分析与比较 第5 章算法分析与比较 在程序完成后测试中发现,编写此类的w i n d o w s 应用程序还是应该选择更贴 近底层的c c + + 语言。c 群开发环境在运行速度上比v c + + 开发环境要慢许多。据 本人测试( p e n t i u m ( r ) 4c p u2 8 0 g h z + 5 1 2 m 内存) ,在c + + 环境下搜索7 万个节 点只需要2 3 秒,但c 拌n e t 环境下却要花费3 0 4 0 秒。这使得我的程序无法快速 的搜索到更高层。表5 1 是几种搜索引擎在开局时搜索不同深度的平均节点数。 表5 1 算法分析比较 12345 a l p h a - b e t a 搜索 4 55 2 31 0 6 8 97 2 9 5 4 p v s 搜索 4 55 5 25 3 0 24 6 3 6 1 综合搜索 4 51 6 41 5 6 7 6 8 9 55 5 6 2 3 。与我所搜集到其他同类程序相比,相同搜索深度下,搜索的节点数大约减少 了1 7 左右。而且由于在程序中添加了多种辅助手段用来测试评估函数,所以局 面评估更为精细。特别是开局时脱离开局库也能准确的模仿名家开局。 但由于我对在c 撑使用w i n d o w s a p i 函数的不熟悉,导致我在界面及辅助功能 部分花费了大量的时问和精力。因而没能够对计算机引擎部分作更深一步的挖掘 和研究。对于诸如机器学习( m a c h i n el e a r n i n g ) 、位棋盘( b i t b o a r d ) 、迭代加深 ( i t e r a t i v ed e e p e n i n g ) 、水平效应( h o r i z o ne f f e c t ) 、并行搜索等当今棋类对弈程 序中所采用的先进技术和思想,在我的程序中并未涉及。这在一定程度上影响了 程序中引擎的工作效率。 而在局面评估模块中又缺乏对面向对象思想的贯彻和使用。由于本人最初在 编写局面评估部分时一心只想尽快看到成果,因而从一开始就按照自己先前的程 序习惯( 面向过程) 来编写代码。到了开发后期,又缺少时间和精力来用面向对 象思想重新改写程序,最终导致局面评估部分与类“无缘。这也是我的一大遗 憾。 2 0 第6 章结论与展望 6 1 结论 第6 章结论与展望 首先在导师的热心帮助下,最终顺利实现了程序。整个程序近5 0 0 0 行代码, 内容涉及人工智能的基本理论以及开发c 拌应用程序的一些基础知识。无论是在程 序难度上还是规模上都是之前所未遇到过的。该程序的i l i o n 完成为我积累了相当 可观的运用理论知识解决实际问题的经验。特别是当程序运行过程中发现错误的 时候,找出问题所在并解决问题更是一个提高实际编程能力的过程。得益于此次 编写中国象棋对弈程序,我对人工智能有了一个较全面的认识这为我以后进 一步学习或研究的方向也提供了一定的参考。此外,我还实践了用c 拌编写基本的 w i n d o w s 应用程序,为今后从事类似应用程序开发也起到了一定的帮助作用。 6 2 进一步工作的方向 本文的研究虽然取得了初步的成果,但依然任重道远,尚有许多需要进一步 深入进行的研究工作,研究内容主要包括以下三个方面: 1 、局面库的存储及管理方式;2 、搜索树的并行处理方式的研究;3 、使用 面向对象的思想对局面评估部分做更深入的细化,优化各项参数。 在程序内借鉴了国际象棋中采用各种方法和取得的成果,包括开局库、残局 库等。这些库的运用给程序节省了很多时间,但也吃掉了很多存储资源。6 子残 局库需要大于1 0 g 的硬盘空间。我拟定的一项研究内容是对局面库的存储方式进 行研究,以确定是否存在更好的方案来有效地降低局面库的存储空间。 另外,可以提高处理器利用率的树结构深度并行搜索方法也非常值得研究; 也是我们所面临的一个关键问题。一般的小型机服务器大都配有多个处理器,从 成本角度来看,可以使用多台微机来进行局面处理,这样就很容易搭建多处理器 环境,给并行搜索的研究带来方便。 此外,使用v c + + 开发环境重新改写程序。从面向对象出发,首先定义一个 棋子类,然后派生出具体的车马炮等子类,以此来做个体整体的评估。从而实现 在类的对象中对局面做出准确的描述。 2 l 致谢 致谢 工作六年后再进校园学习已是一件十分值得庆幸的事,更为庆幸的是,我遇 到了一位好导师。我对计算机博弈的兴趣始于平时生活中的一些爱好,我的学位 论文也是源于导师的指引。 在论文完成之际,首先,要特别感谢的是我的导师白似雪教授:最终我能够 顺利完成论文,离不开导师对我的指导与帮助。谢谢您的支持! 其次,要感谢对我再教育的各位任课老师。在读研究生的期间,你们也给了 我很多的教育和启发,让我能够进一步完善计算机学科的知识体系。 此外还要感谢学院领导李勇院长,黄海哨书记,蔡泽光院长对我的关心和爱 护。让我尽可能的减少了一些学院工作安排,我才有更多的时间和精力去完成本 次论文。 读研三年期间,班主任陈小红老师也给予了我很多的帮助。让我能更顺利的 安排好各项学习时间,获得最新的通知。在这里也对您说一声谢谢,您辛苦了! 最后感谢胡彩明老师、肖雄斌老师等各位同事。谢谢你们在百忙之中抽空帮 助我测试程序,我才能更快的修正程序中的各种b u g 。感谢w w w c s d n n e t 论坛 上各位大虾们,每次当我遇到问题的时候总能在第一时间得到你们的帮助。 罗涛 2 0 0 9 年1 0 月 参考文献 参考文献 1 j y o nn e u m a n na n d0 m o r g e n s t e r n t h e o r yo fg a m e sa n de c o n o m i cb e h a v i o r m p r i n c e t o n :p r i n c e t o nu n i v e r s i t yp r e s s ,1 9 4 4 2 s h a n n o n ,c l a u d ee p r o g r a m m i n gac o m p u t e rf o rp l a y i n gc h e s s j p h il o s o p h i c a l m a g a zi n e ,1 9 5 0 ,4 1 :2 5 6 2 7 5 3 a t u r i n g d i g i t a lc o m p u t e r sa p p l i e dt og a m e s f a t h e rt h a nt h o u g h t c ( b b o w d e n , e d i t o r ) ,p i t m a n ,1 9 5 3 ,2 8 6 2 9 5 4 s n f u l l e r ,j g g a s c h i n ga n dj j g i l l o g l y ,a na n a l y s i so ft h ea l p h a b e t a p r u n i n ga l g o r i t h m d d e p a r t m e n to fc o m p u t e rs c i e n c er e p o r t ,c a r e g i e - m e l l o n u n i v e r s i t y ,p i t t s b u r g ,1 9 7 3 5 d ek n u t ha n dr nm o o r e ,a na n a l y z eo f a l p h a - b e t ap r u n i n g j a r t i f i c i a li n t e l l i g e n c e ,1 9 7 5 ,6 : 2 9 3 3 2 6 6 r k o r f i t e r a t i v ed e e p e n i n g :a no p t i m a la d m i s s i b l et r e es e a r c h j a r t i f i c i a li n t e l l i g e n c e ,19 8 5 , 2 7 ( 1 、:9 7 1 0 9 【7 】j o n a t h a ns c h a e f f e r , t h eh i s t o r yh e u r i s t i ca n da l p h a - b e t as e a r c he n h a n c e m e n t si np r a c t i c e i e e e t r a n s a c t i o n so np a t t o na n a l y s i sa n dm a c h i n ei n t e l l i g e n c e ,n o v e m b e r19 8 9 ,p a m i - i1 ( 1 ) : 1 2 0 3 - 1 2 1 2 8 b r e a k t h r o u g ho ft h ey e a r ,s ,c i e n c e j ,2 0 0 7 ,v 0 1 318 ,18 4 2 18 4 9 9 t a m a r s l a n d ,c o m p u t e rc h e s sa n ds e a r c h d 】,c o m p u t i n gs c i e n c ed e p a r t m e n t , u n i v e r s i t yo f a l b e r t a 1 0 b e r l i n e rhj a ne x a m i n a t i o no fb r u t ef o r c ei n t e l l i g e n c e c i n t e m a t i o n a lj o i n tc o n f e r e n c e o na r t i f i c i a li n t e l l i g e n c e ,1 9 8 1 :5 8 1 - 5 8 7 11 e h e i n z , ”h o wd a r k t h o u g h tp l a y sc h e s s ,”j o u r n a lo ft h ei n t e r n a t i o n a lc o m p u t e rc h e s s a s s o c i a t i o n ,v 0 1 2 0 ,n o 3 ,p p 1 6 6 ,1 7 6 ( 1 9 9 7 ) 1 2 c r a c r a f l ,s m ( 1 9 8 4 ) b i t m a pm o v eg e n e r a t i o ni nc h e s s i c c aj o u r n a l ,v 0 1 7 ,n o 3 ,p p 1 9 8 4 :1 4 6 一1 5 3 13 a n d r e a sj u n g h a r m s ,j s c h a e f f e 5s e a r c hv e s u sk n o w l e d g ei ng a m e - p l a y i n gp r o g r a m r e v i s i t e d t e c h n i c a lr e p o r t ,d e p t o fc o m p u t e rs c i e n c e ,u n i v e r s i t yo fa l b a m a , 19 9 8 1 4 h s u ,s c a n dt s a o ,k m ( 1 9 9 1 ) d e s i g na n di m p l e m e n t a t i o no f a no p e n i n gg a m e k n o w l e d g e b a s es y s t e mf o rc o m p u t e rc he n d g a m ed a t a b a s eb yr e t r o g r a d ea n a l y s i s 1 5 a z o b r i s t an e wh a s h i n gm e t h o dw i t ha p p l i c a t i o nf o rg a m ep l a y i n g t e c h n i c a lr e p o r t 8 8 ,c o m p u t e rs c i e n c ed e p a r t m e n t ,u n i v e r s i t yo fw i s c o n s i n ,m a d i s o n 1 9 7 0 1 6 h a w r e nf a n g ,t s a n s h e n gh s u ,a n ds h u n c h i nh s u ,c o n s t r u c t i o no fc h i n e s ec h e s s 1 7 r e nw u d o n a l df b e a l ,am e m o r ye f f i c i e n tr e t r o g r a d el g o r i t h ma n di t sa p p l i c a t i o nt o c h i n e s ec h e s se n d g a m e s ,m o r eg a m e so f n oc h a n c em s r ip u b l i c a t i o n sv o l u m e4 2 ,2 0 0 2 1 8 h o l l a n djh a d a p t a t i o ni nn a t u r ea n da r t i f i c i a ls y s t e m m a n na r b o r :t h eu n i v e r s i t yo f m i c h i g a np r e s s 1 9 7 5 i n e s ec h e s s j b u l l e t i no f t h ec o l l e g eo f e n g i n e e r i n g ,n t u ,n o 5 3 ,p p 参考文献 7 5 - 8 6 1 9 王小春:p c 游戏编程( 人机博弈) m ,2 0 0 2 年,第版,重庆大学出版社 2 0 网冠科技: v i s u a lc + + n e t 小游戏开发时尚编程百例 m ,2 0 0 4 年,第一版,机械 工业出版社 2 1 陈建春: v i s u a lc + + 高级编程技术开发实例剖析 m ,1 9 9 9 年,第一版,电 子工业出版社 2 2 涂光平,黄敏,钟坚成等: v i s u a lc + + n e t 基础教程与上机指导 m ,2 0 0 5 年,第 一版,清华大学出版社 2 3 伍红兵:v is u a lc + + 编程深入引导 m ,2 0 0 2 年,第一版,中国水利水电出版社 2 4 何斌,马天予,王运坚等编著: v i s u a lc + + 数字图像处理 m ,2 0 0 2 年( 第二版) , 人民邮电出版社 2 5 范如国,韩民春:博弈论 m ,武汉大学出版社,2 0 0 6 1 2 6 李光久:博弈论基础教程 m ,化学工业出版社,2 0 0 5 2 7 徐心和,徐长明,邓志立:积极开展民间棋类的计算机博弈活动【g 】,2 0 0 7 中国自动 化教育年会论文集,机械工业出版社 2 8 徐心和,王骄:中国象棋计算机博弈关键技术分析 j ,小型微型计算机系统,2 0 0 6 年第6 期 2 9 徐心和,王浩,孔凡禹:事件对策理论及在棋类游戏中的应用【g 】,2 0 0 7 年中国智能 自动化会议论文集 3 0 徐阳东,刘弘:遗传算法在机器博弈中的创新应用 j 】,电脑知识与技术,2 0 0 8 年第 1 卷第7 期 3 1 何大华,陈传波:弈棋程序的设计思路【g 】,( 2 0 0 4 年全国理论计算机科学学术年会计 算机科学 3 2 韩逢庆:基于选手风格的中国象棋博弈树搜索【g 】, 2 0 0 6 中国机器博弈学术研讨会 3 3 王晓鹏,王骄,徐心和等:中国象棋与国际象棋比较分析【g 】,2 0 0 6 中国机器博弈学 术研讨会 3 4 徐心和,郑新颖: 棋牌游戏与事件对策 g 】, 2 0 0 6 中国机器博弈学术研
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水泥搅拌桩施工技术培训大纲
- 台灯简笔画课件
- 展柜设计培训课件
- 课件最佳路径
- 广东国际贸易自考试题及答案
- 课件显示屏教学课件
- 广东工程估价自考试题及答案
- 拉架工考试题及答案
- 快递考试题及答案大全
- 课程方案考试题及答案
- 劳动课种植教学方案
- 2024年全国职业院校技能大赛高职组(环境检测与监测赛项)考试题库(含答案)
- 实验-大肠杆菌感受态细胞的制备及转化
- 2025年中考语文阅读复习:理解词语含义(含练习题及答案)
- GB/T 44421-2024矫形器配置服务规范
- 磷酸哌嗪宝塔糖的毒理学研究
- 【课件】2025届高三生物一轮复习备考策略研讨
- 灵芝培训课件
- 环形开挖预留核心土法
- 妇科医生进修汇报课件
- 《科室管理方案》课件
评论
0/150
提交评论