智能五子棋中的博弈问题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中图分类号:TP11
文献标识码:A
文章编号:1672-7800(2006)06-0075-03
0 前言
让电脑像人脑一样思考,一直是人工 智能发展的最终目标。人工智能与生物 工程、空间技术一起被并列为当今三大尖 端技术,它的中心任务是研究如何使计算 机去做那些过去只能靠人的智力才能做 的 工 作 。目 前 ,各 发 达 国 家 都 把 人 工 智 能 作为重点列入本国的高科技发展计划,投 入巨大的人力和物力。作为一门边缘学 科 ,它 有 诸 多 的 研 究 领 域 ,博 弈 即 为 其 中 之 一 。博 弈 就 是 对 策 或 斗 智 ,这 是 自 然 界 中 的 普 遍 现 象 ,它 不 仅 存 在 于 下 棋 之 中 , 而 且 存 在 于 政 治 、经 济 、军 事 和 生 物 竞 争 中 。 博 弈 的 参 加 者 可 以 是 个 人 、集 体 、某 种 生 物 或 机 器 ,他 们 都 力 图 用 自 己 的“智 力”去 击 败 对 手 。博 弈 为 人 工 智 能 提 供 了 一个极好的试验场所,人工智能中的许多 概念和方法都是从博弈程序中提炼出来 的,它的许多研究成果已经用于军事指挥 和经济决策系统之中。人工智能中大多 以下棋为例来研究博弈规律。本文以五 子棋为入口,设计了一个智能五子棋系 统 ,以 实 现 人 和 计 算 机 的 博 弈 。
4.1 搜索策略 不从(0,0) 到(18,18) 搜
3 算法设计
3.1 极大极小搜索 如果两个玩家对弈,分别为 MAX 和
MIN。MAX 先走,之后两人交替走步直 到 游 戏 结 束 。游 戏 用 产 生 式 系 统 描 述 ,由 于不可能对完整解图进行搜索,可定义一 个静态估计函数 f ,以便对游戏状态的当
2006 · 6 月号·软件导刊 75
智பைடு நூலகம்控制
1 人机博弈的要点
人机对弈的程序,至少应具备以下 5 个部分:
(1) 状态表示:某种在机器中表示棋 局 的 方 法 ,能 够 让 程 序 知 道 博 弈 的 状 态 。
(2) 走法产生:产生合法走法的规则,
以使博弈公正地进行,并可判断对手是否 乱走。
(3) 搜索技术:从所有合法的走法中 选择最佳的走法技术。
96
=
=1
为了增加系统的智能化也可以添加 其它一些规则。 3.3 遗传算法优化估值函数
在博弈程序的几大主要部分里,估值 函数是与具体的棋类知识紧密结合的一 部分。估值函数在很大程度上决定了博 弈程序的棋力高低。下面采用遗传算法 来改进静态估值。遗传算法的估计值在 很大的程度上也依赖于实施者的经验。 但是可以利用一些高水平名局棋谱或同 其它博弈程序对弈,使用某一组参数时取 胜的机率大小利用进行校验。经过几次 的试验一般可以得到较好的静态估值。 传统的算法一般只能维护一组较好的参 数。遗传算法同传统的算法相比可以同 时维护几组较好的参数,通常的做法是向 其中添加一组新参数,将几组老参数中选 出的值组合在一起做一定变化。然后同 几组老的参数比较孰优孰劣,将最差的一 组从中去除。其中较重要的操作是交叉 和变异操作。交叉通过随机交换父代个
图1
前势态进行估值。一般规定有利于 MAX 的状态取 f (s) > 0 ,有利于 MIN 的状态取 f (s) < 0。以一字棋为例,极大极小搜索的 5 个步骤如下:
(1) 生成整个博弈树,即扩展树的每 个节点。
(2) 用静态估值函数 f 对每个叶节点 进 行 估 值 ,得 出 每 个 终 节 点 的 评 价 值 。
(3) 用终节点的估值得到其搜索树上 一层节点的估值。 如图 1 所示,A1 走步 的 MIN 结点选择走步,应选 A15 ,由 A15 走步得到的估值是 A1 走步中最小的,同 样 A2 、A3 的 MIN 也选择最小值走步。
(4) 重复(3) 过程在 MAX 层取其分支 的最大值,MIN 层取其分支的最小值,一 直回溯到根结点。
智能控制
智能五子棋中的博弈问题
杨庆文
(浙江工商大学 计算机与信息工程学院,浙江 杭州 310035)
摘 要:博弈是人工智能的主要研究领域之一,它涉及人工智能中的推理技术、决策和规划。将这些技术用于五子棋中,设
计了一个智能五子棋系统,实现了人和计算机的博弈。
关键词:五子棋;人工智能;博弈树搜索;静态函数估值;遗传算法优化
图 2 博弈搜索树
76 软件导刊· 2006 · 6 月号
智能控制
息;此概率过小则会使优化 的过程缓慢甚至停止不前。
变 异 概 率。用 于 控 制 产生变异个体的频度,目的 是防止整个种群中任意参 数的几个基因保持不变。一 般使用一个很小的概率即 足以完成此任务;概率太大 会使遗传信息无法稳定传 递,从而使优化过程变成随 机过程,失去确切的方向而 导致失败。
(4) 估值函数:一种评估局面优劣的 方法,用以同上面的技术配合做出智能的 选择。
(5) 对弈界面。
2 五子棋的特点及规则
五子棋的规则如下: (1)棋盘:采用同围棋盘一样的 15 路 或 19 路线的棋盘,本系统采用 19 路线的 棋盘。 (2)下 法 :两 人 分 别 执 黑 白 两 色 棋 子 , 轮流在棋盘上选择一个无子的交叉点落 子。无子的交叉点又被称为空点。 (3) 输赢判断:黑、白双方有一方的 5 个棋子在横、竖或斜方向上连接成一线即 为该方赢。 为描述博弈问题,可引入产生式系统 把博弈问题转化为计算机可识别的对象。 产生式系统由 3 个基本要素组成:一个综 合数据库 ( Global Database)、一组产生式 规则(Set of rules)和一个控制系统(Control System) 。以五子棋为例,综合数据库可 用 19 ×19 的二 维数表示棋盘内各点状态 (空、白子、黑子) ;规则集合由具体下棋规 则决定,对于五子棋可分为禁手和无禁手 两类,以下为一规则:if 棋盘( i ,j) 处为空 then 令( i ,j) 处为白子。
本文用评估函数 h (i) 衡量每一个叶 节 点 位 置 的“值”。 一 个 最 佳 首 步 可 以 由 一 个最小 最大化过 程产生。假设轮 到 MAX 从搜索树的叶节点中选取,他肯定 选择拥有最大值的节点。因此,MIN 叶 节点的一个 MAX 节点双亲的倒推值就 等于叶节点的静态评估值中的最大值。 另一方面,MIN 必然从叶节点中选取最 小 的 节 点 (即 最 负 的 值 )。既 然 如 此 ,MAX 叶节点的 MIN 双亲节点被分配一个倒推 值 ,它 等 于 叶 节 点 静 态 评 估 值 的 最 小 值 。 在所有叶节点的父节点被赋予倒推值后, 开始倒推另一层,假定 MAX 将选择有最 大倒推值的 MIN 的后继节点,而 MIN 会 选择有最小倒推值的 MAX 后继节点。继
续逐层对节点评 估 ,直 到 最 后 开 始 节点的后继者被赋 予 倒 推 值。MAX 将选择有最大倒推 值的节点作为他的 首 步 。整 个 过 程 的 有效性便是基于这 样的假设。用整个棋盘估值的函数 h (n) 为静态估值函数。设想当前棋 S 为轮到 计算机方下棋,任选一空点作为计算机方 的下棋位置(可有若干种选择) ,接着考虑 在此情况下游戏者一方下棋的棋局(用O 表示) ;从某一 O 棋局出发,任选空点作 为游戏者一方的落子处 (又有若干种选 择),再次形成计算机方下棋的棋局;依此 类推,这样可形成一棵以 S 为根结点的博 弈树,该树以 O 棋局为第二 层子结点,以 ù 棋 3 层子结点,等等。如果继续向前搜 索,可形成多层子结点。以向前搜索 3 层 子结点为例,对第三层子结点的某一棋局 n,求出其估计值 h (n),假设有一博弈树已 形成,如图 2 所示,h (n) 的值由各结点旁 的数值给出。 根据极小极大化分析法,先计算第三 层子结点 h (n)值,第二 层子结点的估计 值取它的各后继子结点的极小值,根结点 的估计值取它的各子结点的极大值。这 个取得最大估计值的子结点即为从 S 出 发的计算机方的最佳落子方案。棋盘上 某 一 行 、某 一 列 或 某 一 对 角 线 为 一 路 ,这 里使用的棋盘为 19 行 19 列,因此,行和 列方向上共有 19+19= 38 路;从左下到右 上方向的对角线有 37 路,同样,从左上到 右下方向的对角线也有 37 路。但对于五 子棋来说必须在一条直线上有连续 5 个 棋 子 才 能 赢 ,因 此 ,在 对 角 线 上 就 可 以 减 少 8 路。所以,整个棋盘路的总数为:T R = 38+ (37-8) + (37-8) = 96 路。 得分规则作如 下:规则中,+代表 一空点;o 代表对 方棋子;*代表有计 算机方棋子;+ + 表 示连续 2 点为空 点;+ + + * + + 表示 连续 3 个空点接一
个计算机方棋子,再接 2 个空点。某一规 则++ + 3 + + ] = 30 表示:如在 路上有棋 子构成形如+ + + * + + ,则 = 30。其它规 则依此类推。在系统中使用的主要估值 规则如下:
(1) + + + * + +→hc ( )= 30 (2) + + * * + +→hc ( )= 100 (3) + * * * + +→hc ( )= 300 (4)0 * * * * +→hc ( )= 300 (5) + * * * * +→hc ( ) = 1000 (6) * * * * * →hc ( )= 10000 由对称性可知+ + * * + + + 和+ + + * + + 的估值相同,同理可得其它具有这样 对称性的估值都认为是相等的。在连续 两路上出现 (3) 的情形→hc ( )= 5 000,一 路出现(3),另外一路出现(4)→hc( )= 5000。 所以在整个棋盘上的总估值为:
(5) 根结点选择分支值最大的走步, 如图 1 所示,A3 走步为根的最佳走步。
一字棋的一阶搜索树,深度为 3 ,其 中估计函数 f 的值为棋盘上剩余格全用 MAX 填满所成的三子一线的个数 m 减 去棋盘上剩余格全用 MIN 填满所成的三 子一线的个数 n ,即 f (s)= m - n。 3.2 采用静态评估函数
4 一些可能的改进
图 3 用遗传算法优化估值参数
体的信息来继承已有参数中的优良内容; 变异通过随机改变个体中的基因而增加 种群的多样性,避免优化因局部震荡而失 败。遗传算法的优化估值参数的过程如 图 3 所示。
遗传算法的优点如下: (1) 由于搜索算法是从问题的解开始, 而不是一组参数。所以被局部震荡干扰 导致求最优解失败的可能性大大减小。 (2) 此算法能将搜索重点集中于性能 高 的 部 分 ,能 较 快 地 求 出 最 佳 的 参 数 。在 使用中应当注意如下问题: 种群数目。这是影响算法性能的重要 因素。种群数目过大,会导致运算时间太 长,结果收敛缓慢;种群数目太小则可能导 致算法精度过低,甚至停止不前。 交叉概率。用于控制交叉操作的频度。 此概率过大会导致种群中的个体更新过 快,较优的个体不能稳定地保持和传递信
在大多数博弈问题中,要想把该问题 完整的解图画出并根据对手可能走的所 有走步的预测来使计算机在对弈中不管 对手走出哪种走步都获胜是不可能实现 的。因此即使使用了强有力的启发式搜 索 技 术 ,也 不 可 能 使 分 支 数 目 减 到 很 少 。 所以这种完全取胜策略必须丢弃,而应把 目标定为如何寻找一步相对的好棋。这 种情况下搜索深度可根据实际情况进行 调整,从局部搜索树中选取一步最好的走 步。等对方走步后再寻找下一步好棋。 可通过极大极小搜索方法来实现这种搜 索策略。
搜索策略是此问题的关键。策略的 好坏直接影响五子棋算法的效率、智能的 高低。Victor Allis 认为五子棋(五子棋有 不同的规则,Victor Allis 解决的是非职业 比赛规则的五子棋,没有复杂的开局规 则) 执黑必胜。不过他也提出,还没有程 序能够执击败人类棋手。他指出最强的 五子棋程序是 Vertex,作者为 Shaposhnikov ,该程序使用了 - 搜索,深度 162ply ,提 供 14 种最可能的走法。