计算机系统遗传学,中国象棋计算机博弈系统评估函数自适应遗传算法[转]

开局库可以查询到,则提取开局库的对应走法而

不必展开树·可以避免在开局时由于搜索深度的

不足而带来战略上的失误·

评估函数是模式识别和智能算法应用最为广

泛的领域·不管多么复杂的评估函数,都可以表示

为一个多项式·评估函数一般来说必须包括5 个

方面的要素[1 ] ,分别是固定子力值、棋子位置值、

棋子灵活度值、威胁与保护值、动态调整值·每一

方面的值又是由许多参数值构成的,例如固定子

力值就包括7 类棋子的值·即使最简单的评估函

数也有20 多个参数,将这些值线性地组合在一起

得到最终的评估值,通常依赖于编程者的棋类知

识,这就带来很大的局限性,通过手动调整很难达

到全局最优·

为了解决这个参数优化的问题,本文在中国

象棋计算机博弈领域引入了遗传算法·通过离线

自学习训练得到最佳参数组合·

2  基于自适应遗传算法的象棋评估

函数

有学者已经把遗传算法引入了评估函数[5 ] ,

试图学习棋子之间内部的动态联系,但效果不是

很理想·本文仅仅用遗传算法做参数优化,并且为

了加强遗传算法的局部搜索能力,在进化过程中

采用了自适应遗传算法·

2. 1  遗传算法

遗传算法( Genetic Algorithm , GA) 是近些年

发展起来的一种崭新的全局优化算法,由Holland

教授首次提出[6 ]

·它借用了生物遗传学的观点,

通过选择、遗传、变异等作用机制,实现个体适应

性的提高,体现了自然界中“物竞天择、适者生存”

的进化过程·遗传算法吸引了大批的研究者,迅速

推广到优化、搜索、机器学习等方面·

传统的爬山法[7 ] 是通过对参数小范围的试

探来寻求最优解,并且受初始采样值取值范围和

单方向搜索的限制,很容易陷入局部最优·

模拟退火是一种基于蒙特卡罗迭代求解的启

发式随机搜索算法,它试图通过模拟高温物体退

火过程的方法,寻找优化问题的全局最优解或近

似全局最优解·它可以避开局部最优点,但是致命

的缺点是速度太慢,运行时间太长·

遗传算法同时使用多组搜索信息, 具有很好

的全局搜索能力, 将重点集中在性能较高的地

方, 具有很快的搜索速度; 而且遗传算法的鲁棒

性也明显优于前两种算法, 最有可能在象棋中取

得成功·

2. 2  适应度函数的计算锦标赛算法

众所周知,遗传算法在进化搜索中基本不需

要外部信息,仅以适应度函数(fitness function) 为

依据,利用种群中每个个体的适应度函数来进行

搜索·一般而言,适应度函数是由目标函数变换而

成的·但是象棋的评估比较复杂,很难像一般优化

问题那样找到真实准确的目标函数,因此本文设

计了一个专门用于棋类优化问题的适应度函数计

算方法锦标赛算法·

首先,要对自己开发的计算机博弈软件进行

拓展,拓展后的程序包含了两个评估函数,但是搜

索引擎、走法生成都是共用的·两个评估函数通过

读取不同的参数组进行比赛,决出胜负·这样,就

可以通过竞赛来确定下棋双方的适应度:在相同

适应度的初始状态下,赢了对适应度进行加运算

(奖赏) ,输了对适应度进行减运算(惩罚) ,和了则

不操作·这样就解决了适应度函数不好确定的问

题,实现了通过适应度函数来决定个体的优劣程

度,体现了自然进化中的优胜劣汰原则·

遗传算法处理的对象主要是个体[8 ] ,个体包

括一组染色体串,每一个染色体对应于评估函数

中的一个参数值·将染色体串解码到评估函数中

即可求得评估值·染色体则是一个基因数组,基因

的长短决定编码的精度·

至于染色体串的编码方式,本文选用的是通

用的二进制编码方式,由于对解的精度要求不高,

其编码和解码都可以快速简单地实现,而且二进

制编码进行交叉变异操作时也比其他编码更加简

捷方便·

2. 3  加快优化进程的相关举措

(1) 由于加入开局库,会使比赛时间变得很

长;但如果没有开局库,对下棋过程的质量又会有

很大影响,不能真正反映个体的好坏·所以本文对

初始的比赛环境做了改动,初始状态是由包括许

多红黑局面相当的中局数组构成,在进化了规定

数量的代数以后,会自动修改比赛环境·

(2) 由于计算机之间的比赛中经常遇到死循

环,所以本文也对循环加入了一些规则进行判断,

避免了这种情况的出现·

(3) 由于象棋中的胜负是依据将或帅的存在

与否进行判断,所以将和帅的值默认为无穷大,并

不参与进化·

以上这些做法都有利于提高比赛的精彩程度,

更快地选出真正优秀的个体,加快进化的速度·

2. 4  遗传操作过程

(1) 锦标赛选择

遗传算法可采用的选择方法很多,有轮盘赌选

择法、局部选择法、截断选择法和锦标赛选择法,本

文采用了锦标赛选择法和精英选择策略[9 ]

·每两个

个体之间进行先后手互换的两场比赛,取出适应度

最高的一些精英作为下一代的父个体·锦标赛模式

的缺点在于速度过慢·为了加快速度,本文对于标

准锦标赛做了改进·将包含m 个个体的种群随机

分成n 组,在组内进行锦标赛训练,每个组的冠军

为筛选出的最佳,对n 个冠军做交叉和变异操作

产生m - n 个新个体,填满并形成一个新种群·做

了这样的优化后,以包含60 个个体的种群为例,在

保证优胜劣汰原则的基础上,可以节省约75 %的

时间·

(2) 均匀交叉

交叉方法很多, 有单点交叉、多点交叉、顺序

交叉、循环交叉等等,为了使交叉在便于操作的同

时更加广义化,本文选用了均匀交叉,参数之间的

间隔点作为潜在的交叉点·均匀交叉根据交叉率

pc 随机地产生与参数个数等长的0 - 1 掩码, 掩

码中的片断表明了哪个父个体向子个体提供变量

值·通过这个掩码和选择的父个体一起确定了子

个体·

(3) 变异

变异是指以等于变异率pm 的概率改变一个

或几个基因,对于二进制串来说,就是根据变异率

实现基因的0 - 1 翻转·变异是一种局部随机搜

索,与选择/ 交叉算子结合在一起,保证了遗传算

法的有效性,使遗传算法具有局部的随机搜索能

力·同时使得遗传算法保持种群的多样性,以防止

出现非成熟收敛·

2. 5  自适应遗传算法

在整个遗传算法实现的过程中,交叉率pc 和

变异率pm 的选择是影响遗传算法行为和性能的

关键所在,直接影响算法的收敛性·pc 越大,新个

体产生的速度就越快,然而pc 过大时遗传模式被

破坏的可能性也越大, 使得具有高适应度的个体

结构很快就会被破坏;但是如果pc 过小, 会使搜

索过程缓慢,以至停滞不前·对于变异率pm ,如果

pm 过小,就不易产生新的个体结构; 如果pm 取

值过大,那么遗传算法就变成了纯粹的随机搜索

算法·但是, 目前还没有通用的能够一次性确定

pc 和pm 的方法·针对不同的优化问题,需要反复

通过实验来确定pc 和pm , 这是一件非常繁琐的

工作·为此, 本文引进了自适应遗传算法[10 ]

(AdaptiveGA ,AGA) , pc 和pm 能够随着适应度

自动改变·

pc 和pm 的计算公式如下:

a4c26d1e5885305701be709a3d33442f.png

式中, pc1 = 019 , pc2 = 016 , pm1 = 011 , pm2 =

01001·f max为群体中最大的适应度值; f avg为每

代群体的平均适应度值; f′为要交叉的两个个体

中较大的适应度值; f 为要变异个体的适应度值·

这种自适应的pc 和pm 能够提供相对某个

解的最佳pc 和pm ,在保持群体多样性的同时,保

证了遗传算法的收敛性·

3  实验结果

为了测试进化的效果,设计了一个测试实验,

实验是由100 代、200 代、300 代、400 代、500 代、

600 代的冠军和两个随机选手组成一个小组, 进

行循环赛,每两个对手之间都要进行互换先后手

的两场比赛·胜者积分加1 ,负者减1·最后的积分

如图1 所示·

a4c26d1e5885305701be709a3d33442f.png

如图1 所示,得分随着代数的增加单调增加,

而参加比赛的随机选手基本没有取胜的机会·在

进化到600 代时,本文给出了一部分训练的结果,

此时的固定子力值如表1 所示·

a4c26d1e5885305701be709a3d33442f.png

可以看到,固定子力值的大小排列顺序符合

人的经验,车的值略大于马和炮的和,马和炮的值

都约等于象和士的和,这都是象棋高手默认的规

律·

用600 代的参数组和完全用经验设定的参数

组的程序进行了比赛,结果600 代的胜率明显占

优·

4  结  论

在中国象棋的评估函数中,引入了自适应遗

传算法优化参数组合,它加强了传统遗传算法的

局部搜索能力,避免了传统的爬山法容易陷入局

部最优的缺点,而且不像模拟退火那样收敛过慢·

它同时维护一组参数,既可以继承已有参数中的

优良内容,又可以避免因局部振荡而失败,并且具

有很好的收敛速度·

当程序拥有进化参数的评估函数时棋力明显

提高,每当加入了一些新参数,丰富了棋子之间联

系的奖励和惩罚时,都可以用自适应遗传算法进

行优化,而不是传统上的手工调整,可以最大限度

发挥评估函数的作用·这也为开发出高水平的计

算机博弈程序打下了坚实的基础·

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值