计算机系统遗传学,中国象棋计算机博弈系统评估函数自适应遗传算法[转]
开局库可以查询到,则提取开局库的对应走法而
不必展开树·可以避免在开局时由于搜索深度的
不足而带来战略上的失误·
评估函数是模式识别和智能算法应用最为广
泛的领域·不管多么复杂的评估函数,都可以表示
为一个多项式·评估函数一般来说必须包括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 的计算公式如下:
式中, 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 所示·
如图1 所示,得分随着代数的增加单调增加,
而参加比赛的随机选手基本没有取胜的机会·在
进化到600 代时,本文给出了一部分训练的结果,
此时的固定子力值如表1 所示·
可以看到,固定子力值的大小排列顺序符合
人的经验,车的值略大于马和炮的和,马和炮的值
都约等于象和士的和,这都是象棋高手默认的规
律·
用600 代的参数组和完全用经验设定的参数
组的程序进行了比赛,结果600 代的胜率明显占
优·
4 结 论
在中国象棋的评估函数中,引入了自适应遗
传算法优化参数组合,它加强了传统遗传算法的
局部搜索能力,避免了传统的爬山法容易陷入局
部最优的缺点,而且不像模拟退火那样收敛过慢·
它同时维护一组参数,既可以继承已有参数中的
优良内容,又可以避免因局部振荡而失败,并且具
有很好的收敛速度·
当程序拥有进化参数的评估函数时棋力明显
提高,每当加入了一些新参数,丰富了棋子之间联
系的奖励和惩罚时,都可以用自适应遗传算法进
行优化,而不是传统上的手工调整,可以最大限度
发挥评估函数的作用·这也为开发出高水平的计
算机博弈程序打下了坚实的基础·
计算机系统遗传学,中国象棋计算机博弈系统评估函数自适应遗传算法[转]相关推荐
- java开发爱恩斯坦棋,爱恩斯坦棋计算机博弈系统的研究与实现
爱恩斯坦棋计算机博弈系统的研究与实现 [摘要]:计算机博弈,也称机器博弈,是一个极具挑战与发展前景的计算机研究领域,其作为人工智能领域一个极其重要的课题,素有人工智能领域"果蝇"之 ...
- 计算机爱恩斯坦棋游戏,爱恩斯坦棋计算机博弈系统的研究与实现
爱恩斯坦棋计算机博弈系统的研究与实现 [摘要]:计算机博弈,也称机器博弈,是一个极具挑战与发展前景的计算机研究领域,其作为人工智能领域一个极其重要的课题,素有人工智能领域"果蝇"之 ...
- 计算机五子棋博弈发展历史,五子棋计算机博弈系统的研究与设计
五子棋计算机博弈系统的研究与设计 [摘要]:计算机博弈是人工智能领域最具挑战的研究分支之一.它是研究人脑思维的载体,是计算机技术与博弈论相结合的产物,是人工智能领域的"试验田",被 ...
- 中国大学生计算机博弈大赛竞赛经验
大家好,我是来自东南大学的小轩,目前是一名研二学生,专业是复杂系统与复杂网络.在全国大学生计算机博弈大赛中获得一次全国一等奖,一次全国三等奖,在全国计算机博弈锦标赛中获得季军一次. 我自2016年Al ...
- linux终端 中国象棋,在Deepin系统下安装Xboard并使用它玩中国象棋
本文介绍在Deepin系统下安装Xboard的命令,并通过xboard @xq命令进入到中国象棋模式,有喜爱中国象棋的网友又可以多一种途径了,当然,也可以玩国际象棋. 前言 Xboard/WinBoa ...
- 微型计算机系统的发展历史,计算机的系统发展历史
计算机的系统发展历史以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 计算机的系统发展历史: 1.第1代:电子管数字机(1 ...
- 课程设计两连发之中国象棋人机博弈
我今年大四,明年就毕业了.料想为课程设计写的这两个程序以后也不会再拿出来看了,索性就开源了.希望可以帮助到大家,可以当课程设计交差,也可以优化一下发扬光大. 这个前后大概花了两个星期.写好到目前为止还 ...
- 中国象棋人机博弈程序(扁平化棋局) C语言实现
为什么80%的码农都做不了架构师?>>> 平台是Visual studio 2013 windows8.1 64位 先来一个效果图吧,原先是挺清晰的,但是200K以上不能上传 ...
- 扁平化c语言教程,中国象棋人机博弈程序(扁平化棋局) C语言实现
平台是Visual studio 2013 windows8.1 64位 先来一个效果图吧,原先是挺清晰的,但是200K以上不能上传,所以搞模糊了,这个界面是扁平风格的,个人感觉不错,很佩服作者,我 ...
- java开发爱恩斯坦棋,爱恩斯坦棋计算机博弈关键技术研究
爱恩斯坦棋计算机博弈关键技术研究 [摘要]:计算机博弈是人工智能领域的重要研究方向之一,被誉为人工智能学科的"果蝇".爱恩斯坦棋属于完备信息博弈棋种,是一种棋局信息完全透明的博弈类 ...
最新文章
- Java调用C/C++编写的第三方dll动态链接库(zz)
- 腾讯 AI Lab 开源业内最大规模多标签图像数据集
- ubuntu下连接mysql出现Access denied for user ‘rose‘@‘localhost‘ (using password: NO)的解决方法
- js map、filter、forEach
- 使用 Kafka 和 Spark Streaming 构建实时数据处理系统
- 直播 | 达观数据高级技术专家杨慧宇:金融数据结构化实践
- 信息学奥赛一本通C++语言——1055:判断闰年
- bzoj2244 [SDOI2011]拦截导弹 cdq分治
- LeetCode(257)——二叉树的所有路径(JavaScript)
- 系统辨识的最小二乘法原理及其算法实现
- delphi 调试控件代码_机器人调试(六十七)
- 小米 samba linux,解决小米路由器升级固件后samba无法访问一例
- 【5G】NAS安全密钥衍生算法详解
- 【题解】284E. Coin Troubles(dp+图论建模)
- Google 谷歌网页搜索, 学术搜索
- 百度ai开放平台使用方法(附带例子详细步骤)
- 【科普】人眼到底等于多少像素
- 机房搬迁IBM磁盘阵列哪些信息需要抓取
- GridView数据替换,数字按要求替换文字
- 教你如何修改铁威马NAS的用户密码