。 一… , 一 1…1 ,1~ 一1 1 h 一一 L 一n
基于Alpha—Beta剪枝法的中国象棋博弈系统研究
黎利辉
(广西民族师范学院数学与计算机科学系广西崇左532200)
【摘要】:目前国内中国象棋人机博弈方面的研究相对落后。针对这一状况,设计了一个中国象棋
博弈系统,本系统实现前台界面、棋盘表示、着法生成、棋局评估、博弈树搜索等必要过程。棋局评估考
虚到了棋子的基本值、灵活性、受攻击度、受保护度,棋子位置附加值等。搜索引擎采用Alpha-Beta剪
枝法。整个系统功能完备,具有较强的象棋对弈水平,为相关研究提供了较强的借鉴意义和参考价值。
【关键词】:中国象棋;着法生成;评估函数;博弈树搜索
引言
组,对每一个轮到本方下的棋子寻所有可能着法,
人机博弈是计算机人工智能的一个研究热点,许 将每一个着法保存到一个ChessMove类型的二级数
多人工智能算法可以作用到人机博弈上来,同时对人 组里,其相关的数据结构如下。
机博弈的研究也摧生了许多新的算法【1J,故人机博弈 public class ChessManPos{
是人工智能研究领域的“果蝇”。在国外从事这方面的 public byte x;
研究特别多,1997年,由1名国际象棋特级大师,4名 public byte y;
电脑专家组成的“深蓝”小组研究开发出的国际象棋
}
博弈系统以3.5比2.5击败了棋王卡斯帕罗夫[21。目前 ChessManPos这个类的对象用来保存棋盘上某一
中国象棋的研究进展与研究成果比国际象棋的落后 位置。
很多。一个实用的中国象棋博弈系统一般分为前台界 public class ChessMove{
面、棋盘表示、着法生成、棋局评估、博弈树搜索等必 public short chesslD;
要过程,其中博弈树搜索和棋局评估是一个博弈系统 public ChessManPos from;
的关键。本文以Alpha—Beta剪枝法为基础,用JAVA public ChessManPos to;
语言开发一个完整的中国象棋博弈系统。 int score;
1棋盘表示
}
中国象棋的棋盘为10行9列,用一个1O行9列 public ChessMove[][]m_MoveList=new ChessMove
的二维数组与之对应,而各棋子用对应的数字表示,
[10][801;
具体如表1所示。棋盘某位置上有一个棋子,则将表 ChessMove用来记录棋盘上从from到to的某一
示棋盘的二维数组相应元素上的值设置为对应棋子 步,然后定义一个ChessMove类型的二维数组,这个
的值。如果棋盘某位置上没有棋子,则将二维数组上
二维数组的第一维的下标代表搜索时进行到的层数,
对应元素的值设置为0。 第二维下标代表本层的第几步走法,每一个元素就代
表1各类棋子与值的对应关系 表某一个具体的走法。
棋子 黑帅 黑车 黑马 黑炮 黑士 黑象 黑兵 3棋局评估
值 1 2 3 4 5 6 7 中国象棋博弈系统中棋局评估是非常重要的组
棋子 红将 红车 红马 红炮 红仕 红象 红兵 成部分。本系统的棋局评估主要从剩余棋子基本值、
值 8 9 10 1l 12 13 14 棋子灵活性、棋子受攻击度、棋子受保护度,棋子位置
2着法生成 附加值这几个方面来衡量。分别计算这几种类型的
着法生成的基本思路是扫描表示棋盘的二维数
值,然后将它们的和作为棋局的优劣值,供搜索引擎
项目支持:广西教育厅科研项目(201106LX652)
20l4年第3期 『福建电脑 ・29・
本文发布于:2022-08-01 16:08:52,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/falv/fa/83/50812.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |