2 智能决策
2.1 博弈树模型算法
2.1.1 全局估算函数
此次项目中评估函数有两种:
(1)人为设定函数方法:更具人的经验,对一些特定的棋形在棋盘上进行检索。并且计数,最后赋予相应权值求和得到对棋盘的评价值。典型的棋形有“活一”“活二”“活三”“冲四”“成龙”。越接近于五子连珠的棋形应有越大的权重。由于先手优势,同一种棋形黑棋的权重的绝对值应略大于白棋的权重。博弈双方的权重的符号应相反。不失一般性,黑棋的权重设置为正。
(2)人工神经网络方法:用225个输入节点1个输出节点的神经网络对棋局进行评估。考虑到笔记本电脑计算条件本次实验中采用三层全连接网络结构,中间节点数为10。255个输入节点对应15*15棋盘上的所有点。如该点为黑棋输入为1,白棋输入-1,无子输入0。神经网络初始参数有高斯分布确定,再用遗传算法优化
2.1.2 极大极小算法
假设对弈的甲乙双方均为理性人,则对于甲走的每一步,乙都会选择下使得自己优势最大,甲的劣势最大的一步,甲下棋时亦然。例如在图6中在A棋局情况下,如果甲选择走B棋局, 那么乙将选择走对甲不利的E棋局;如果甲选择走 C棋局,乙将选择走G棋局;如果甲选择走D棋局, 那么乙将选择走K棋局……所以,综合来看,甲应该选择走B棋局,这样对自己最有利,这种算法就是极大极小算法。
图8 博弈树模型
2.2 博弈树模型算法优化与实现
2.2.1 增量分析法
在用人为设定函数计算棋局价值数值时,如果每次都遍历整个棋盘,则需要大量时间,事实上,只需计算出当前这一步落子在四个方向上的价值和未落子时该点四个方向上的价值之差再加上原来棋盘的价值及即可求得落子之后期盼的总价值
2.2.2 局部性原理
控制博弈树的层次和每层展开的节点数目,对反应速度和智能程度至关重要,根据人类棋手的经验,五子棋问题中,新下的棋与其余棋子的距离和该点的价值相关,距离越远,对整个棋盘影响越小,距离越近影响越大。这就是局部性原理,运用它可以选择有“潜力”的点进行展开,缩小搜索范围,提高搜索效率。
2.2.3 α-β剪枝
很多时候遍历整个博弈树是没有必要的,如图6中,在A棋局下轮到甲走棋,甲首先搜索叶子节点E=7,F=11,计算得到B 棋局的倒推值为7;然后,当甲继续搜索到节点G= 1时,发现C(C≤1)必定小于B。也就是说,走第二 个子节点C棋局肯定不如走第一个子节点曰棋局 有利,那么子节点C棋局往下的其它节点棋局(H、I)就不用再搜索了,此过程就称为α-β剪枝。,运用α-β剪枝可以加快搜索速度,且党棋局越明郎,搜索速度越快。
2.3 实验结果与分析
2.3.1 人为设定函数的机器棋手表现
表1 机器五子棋的测试结果
采用算法及优化手段 |
博弈树每层分支 |
博弈树层次 |
下棋速度 |
与普通棋手下胜算 |
基本的博弈树算法 |
几百 |
至多3层 |
很慢 |
约1成 |
加入优化2.2.1 |
7 |
增至5层 |
较慢 |
约3成 |
加入优化2.2.2 |
7 |
增至7层 |
快 |
约5成 |
加入优化2.2.3 |
7 |
增至9层 |
很快 |
8成多 |
2.3.1采用神经网络和遗传算法的机