计算机黑白棋对弈答辩PPT.pptVIP

  • 2
  • 0
  • 约1.65千字
  • 约 13页
  • 2023-09-08 发布于四川
  • 举报
计算机黑白棋对弈 内容目录 总体思路 程序的优化 局面估值 搜索算法 总体思路 查阅《PC游戏编程.人机博弈》等书籍资料对黑白棋人机对弈思想及AI算法进行学习。 对估值函数进行优化,采用棋位价值表+行动力+潜在行动力+稳定子估值方法,多项因素结合考虑,提高估值精度。 对黑白棋博弈树搜索算法进行优化,采用了α-β搜索的变体PVS搜索算法,并结合哈希表记录每一种棋面,更快速的进行搜索。 确定黑白棋AI算法的改进点,提高棋力。将棋局分为4个时段:初局、中局、渐终局、终局,并分别考虑不同时段的估值。 程序的优化 选用合理的棋盘价值表 提高估值函数模块的性能 通过对搜索算法的优化来加深搜索层数 局面估值 welcome to use these PowerPoint templates, New Content design, 10 years experience 基于棋子位置价值估值 基本原理 四个角上的棋子永远不会被翻,因此角落上的棋子有很高的价值;而边上的棋子也不容易被翻,价值也较高;C位(与角相邻的边上的位置)价值相对低;而X位(与角相邻的除去C位之后剩下的那个位置)价值很低。 局面估值 棋盘位置价值表 查阅相关资料以及根据我们对黑白棋规则的了解研发了一张新的价值表。 图为对棋盘价值进行初始化。 initValueTable(); 局面估值 基于行动力估值 曾经在 Andrew(蜗牛黑白棋的作者)的新浪博客中看到如果不存在比较好的模板(我们没有条件去从海量棋谱样本中训练一个好的模板),那只能依赖以行动力为主导的估值函数,并且可选择的接纳其他估值参数作为辅助参数。我们觉得行动力和潜在行动力比较重要,棋子数的权重会比较小,甚至可以忽略。稳定子是关键的,没有稳定子的参与,往往会很容易走到B2这种点上。 局面估值 行动力是指一个局面上可以下棋的地方的多少。 计算棋局双方的行动力价值 潜在行动力一般指对手棋子周围的空格数。 计算双方潜在行动力 计算己方稳定子个数 稳定子指后续行棋中始终不会被翻转的棋子。最明显的是角位置的棋子,角被占领后,角周围的棋子(两条边上的)也会成为稳定子。 估值权重的确定 对于估值函数, 在棋盘空格数大于等于50我们称为初局,棋盘空格数大于等于30小于50我们称为中局,棋盘空格数大于18小于30我们称为渐终局,棋盘空格数小于等于18我们称为终局。 这四个局面我们的估值函数是不一样的。 初局 价值表+行动力+潜在行动力 中局 价值表+行动力+潜在行动力 渐终局 行动力+潜在行动力+稳定子 终局 棋局比分 搜索算法 极小窗口搜索(Minimal Window Search/Principal Variation Search,PVS) 哈希表(Hash Table),其思想为定义一个巨大的数组,将每一局面记入其中,每一局面在数组中对应惟一的位置。 结合使用 PVS搜索算法 2 3 1 假设第一步是最佳的移动,其后继则次之,直到另一个节点被证明是最佳的。在一个中间节点,其第一个分枝以一个完整窗口(a,b)搜索并产生一个位于该窗口中的值v,后继的分支就以一个极小的窗口(v,v+1)搜索。 PVS搜索是Alpha-Beta搜索的一种变体。 由于以(v,v+1)为窗口的搜索剪枝效率远高于更大的窗口,所以PVS搜索的效率很高。 哈希表 由于PVS搜索剪枝过程中,有些节点已经搜索过了,就不需要重新搜索一遍节点。为解决这一问题,我们采用了哈希表将每一个节点的结果都记录下来,在任意节点向下搜索之前先查看这些记录,就可避免重复的操作。 对要搜索的每一节点,计算出它的一个哈希值以确定此局面在哈希表中的位置。计算另一个哈希值来校验表中的数据项是否是需要的那一项。 感谢大家的批评指正! 解题思路与实现细节 * 如果各个参数之间的权重配置非常好的话,棋力也是不弱的。 * 解题思路与实现细节 * 如果各个参数之间的权重配置非常好的话,棋力也是不弱的。 *

文档评论(0)

1亿VIP精品文档

相关文档