1、东北大学人工智能与机器人研究所,中国象棋 计算机博弈原理,徐心和东北大学人工智能与机器人研究所 ,2006.4.5,东北大学人工智能与机器人研究所,中国象棋计算机博弈原理,棋局表示 着法生成 评估函数 博弈搜索 开局库与残局库,东北大学人工智能与机器人研究所,系统建模基本约定,立足红方 向上进攻,东北大学人工智能与机器人研究所,状态演化方程:, 棋谱,(红方),(黑方),中国象棋棋局演化过程,东北大学人工智能与机器人研究所,棋局状态展开示意图,东北大学人工智能与机器人研究所,红方走棋时展开深度为4的博弈树,东北大学人工智能与机器人研究所,棋局表示 Board Representation,通常
2、我们使用状态集合来表示 n 时刻的棋局状态。即,棋局状态矩阵 棋子状态矩阵 棋子位置矩阵 比特棋盘矩阵,东北大学人工智能与机器人研究所,棋盘表示与棋盘矩阵,矩阵元素为数偶, 表示棋盘坐标值。,行向,路向,东北大学人工智能与机器人研究所,棋子表示法,黑子中的砗、码、砲将在不便区分车、马、炮的红黑方时使用,东北大学人工智能与机器人研究所,初始棋局状态的表示,行向,路向,东北大学人工智能与机器人研究所,初始棋子状态的表示,东北大学人工智能与机器人研究所,棋子位置矩阵表示法,第1行表示编号为k的棋子在棋盘矩阵中的行号, 第2行表示编号为k的棋子在棋盘矩阵中的列(路)号。,对于初始棋局,东北大学人工智能
3、与机器人研究所,比特棋盘表示法,# 表示计算比特向量(二进制数)对应的十进制整数,东北大学人工智能与机器人研究所,比特棋盘与棋局的布尔条件,比特棋盘用以记录棋局的某些布尔条件。 如果比特棋盘中对应某一格的位是“1”,那么这一格上的条件就是“真”;如果是“0”则对应的条件就是假。 布尔条件就是在“哪些格子上符合你所定义的条件”。 比如,“棋盘哪些位置有棋子?” “棋盘哪些位置有红棋棋子?” “棋盘哪些位置有车?” 这给计算机上的表示带来很大方便:12个字节,96位便可以表示一种条件(高6位为0)。 比特棋盘预置表法在着法生成中具有重要的地位,而且在评估中可以方便地判断棋子相互的联系和威胁。,东北
4、大学人工智能与机器人研究所,初始行、路比特向量对应数值,东北大学人工智能与机器人研究所,#B比特向量索引值,一个10位(9位)比特向量B可以表示一路(行)棋子的分布,它又可以有一个正整数#B作为索引,这将为今后的棋盘分析带来巨大方便; 表示路向棋子全部可行分布情况的索引值范围为0210-1=1023; 表示行向棋子全部可行分布情况的索引值范围为029-1=511; 这样通过索引值就可以找到相应棋子的分布情况。,东北大学人工智能与机器人研究所,棋局的哈希数(H)与哈希变换,对应64位随机数,哈希变换,东北大学人工智能与机器人研究所,棋局的哈希数(H)与哈希变换,由当前棋局P M生成64位随机数,
5、H 便构成当前棋局的索引值,与棋局形成单向对应,即由P 可以生成H,但由H 无法产生P。哈希变换没有反变换!,东北大学人工智能与机器人研究所,着法生成原理 Move Generation,着法生成是博弈树展开的关键环节,东北大学人工智能与机器人研究所,着法的表示,相对着法:马八进七,炮5平2非完整信息,需要与当前局面结合 着法算子的运算功能:提-动-落-吃提址from 即此着的出发位置; 动子moved(chessman moved)即走动的棋子; 落址to 即着法的到达位置; 吃子killed(chessman Captured)即吃掉的棋子。 对着法的要求:合法性、完整性、有序性,东北大学
6、人工智能与机器人研究所,着法生成的棋盘扫描法,确定走动的棋子(moved) 找到该棋子的当前位置(from) 根据象棋规则,扫描棋盘,逐个找到全部合理落址(to)(考虑制约条件、有效区域、本方占位、对方占位等) 如果落址为本方棋子,则不可行;若为对方棋子,则可以吃子(Captured) 如果到达落址,构成 “将军”(叫杀),则应该给对方以提示“将!”,东北大学人工智能与机器人研究所,着法生成的棋盘扫描规则,区域定义: 定义棋盘有效区域 定义红方半区 定义黑方半区 定义红方九宫 定义黑方九宫,字符说明:A-area, R-red, B-black, P-palace,东北大学人工智能与机器人研究
7、所,提址(from)为(i,j)的动子着法生成规则,东北大学人工智能与机器人研究所,提址(from)为(i,j)的动子着法生成规则,东北大学人工智能与机器人研究所,提址(from)为(i,j)的动子着法生成规则,东北大学人工智能与机器人研究所,棋盘扫描法遇到的问题,虽然在着法的表达上,棋盘扫描法最为直观、简洁,但实战意义不强。 因为扫描过程大量耗时:扫描动子、提址、制约条件、合理区域、双方占位、吃子等都是动态生成的,尤其区域判断和棋子种类检测等,时间开销巨大。 对于吃子着法和非吃子着法无法分别生成,只能全部生成,再做筛选。,东北大学人工智能与机器人研究所,模板匹配法,可以为某些动子设计“模板”
8、,只要匹配到提址,便可以迅速找到落址。 通过单项比特矩阵比对,实现“本方子则止,对方子则吃”,完成“提-动-落-吃”内容的确定。 比较适合使用模板的动子为马和相(象)。,走马匹配模板,东北大学人工智能与机器人研究所,预置表法,棋盘状态确定之后,各子的可行着法是确定的。 预置表的思想是把某种棋子在棋盘每个合理位置上,所有可能的棋盘状态下的合理着法预先存储起来,生成一个小型数据表集合。 在生成着法时,通过查询,取代各种计算。 预置表的实质是用空间换时间,即牺牲一定的内存空间加速程序的运行速度。 预置表初始化很费时,但只需在程序开始运行时初始化一次,而且占用内存空间不大。,东北大学人工智能与机器人研
9、究所,预置表法,棋子布局的布尔行向量形式 101000010 非吃子着法的落址为 000110100 可能的吃子着法的落址为 100000000,炮行着法预置表项举例动子为炮 提址为(i, 6),东北大学人工智能与机器人研究所,炮着法的预置表总的空间占用计算,每一行棋子的可行排列数恰好对应于9位二进制数(有子为1,无子为0),即 29 = 512 种情况(项)。 考虑到炮在行向的 9 种可能位置,预置表的规模即为 9*512 项。 分别考虑吃子着法与非吃子着法(2倍) 考虑路向情况,则总表规模为2*9*512+2*10*1024=29696项 每项占用 4 字节,则总空间占用量为 116 k,
10、东北大学人工智能与机器人研究所,预置表的使用,已知动子(炮)的提址( i , j ) 由第 i 行的比特向量和炮在第 j 位置查找对应的预置表项,分别得到吃子着法的比特向量和非吃子着法的比特向量;吃子着法仅为“可能”,还要判断“本方子则止,对方子则吃”; 查找该行本方棋子比特向量,与吃子着法比特向量“与”,输出为 1 则为非法着法; 查找该行对方棋子比特向量,与吃子着法比特向量“与”,输出为 1 则为合法吃子着法,得到落址; 由该落址便可以得到“吃子”。,东北大学人工智能与机器人研究所,评估函数,在难以判断输赢的情况下识别棋局的好坏,可行的办法就是对局面进行量化 通过为棋局“打分”,评判棋局的
11、好坏。 由于评估需要大量的象棋知识,仁者见仁,智者见智; 评估函数的设计便成为机器博弈中最为人性化和模糊化的部分。 目前对于评估函数取得共识的观点,应该包括如下部分 :,东北大学人工智能与机器人研究所,固定子力评估值e1(m),车- 600, 炮- 285,马- 270 相- 120,士- 125 兵、卒- 20 帅、将无穷大值,具体数值可以给6000红方为正值,黑方为负值,东北大学人工智能与机器人研究所,棋子位置评估值e2(m,i,j),各兵种在棋盘的不同位置上权值不同 可由三维数组给出: 三维数组可以按兵种分解为若干个二维数组,而且要区分红方和黑方,x 分别为各兵种代码,东北大学人工智能与
12、机器人研究所,红车位置评估值(m=r),车坐大堂分值最高!,东北大学人工智能与机器人研究所,马窝心和马卧槽大不相同!,红马位置评估值(m=h),东北大学人工智能与机器人研究所,当头炮分值较高!,红炮位置评估值(m=c),东北大学人工智能与机器人研究所,红兵位置评估值(m=p),可见进入九宫的兵顶大车!,东北大学人工智能与机器人研究所,棋子灵活度评估值e3,对各兵种而言,每多一个可走位置就加上一定分值。 如设定:兵 15士 1象 1车 6马 12炮 6将 0,东北大学人工智能与机器人研究所,棋子配合评估值e4,重点是车马炮的配合与牵制。 过河兵牵手可加120分。 连环马、担子炮、霸王车等都可以考
13、虑加分。将帅安全评估值e5 此项多从盘势上加以考虑。 多子归边、空头炮、当头炮、沉底炮、将帅位置等,都要给予一定的惩罚或奖励分。,东北大学人工智能与机器人研究所,评估函数的计算,本方为正值,对方为负值,其代数和即为当前局面评估值。 显然,总值为正对我方有利,负值对对方有利。绝对值的大小说明双方棋势的差距。 不难看出,评估函数中涉及到的权值系数可能多达上千个,都需要认真选择与权衡。系统开发难点。,东北大学人工智能与机器人研究所,博弈搜索引擎 (Game search engine),东北大学人工智能与机器人研究所,博弈搜索引擎,搜索策略广度优先(Breadth-first search)深度优先
14、(Depth-first search)迭代深化(Iterative search)搜索技巧 截断/剪枝(cut-off)剪枝(pruning)扩展/延伸(extended)搜索结果返回值/倒推值/局面评估值最佳路径/当前着法(The best move),东北大学人工智能与机器人研究所,广度优先搜索近根为先,东北大学人工智能与机器人研究所,深度优先搜索远根为先,东北大学人工智能与机器人研究所,博弈树分析,博弈树上的每一个节点都代表一个棋局,棋手就是要在众多的叶子节点上挑选一个“最佳的路径与局面”作为自己的选择,从而反推到当前的着法。 中国象棋博弈树的庞大是可以想象的。 如果按照每一步平均有4
15、5种可行着法,每局棋平均走90步,那从开始局面展开到分出胜负,则要考虑 种局面。 据说,这一天文数字要比地球上的原子数目还要多,即使用世界上最快的计算机进行计算,直到地球毁灭也无法算出第一步的着法。,东北大学人工智能与机器人研究所,搜索法是求解此类图模型的基本方法,无法搜索到最终的胜负状态,只能靠评估。 搜索的目标如何在有限深度的博弈树中找到评估值“最佳”而又不剧烈波动的最佳棋局目标状态。 最佳路径(Principal continuation)从当前状态出发到达最佳状态的路径,它代表着理智双方精彩对弈的系列着法。 最佳着法(The best moveRoot move)最佳路径上的第1步棋。
16、 所谓“不剧烈波动”就是说最佳棋局不是在进行子力交换与激烈拼杀的过程当中。,东北大学人工智能与机器人研究所,搜索策略的划分,A类穷尽搜索(Exhaustive search) B类选择性搜索(Selective search) C类目标导向搜索(Goal oriented search) “一着不慎,满盘皆输” 于是,看得远(搜索的深),看得准(真正找到指定深度内的最佳的平稳棋局),便成为搜索算法的基本着眼点。 显然穷尽搜索成为人们首选的搜索策略。,东北大学人工智能与机器人研究所,蛮力搜索(Brute search),一般采用广度优先搜索 一层层展开,一层层搜索,因为“穷尽”而没有风险,不会漏
17、掉展开深度内的最优解。 假设计算机搜索节点速率为1M/秒,中国象棋B=45 (分枝因子B=4050) 下表为在不同的给定时间内达到的搜索层数。,东北大学人工智能与机器人研究所,出路在哪里?,由于完整的博弈树过于庞大,盲目搜索所能达到的层数十分有限,在象棋博弈中几乎没有实用价值。 若想在指定时间内将搜索深度加以提高,一方面需要改进硬件与优化程序代码,提高单位时间内搜索的节点数; 另一方面就需要像人类棋手一样有选择性地进行搜索,即对博弈树进行必要的裁剪(cut-off/pruning)。,东北大学人工智能与机器人研究所,奠基者香侬教授,香侬(Claude Shannon)教授早在1950年首先提出
18、了极大-极小算法(Minimax Algorithm),从而奠定了计算机博弈的理论基础。Shannon, Claude E., Programming a computer for playing chess J, Philosophical Magazine, Vol. 41:256-275, 1950.,东北大学人工智能与机器人研究所,博弈树特点分析,博弈树不同于一般的搜索树,它是由对弈双方共同产生的一种“变性”搜索树。 红方为走棋方,它在偶数层的着法选择是要在其全部子节点中找到评估值最大的一个,即实行“Max搜索”。红方称为MAX方。 而其应对方黑方在奇数层的着法选择则是在其全部子节点中
19、要找到评估值最小的一个,即实行“Min搜索”。黑方称为MIN方。,东北大学人工智能与机器人研究所,红方走棋时展开深度为4的博弈树,东北大学人工智能与机器人研究所,极大极小搜索(Min-Max Search),MAX,MAX,MIN,3,由此产生最佳路径和最佳着法,东北大学人工智能与机器人研究所,MAX,MAX,MIN,4,MaxMin搜索(2),由此产生最佳路径和最佳着法,东北大学人工智能与机器人研究所,-剪枝搜索,一种基于剪枝( -cut-off)的深度优先搜索(depth-first search)。 将走棋方定为MAX方,因为它选择着法时总是对其子节点的评估值取极大值,即选择对自己最为有
20、利的着法; 将应对方定为MIN方,因为它走棋时需要对其子节点的评估值取极小值,即选择对走棋方最为不利的、最有钳制作用的着法。,东北大学人工智能与机器人研究所,MAX,MAX,MIN,4,4,剪枝(1),由此产生最佳路径和最佳着法,=4,东北大学人工智能与机器人研究所,在对博弈树采取深度优先的搜索策略时,从左路分枝的叶节点倒推得到某一层MAX节点的值,可表示到此为止得以“落实”的着法最佳值,记为。 显然此值可作为MAX方着法指标的下界。 在搜索此MAX节点的其它子节点,即探讨另一着法时,如果发现一个回合(2步棋)之后评估值变差,即孙节点评估值低于下界值,则便可以剪掉此枝(以该子节点为根的子树),
21、即不再考虑此“软着”的延伸。 此类剪枝称为剪枝。,东北大学人工智能与机器人研究所,MAX,MAX,MIN,1,4,剪枝(2),1,2,2,4,由此产生最佳路径和最佳着法,=4,东北大学人工智能与机器人研究所,剪枝效果差别很大,不难发现,和最佳着法关系密切 什么是最佳着法? 怎样找到最佳着法?,(1),(2),东北大学人工智能与机器人研究所,-剪枝(1),MAX,MIN,MIN,7,7,由此产生最佳路径和最佳着法, =7,东北大学人工智能与机器人研究所,同理,由左路分枝的叶节点倒推得到某一层MIN节点的值,可表示到此为止对方着法的钳制值,记为。 显然此值可作为MAX方无法实现着法指标的上界。 在
22、搜索该MIN节点的其它子节点,即探讨另外着法时,如果发现一个回合之后钳制局面减弱,即孙节点评估值高于上界值,则便可以剪掉此枝,即不再考虑此“软着”的延伸。 此类剪枝称为剪枝。,东北大学人工智能与机器人研究所,-剪枝(2),MAX,MIN,MIN,8,由此产生最佳路径和最佳着法,4,4,8, =4,东北大学人工智能与机器人研究所,剪枝和剪枝具有同样规律,剪枝效果与最佳着法的位置密切相关与博弈树展开的顺序密切相关,(1),(2),东北大学人工智能与机器人研究所,需要指出的是,-剪枝是根据极大-极小搜索规则进行的,虽然它没有遍历某些子树的大量节点,但它仍不失为穷尽搜索的本性。-剪枝技巧的发现,一下便
23、为博弈树搜索效率的提高开创了崭新的局面。,东北大学人工智能与机器人研究所,Knuth和Moore重要贡献,1975年给出了-算法正确性的数学证明。 -剪枝算法的效率与子节点扩展的先后顺序相关。在最理想情况下(极小树),其生成的节点数目为,可见不做任何剪枝仅能搜索到一半深度,东北大学人工智能与机器人研究所,如何才能得到极小树?,不难看出,如果最左路的分枝就是最佳路径,亦即理智双方最为精彩的对弈着法序列,那么就可以将右路各分枝陆续剪掉,从而使-搜索的节点数仅为极大树的 。 为了得到最好的节点扩展顺序,许多搜索算法在着法(节点扩展的分枝)排序上给予特别的关注。 比如在着法生成(节点扩展)时,先生成吃
24、子着法,尤其先生成吃分值高的“大子”着法,因为由此产生着法更有可能是最佳的。,东北大学人工智能与机器人研究所,面向着法排序的算法,围绕着法排序,已经出现许多优秀的搜索算法与举措。如: 同形表法(Transposition table) 吃子走法的 SEE 排序 杀手走法(Killer heuristic) 未吃子走法的历史启发排序(Historic heuristic) 类比法(Method of analogies)等。 有人将-剪枝作用延伸到多个回合之后,于是又出现了深层-剪枝(Deep - cut-off)算法。也取得很好效果。,东北大学人工智能与机器人研究所,-窗口搜索 (-windo
25、ws search),从-剪枝原理中得知: 值可作为MAX方可实现着法指标的下界 值可作为MAX方无法实现着法指标的上界 于是由和可以形成一个MAX方候选着法的窗口 也便出现了各种各样的-窗口搜索算法。,东北大学人工智能与机器人研究所,-窗口的搜索算法,围绕如何能够快速得到一个尽可能小而又尽可能准确的窗口,也便出现了各种各样的-窗口搜索算法。如 Fail-Soft Alpha-Beta Aspiration Search(渴望搜索) Minimal Window Search(最小窗口搜索) Principal Variable Search(PVS搜索) Negascout搜索 宽容搜寻(T
26、olerance search)等。,东北大学人工智能与机器人研究所,迭代深化搜索 (Iterative deepening search),不难想像,深度为D1层的最佳路径,最有可能成为深度为D层博弈树的最佳路径。 Knuth和Moore分析表明,对于分枝因子为B的博弈树,利用剪枝搜索D层所需时间大约是搜索D-1层所需时间的 倍。 如果取 B=36,每多搜一层就要花上原先的6倍时间。,东北大学人工智能与机器人研究所,迭代深化搜索,于是CHESS4.6和DUCHENSS课题组开始采用逐层加深搜索算法。 先花1/6的时间做D-1层的搜索,找到最佳路径; 同时记载同形表、历史启发表、杀手表等有价值
27、的着法评估信息; 以求达到D层最好的剪枝效果。 目前机器博弈引擎普遍采用迭代深化搜索策略 。,东北大学人工智能与机器人研究所,迭代深化的时间复杂度,深度优先的迭代深化搜索D 层搜索的总结点数为,所以深度优先的迭代深化的时间复杂度为,值得关注的是,由于一系列剪枝算法的使用,使得此时 的平均分枝度可以数量级地减小。许多算法已经做到B = 25,东北大学人工智能与机器人研究所,启发式搜索(Heuristic search),具体问题的领域决定了初始状态、算符和目标状态,进而决定了搜索空间。因此,具体问题领域的信息常常可以用来简化搜索。此种信息叫做启发信息,而把利用启发信息的搜索方法叫做启发性搜索方法
28、。利用象棋的领域知识(启发信息)设计博弈搜索的启发式算法或方法,在着法排序中就有许多成功的应用。这里需要特别提及的则是平静搜索、空着搜索和兑子搜索等。,东北大学人工智能与机器人研究所,平静搜索(Quiescent Search),-搜索使用的是给定深度搜索,当局面变化剧烈的时候,虽然已经达到搜索的最大深度,但此时评估函数的返回值并不能准确地表示当前局面的情况。 举个简单的例子,某个叶节点上红车吃掉了黑炮,但是下一步红车会被黑方吃掉。如果在此叶节点调用评估函数,返回值肯定对红方十分有利,但会引起判断失误。 平静搜索判断局面是否剧烈振荡的准则是走棋方是否还有吃子走法,一直延伸到走棋方无吃子走法,也
29、就是相对平静的局面。,东北大学人工智能与机器人研究所,将军延伸(Check Extension),是指当本方受到对方将军时所进行的扩展。由于逃避对方对本帅攻击的解将着法不多,所以我们可以对当前节点的搜索深度增加一层,以更准确地评估攻击的危险性。 唯一着法延伸(One_Reply Extension)。当本方受对方将军的时候,并且解将着法只有一步,这时候由于搜索量不大,我们在将军延伸之外,还要对其进行额外的延伸。,东北大学人工智能与机器人研究所,启发式搜索,兑子延伸(Recapture Extension)。搜索过程中,如果出现A棋子吃掉对方的B棋子,随即棋子又被对方吃掉,那么也要对这样的局面进
30、行延伸,以保证对兑子进行准确的评估。空着搜索(NullMove)是在1993年由Chrilly Donninger最先提出的。NullMove的思想是放弃本方的走棋权利,让对方连续走棋,如果得到的分值还大于原先的值,说明对方没有“硬着”可施,于是在此分枝下搜索的意义已经不大,免于搜索。NullMove危险性比较小,实现较为简单,剪枝效果明显,现已被棋类博弈广泛采用。,东北大学人工智能与机器人研究所,负极大值算法 (NegaMax algorithm),博弈搜索是一种“变性”搜索。在偶数层进行“Max搜索”,而在奇数层进行“Min搜索”。这无疑给算法的实现带来一大堆麻烦。 Knuth和Moore
31、充分利用了“变性”搜索的内在规律,在1975年提出了意义重大的负极大值算法。 它的思想是:父节点的值是各子节点值的变号极大值,从而避免奇数层取极小而偶数层取极大的尴尬局面。,东北大学人工智能与机器人研究所,MAX,MAX,MIN,3,Min-Max搜索,由此产生最佳路径和最佳着法,NegaMax,NegaMax,NegaMax搜索,东北大学人工智能与机器人研究所,负极大值算法 (NegaMax algorithm),此时需要特别注意的则是,如果叶节点是红方(走棋方)走棋,评估函数返回RedValue-BlackValue,如果是黑方(应对方)走棋,则返回BlackValue -RedValue
32、。 另外,由于负极大值计算等价于“Min搜索”,所以这里只进行剪枝,非常有利于编程实现和提高搜索速度。,东北大学人工智能与机器人研究所,开局库设计(Opening book),象棋博弈三大阶段:开局、中局、残局。 虽然有时在中局就决出了胜负而没有残局,但所有的对局都必须有开局。 开局是开始的1020个回合,对战双方各自展开子力,占据棋盘的有利位置。 中国象棋讲究的是快速出动子力,各棋子协调作战,并且尽早占据中心位置。 从开始就进行搜索,容易犯战略性错误。 借助成熟的开局棋谱,建立开局库。,东北大学人工智能与机器人研究所,开局库设计,开局库中通常存放了数以十万计甚至更多的棋局; 如何能够快速准确
33、地搜索到对应的棋局成为开局库设计的关键技术之一。 国际象棋的成功经验表明,开局库最好是采用Zobrist哈希技术加以实现 ;,东北大学人工智能与机器人研究所,开局库,作为棋局的索引值,记载常用着法; 可以采用的着法,常常不止一个,每个着法都对应有输赢统计比率、作者偏好权重等,以便使用时选择。 一般还应该具有自学习的功能,将新的对弈结果补充进来,并且不断自行调整比率与权重值。,东北大学人工智能与机器人研究所,残局库(Endgame database),残局少数残余子力所构成并进入决定胜负阶段的对峙局面。 目标优势求胜,下风谋和,均势求机。 在残局阶段,象棋大师的知识、人类的直觉与灵感往往能够战胜
34、程序的搜索能力。 一般计算机在残局阶段是不占优势的。 在国际象棋中通常使用回溯法(Retrograde algorithm)构造残局库。 残局阶段对于象棋规则的考虑应该给与特别的关注。 就国内而言,中国象棋残局库的开发基本还是空白。,东北大学人工智能与机器人研究所,系统开发与实现 (System development and realization),象棋博弈软件的程序规模都比较庞大,难以从头做起。 最为现实的开发方案:借助一些国象和中象的开源软件:ftp:/ftp.cis.uab.edu/pub/hyatt/ (国象crafty网站)http:/www.wbec-ridderkerk.nl
35、/ (国象Fruit网站)http:/ (中象象眼网站) 在已有的人机界面和搜索引擎基础上不断消化、改造、完善和丰富,从而形成具有自己特色和知识产权的博弈软件。,东北大学人工智能与机器人研究所,系统开发与实现,各种矩阵的一维数组实现。因为在程序运行过程中,二维数组的计算要比一维数组更为耗时。 由于博弈树展开的规模十分庞大,一般中局搜索的节点数可达千万个,因此节点信息的存储内容与方式便要非常讲究。 运行时间的矛盾更为突出,它是影响搜索深度和质量的瓶颈。如何以空间换时间,是各种算法研究的焦点问题。 探讨人类博弈的认知过程,结合象棋对弈过程中出现的实际问题,研究新型的启发式搜索算法,将是机器博弈获得
36、升华的不竭动力。,东北大学人工智能与机器人研究所,系统测试与参数优化,系统测试的重要性是不言而喻的。除了排除一般的错误,更重要的是参数的优化与棋力的提高。 在评估函数中就有成百上千个参数,都需要在调试和实际对弈过程中不断改进。 测试的最好办法是通过对战平台。 为了参数优化,需要相当数量的测试棋局。由于事先知道棋局正解(最佳着法),检查被测软件是否找到了正解,研究为什么出现了偏离。 一般出现偏离原因或是在评估中缺少了什么,或是权值给的不好,常常还是盲点,找不到原因。 参数优化是一个非常需要耐心、又非常需要象棋专业知识的细活,聘请象棋高手和象棋大师参加工作是必不可少的。,东北大学人工智能与机器人研究所,The end,Thank you,