五子棋中的博弈智能设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五子棋中的博弈智能设计
张海峰,白振兴,张登福
(空军工程大学工程学院 710038)
摘 要:博弈是人工智能的主要研究领域之一,他涉及人工智能中的推理技术、搜索方法和决策规划。本文将这些技术用于五子棋中,设计了一个智能五子棋系统,实现人和计算机两方进行博弈。
关键词:博弈;五子棋;人工智能;搜索;估值;遗传算法
中图分类号:T P 317.4 文献标识码:B 文章编号:1004373X (2004)0702503
Design of Playgame Intelligence in Gobang
Z HA N G Haifeng ,BA I Z henx ing ,ZHAN G Dengfu
(Eng i neeri ng Co ll eg e o f t he Air Fo rce Engineering U niversity ,Xi ′an,710038,China)
Abstract :G ambling and chess is o ne o f the majo r ar tificial intelligence resear ch ar ea s.It invo lv es r easoning ,decisio n making and planning.T hese techniques are applied to the g obang.An intelligent g obang system is designed and realized t he g ame bet ween human and co mputer .
Keywords :g ambling and chess ;g o bang ;ar tificial intellig ence ;search ;estimate ;g enetic algo rithm
收稿日期:200312
26
人工智能是一门正在迅速发展的新兴的综合性很强的边缘科学。他与生物工程、空间技术一起被并列为当今三大尖端技术。他的中心任务是研究如何使计算机去做那些过去只能靠人的智力才能做的工作,目前,各发达国家都把人工智能作为重点列入本国的高科技发展计划当中。投入巨大的人力和物力,作为一门边缘学科,他有诸多的研究领域,博弈即为其中之一,博弈就是对策。这是自然界中的普遍现象,他不仅存在于下棋之中,而且存在于政治、经济、军事和生物竞争中,博弈的参加者可以是个人、集体、一类生物或机器。他们都力图用自己的智力去击败对手,博弈为人工智能提供了一个很好的试验场所。人工智能中许多概念和方法都是从博弈程序中提炼出来。他的许多研究成果已用于军事指挥和经济决策系统之中。人工智能中大多以下棋为例研究博弈规律,在此,以五子棋为入口进行研究,设计了一个智能五子棋系统,讨论博弈中人工智能的设计方法。
1 人机博弈的要点
人机对弈的程序,至少应具备以下5个部分:(1)某种在机器中表示棋局的方法,能够让程序知道博弈的状态。
(2)产生合法走法的规则,以使博弈公正地进行,并可判断人类对手是否乱走。
(3)从所有合法的走法中选择最佳的走法技术。(4)一种评估局面优劣的方法,用以同上面的技术配
合做出智能的选择。
(5)一个界面,有了他,这个程序才能用。
2 五子棋特点及规则
五子棋的娱乐性强、规则简单、易学、流行性广。普通人不需长时间专门训练即可自如行棋。因此极受大众欢迎。五子棋的规则为:
(1)棋盘 采用像围棋盘一样的15路或19路线的棋盘,在此采用19路的棋盘。
(2)下法 两人分别执黑白两色棋子。轮流在棋盘上选择一个无子的交叉点落子,无子的交叉点又被称为空点。
(3)输赢判断 黑、白双方有一方的五个棋子在横、竖或斜方向上连接成一线即为该方赢。
3 算法设计
3.1 博弈树的搜索过程
在以下讨论中,命名2个博弈者M AX 和M IN 。下面的任务是为M A X 找最佳的移动。假设M A X 先移动,然后2个
博弈者轮流移动。因此,深度为偶数的节点,对应于M A X 下一步移动的位置,称为M AX 节点;深度为奇数的节点对应于M IN 下一步移动的位置,称为M IN 节点(博弈树的顶节点深度为0)。k 层包括深度为2k 和2k +1的节点。通常用层数表示博弈树的搜索深度,他可以表示出向前预测的M AX 和M IN 交替运动的回合数。对于复杂的博弈,博弈者必须认识到搜索到终点是不可能的(除了在博弈快结束时),所以,常
25
《现代电子技术》2004年第7期总第174期
工控新技术
采用在有限范围搜索方法。这里使用启发式搜索。在启发式搜索的过程中,关键的一步是如何确定下一个要考察的节点,在确定节点时只要能充分利用与问题有关的信息,估计出节点的重要性,就能在搜索时选择重要性较高的节点,以利于博弈者以较快的速度求出最佳的棋步。
3.2 采用静态评估函数
这里用评估函数h (i )衡量每一个叶节点位置的“值”。一个最佳首步可以由一个最小最大化过程产生。假设轮到M A X 从搜索树的叶节点中选取,他肯定选择拥有最大值的
节点。因此,M IN 叶节点的一个M A X 节点双亲的倒推值就等于叶节点的静态评估值中的最大值。另一方面,M IN 从叶节点中选取时,必然选取最小的节点(即最负的值)。既然如此,M AX 叶节点的M IN 双亲节点被分配一个倒推值,他等于叶节点静态评估值的最小值。在所有叶节点的父节点被赋予倒推值后,开始倒推另一层,假定M AX 将选择有最大倒推值的M IN 的后继节点,而M IN 会选择有最小倒推值的M A X 后继节点。继续逐层对节点评估,直到最后开始节点的后继者被赋予倒推值。M AX 将选择有最大倒推值的节点作为他的首步。整个过程的有效性基于这样的假设。用整个棋盘估值的函数h (n )为静态估值函数。设想当前棋局S 为轮到计算机方下棋(用 表示),任选一空点作为计算机方的下棋位置(可有若干种选择),接着考虑在此情况下游戏者一方下棋的棋局(用O 表示);从某一“O ”棋局出发,任选一空点作为游戏者一方的落子处(又有若干种选择),再次形成计算机方下棋的“ ”棋局;依此类推,这样可形成一棵以S 为根结点的博弈树,该树以O 棋局为第2层子结点,以 棋局为第3层子结点等等。如果继续向前搜索,可形成多层子结点,现在以向前搜索3层子结点为例来说明极大极小值的过程。对第3层子结点的某一棋局n ,求出其估计值h (n ),假设有一博弈树已形成,如图1所示,h (n )的值由各结点旁的数值
给出。
图1 博弈搜索树
根据极小极大化分析法,先计算第3层子结点h (n )值,然后第2层子结点的估计值取他的各后继子结点的极小值,根结点的估计值取他的各子结点的极大值。这个取得最大估计值的子结点即为从S 出发的计算机方的最佳落子方案。
棋盘上某一行、某一列或某一对角线为一路,这里使
用的棋盘为19行19列,因此,行和列方向上共有19+19=38路;从左下到右上方向的对角线有37路,同样,从左上到右下方向的对角线也有37路。但对于五子棋来说必须在一条直线上有连续五个棋子才能赢。因此,在对角线上就可以减少8路。所以,整个棋盘路的总数为:
T R =38+(37-8)+(37-8)=96路
对某一棋局n ,第i 路得分:h (i )=h c (i )-h m (i )。其中:h c (i )为计算机方在第i 路估计值得分,h m (i )为游戏者一方在第i 路得分。对的得分规则作如下说明。规则中+代表一空点;o 代表对方棋子;*代表有计算机方棋子;++表示连续2点为空点;+++*++表示连续3个空点接一个计算机方棋子,再接两空点。某一规则+++*++ h c (i )=30表示如在i 路上有棋子构成形如+++*++则h c (i )=30。其他规则表示相同。
在系统中使用的主要估值规则如下:(1)+++*++ h c (i )=30(2)++**++ h c (i )=100(3)+***++ h c (i )=300(4)O****+ h c (i )=300(5)+****+ h c (i )=1000(6)***** h c (i )=10000
由对称性可知++**+++和+++*++的估值相同,同理可得其他具有这样对称性的估值都认为是相等的。在连续两路上出现(3)的情形 h c (i )=5000,一路出现(3),另外一路出现(4) h c (i )=5000。所以在整个棋盘上的总估值为:
h (n )=
∑96
i =1
h c
(i )
-h m (i )
为了增加系统的智能化也可以添加其他的一些规则。
3.3 遗传算法优化估值函数
在博弈程序的几大主要部分里,估值函数是与具体的棋类知识紧密结合的一部分。可以说估值函数在很大程度上决定了博弈程序的棋力高低。上面给出的估值是根据实际经验给出的。如何对上述的估值进行优化呢?下面采用遗传算法来改进静态估值。遗传算法的估计值在很大的程度上也依赖于
实施者的经验。但是可以利用一些高水平名局棋谱或同其他博弈程序对弈,看使用某一组参数时取胜的机率有多大来进行较验。经过几次的试验一般就可以得到较好的静态估值。传统的算法一般只能维护一组较好的参数。遗传算法同传统的算法相比可以同时维护几组较好的参数,通过向其中添加一
组新参数,通常是将几组老参数中选出的值组合在一起做一点变化。然后同几组老的参数比较孰优孰劣,将最差的一组从中去除。这里面较重要的操作是交叉和变异操作。交叉通过随机交换父代个体的信息来继承已有参数中的优良内容;变异通过随机改变个体中的基因而增加种群的多样性,避免优化的因局部震荡而失败。
可以将遗传算法的优化估值参数的过程用图2表示。
26
张海峰等:五子棋中的博弈智能设计