一种机器博弈优化方法

文档序号:9547345阅读:393来源:国知局
一种机器博弈优化方法
【技术领域】
[0001] 本发明属于计算机技术领域,特别是涉及一种机器博弈优化方法。
【背景技术】
[0002] 机器博弈(Computer Games),又称之为计算机博弈,伴随着计算机的诞生便受 到学术界的普遍关注,显然这是人工智能领域的很有显示度的挑战性课题,尽管"人工智 能"(Artificial Intelligence)学科还是在它十年之后(1956年)才正式诞生。
[0003] 早在计算机诞生的前夜,著名的数学家和计算机学家阿伦?图灵(Alan Turing) 便设计了一个能够下国际象棋的纸上程序,并经过一步步的人为推演,实现了第一个国际 象棋的程序化博弈[1]。那些世界上最著名的科学家,如计算机创始人冯?诺依曼(John von Neumann),信息论创始人科劳德?香农(Claude E. Shannon),人工智能的创始人麦卡锡 (John McCarthy)等人都曾涉足计算机博弈领域,并做出过非常重要的贡献。
[0004] 从上世纪40年代计算机诞生,计算机博弈经过一代又一代学者的艰苦奋斗和坎 坷历程,终于在上世纪的八、九十年代,以计算机程序战胜棋类领域的天才而享誉世界。其 中最为著名的则是1997年5月IBM "深蓝"战胜世界棋王卡斯帕罗夫,成为计算机科学史 上一个不朽的丰碑。在这之后,计算机博弈一天也没有停息过拼搏。由《Science》杂志评 选的2007年十大科技突破中,就还包括了加拿大阿尔波特大学的科研成果一一解决了西洋 跳棋(Checker)博弈问题,也就是说,在西洋跳棋的博弈中计算机将永远"立于不败之地"。
[0005] 机器博弈的核心思想并不复杂,实际上就是对博弈树叶子节点的估值过程和对博 弈树搜索过程的结合。在博弈的任何一个中间阶段,站在博弈双方其中任意一方的立场上, 可以构造一棵博弈树。这个博弈树的根节点是当前时刻的棋局,它的儿子节点是假设行棋 一步后的各种棋局,孙子节点是从儿子节点的棋局再行棋一步的各种棋局,依次类推,构造 整棵博弈树,直到可以分出胜负的棋局。
[0006] 博弈程序的任务就是对博弈树进行搜索找出当前最优的一步。对博弈树进行极大 极小搜索,可以达到这一目的。当然,程序不能也没有必要做到搜索整棵博弈树的所有节 点,对于一些已经确定为不佳的走步可以将以它为根节点的子树剪掉。而且,搜索也不必真 的进行到分出胜负的棋局,只需要在一定深度范围内对局面进行评价即可,因为只有搜索 空间缩小到一定程度,搜索才可以真正的进行。
[0007] 机器博弈在获得棋局对手棋牌的信息多少上来区分,分为完全信息博弈和不完全 信息博弈。其中,完全信息博弈:是指每一参与者都拥有所有其他参与者的特征、策略及得 益函数等方面的准确信息的博弈。而在不完全信息博弈里,参与人并不完全清楚有关博弈 的一些信息。例如大部分的棋类游戏属于完全信息博弈,而牌类游戏属于不完全信息博弈 的类别。但是军棋是一个例外,根据军棋的下棋规则,只有在双方碰子之后才能知晓对方的 棋子子力,所以军棋也属于不完全信息博弈的一种。
[0008] 机器博弈在完全信息博弈领域已经很好的解决博弈树剪枝和评价系统的问题,并 利用如今计算机优异的性能在多次人机比赛中取得辉煌成绩。但在不完全信息博弈领域 的研究还处于初级阶段,尤其是军棋。机器军棋博弈的难点在于计算机策略搜索空间超过 了目前计算机可以承受的范围,不能解决博弈树剪枝的问题,软件运行速度慢,并且胜率不 尚。
[0009] 蒙特卡罗抽样算法是现今应用于不完全信息博弈中的一个基本方法,它的基本思 想就是随机抽样和大规模的抽样次数来把不完全信息强制转化为完全信息而且逐步逼近 于真实情况。而根据蒙特卡洛随机试验所设计的软件较复杂,并且需要大量的试验,软件运 行速度慢,导致影响系统的出棋速度。

【发明内容】

[0010] 本发明为了克服现有技术存在的缺陷,本发明的目的是提供一种不深入展开博弈 树,利用概率分布模型模拟真实情况,只针对当前一层局面和预测对方下一步可能策略进 行搜索评估,容易通过机器语言实现,软件运行速度快,提高机器出棋速度和胜率的机器博 弈优化方法。
[0011] 本发明所采用的技术解决方案是一种机器博弈优化方法,具体步骤如图1如示:
[0012] 步骤1 :根据博弈种类和规则来设置维数及算法,完成对概率矩阵a的初始化,设 敌方共有m个子,所以矩阵的行数为m。每个位置共有η种可能的子力,所以矩阵的列数为 η。为了记录每个位置,在矩阵每行的右端加 Ovb,),来表示矩阵中的敌方子力的所在位置, 博弈过程中对手的子力概率分布:
[0014] 这里我们将a〇11,n)位置处的概率扩大10000倍,这样有助于我们计算,其中,在不同 种类的博弈,可能会有一些子是相同的,设P为一种博弈中的一种子,q为这种博弈中的另 一种子,如果P在这种博弈中只有一个,而q有r个,我们还设七^这一列表示的是p这个 子的概率,则a u, h)这一列的总概率为1,扩大10000倍为10000 ;在设au, ^这列表示q这 个子的概率,则au, g)这一列的总概率为r,扩大10000倍为r*l〇〇〇〇。这里说明,在下面更 新时需要注意,矩阵中的每一行每一列的值都为固定的,其中这里的P,q分别代表博弈中 的子,而在a的矩阵中每一列代表一个子,我们用h,g分别代表p,q子所对应的列,这一列 的概率和为这个子的概率,并且在不同的博弈种类中不同的子可能有不同个,每个子代表 的这一列概率就应该是子的个数乘上10000 ;
[0015] 步骤2 :矩阵中的行更新是固定博弈中碰子的位置i,对该位置j上是o-m个子力 的概率更新。因每个位置上只能有一种可能的子力,所以取每行的概率和为1,为减少误差, 我们取值10000。当双方碰子之后,概率表中Q 1J1)位置的概率增大或减小时需要在其相 对应的I1行列及所有列中收回或分配概率,以保证总概率不变。例如,若我方子灭,则对方 此位置定是比我方子力大的子,所以比我方子大的子力的概率值要增加,和我方子力相同 和之下的(ii,ji)子力概率值要减小,利用公式
1,……,n&&j辛jl对概率矩阵的行向进行迭代更新,直到除jl列之外的概率值全部更新 完成;
[0016] 其中,h表示双方碰子时所在的位置,j i表示是0-n中某种子力;上角标1表示是 迭代变化后的新数值;alh ^是变化的某子力的迭代初始概率值,4.,,是变化后的该子力新 的概率值,ail,,是除了 j i之外的某子力的概率值,是迭代完成后某子力的新概率值;
[0017] 步骤3:矩阵中的列更新主要是固定子中的子力j,而不限定子的位置i。根据同一 子力的不同数量,列上概率的总和也不尽相同,利用公式
i = 0,1,......,m&&i辛il对步骤2中提到的相应的j列中的概率值进行更新,直到除il 行之外的行都更新完成,其中,a_的值是10000 ;
[0018] 步骤4 :双方博弈过程中,来对敌方的概率矩阵进行更新;
[0019] 步骤5 :通过反查概率矩阵a中每个位置上可能性最大的敌方子力Vcippci niax,我们就 能判断这个位置上得子是何种子力的概率更大,我方的博弈策略就可据此改变,以获得更 快的运算速度。
[0020] 与现有技术相比,本发明所具有的有益效果为:本发明的优化方法不深入展开博 弈树,利用概率分布模型模拟真实情况,只针对当前一层局面和预测对方下一步可能策略 进行搜索评估,容易通过机器语言实现,软件运行速度快,提高机器出棋速度和胜率,既能 克服速度慢的缺点,又能克服搜
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1