基于Alpha-Beta搜索五子棋博弈引擎设计与实现.pdfVIP

基于Alpha-Beta搜索五子棋博弈引擎设计与实现.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

1、实验目标

综合课程中机器博弈基础知识,设计并开发一个基于alpha-a搜

索的五子棋机器博弈引擎,实现五子棋人机博弈,机机博弈。使用

C++语言,在windows系统下的visualstudio环境进行开发。引擎

遵循五子棋机器竞赛使用的竞赛平台客户端GOMOCUP通用通信协议。

2、博弈引擎设计

1)博弈搜索算法

引擎采用的博弈搜索算法是结合启发,置换表的fail-soft

alpha-a搜索。Alpha-a搜索是一种极大极小值搜索的减值改

进。通过将MAX节点的子节点中的最大值alpha和MAX节点的父节点

(MIN节点)的目前最小值a进行对比,如果alphaa,则由

生成树的规则可以知道,该MAX节点生成的子树的可以被剪去,因为

存在一个最大值alpha大于a,该节点不会被父节点(MIN)选择。

基本的alpha-a搜索如下图所示:

和极大极小值搜索一样,可以通过形式的变化,得到负极大极小值搜

搜算法。将获得子节点部分进行变化,可以不用再判断当前节点是

MAX还是MIN节点。如下图:

在以上的alpha-a搜索基础上,通过将alpha和a范围设置的

较小,那么整个搜索过程可以进行的剪枝。即Fail-soft

alpha-a搜索。

2)启发函数设计

启发函数主要是通过对棋盘上的棋子构成进行分析,从而评估当

前移动产生的局面对当前玩家而言的优劣。其主要实现是:

⚫通过数据结构记录每个位置相邻的同色棋子数

⚫将棋子信息传给分析函数,更新目前棋盘上的棋型信息(活三,

活四等)

⚫分别评估每个玩家分别有的棋型,并给每个棋型赋不同的权

重,获得每个玩家的得分

⚫用己方得分减去对手得分,即得到当前移动对己方的得分。

3)走法产生机制

走法产生机制是,设置range,对棋盘上每一个非空的位置p,

非重复的将以p为的(2*range+1)*(2*range+1)的正方形区域

中的空位放入候选走法队列。

在此基础上,引擎实现中,将己方和对方的棋子分别处理。首先

将对手棋子附近range1的空位加入队列,然后将己方棋子附近

range2的空位加入队列。为了缩小搜索空间,将range1设定为1,

将range2设定为2.这样可以改善算法在有限时间搜索中因为搜索空

间过大,导致对手冲四未能及时找到的情况。同时减少了搜索时间。

4)启发/置换表/禁手检测等

启发信息:

通过启,将候选走法按照走法的优劣进行大致排

序,从而优化了alpha-a搜索的表现。同时,在启发信息的

实现中使用的是归并排序,而归并排序是稳定的排序算法。所以在走

法产生时先进行对手附近可行走法的搜索,在排序后也相对的排

面。可以更大程度的保证冲四等必防棋型的搜索发现。

置换表:

通过置换表,将过去搜索过的节点启发函数值记录下来。为

每个节点记录一个标志,表明时准确值,上界,还是下界。从而可以

结合Fail-softalpha-a搜索优化

5)其它修改和改进的地方

通过迭代加深的方法进行搜索,尝试每次深度加1,发现这样搜索的

效率没有分段改变迭代深度的搜素效率高,所以最终是在1-4部分深

度每次乘以2,4-20每次加1

3、棋力评测

该博弈引擎在每次10秒的对战中,能显著胜过基于极大极小值搜索

实现的引擎。其棋力水平超过70%普通人。

4、总结

通过五子棋机器博弈程序设计实验,我对启发式的搜索方法有了更深

的理解。在实验过程中,有很多涉及剪枝和优化的内容,常常需要通

过观察引擎下棋的表现,提出猜想,进试实验。这个过程增强了

我对于实验设计和发现问题的能力。

这次的实验中,评估优化和启发部分都主要是用了一些通用的方法,

您可能关注的文档

文档评论(0)

158****9376 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档