一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法制造技术

技术编号:13903135 阅读:473 留言:0更新日期:2016-10-26 00:03
一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,包括一种基于多种优化方法的多线程并行搜索方法(简称搜索)和一种基于关键位置估值的局面评估方法(简称估值);其核心在于:在搜索方面,从策略101至策略105中依次加入历史启发,PVS极小窗搜索,Zobrist哈希和多线程优化方法提升Alphabeta搜索的搜索效率:即:结合了多种优化方法,尽可能地提升搜索深度,并使这些优化方法相互配合,达到效率上的大幅度提升;在估值方面,在不同阶段采用的不同估值;与此同时,作为先后手的不同角色角度也应该有不同的对应参数,用于进攻和防守等不同目的。总之,通过多方面考虑,使得估值更加精确,棋力也更加强大。

【技术实现步骤摘要】

本专利技术涉及一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,属于人工智能和机器博弈领域。
技术介绍
1997年5月11日,由IBM开发的电脑系统深蓝击败了国际象棋世界冠军卡斯巴罗夫。机器的胜利在引发一系列争议的同时,也标志着人工智能发展更进一步。从阿兰·图灵出版《计算机与智能》到第一台电脑控制的自动行走器“斯坦福车”诞生,再到互动机械宠物面世,人工智能一步步向人类智慧逼近。而被认为是人工智能领域最具挑战性的研究方向之一的计算机博弈经过前人的不断摸索,总结出一套过程建模、状态表示、着法生成、棋局评估、博弈树搜索、开局库与残局库开发、系统测试与参数优化等核心技术要点。苏拉卡塔棋是一种两人玩的吃子类游戏,源自印尼爪哇岛的苏拉卡尔塔(Surakarta)。棋盘:由6×6正方形网络与角落上的8个圆弧所组成,如图2所示。棋子:在游戏开始时,黑白方各12个棋子排成两行(图2)。棋规:1.参赛者掷硬币决定由谁先开始,每次只能移动一个棋子,两人轮流走棋;2.每个棋子可以向8个方向(上、下、左、右、左上、左下、右上、右下)移动一格(当所去的方向无棋子时);3.若要吃掉对方棋子,必须经过至少一个完整的弧线,并且移动路径中不可以有本方棋子阻挡;4.黑子可以吃掉白子,同样白子沿同一路径的相反方向也可以吃掉黑子;5.当一方棋子全部被吃掉时棋局结束,有剩余棋子方获胜;6.当双方都不能再吃掉对方棋子时,剩余棋子多的一方获胜。首先,针对苏拉卡尔塔棋的估值函数和搜索算法方面,经过资料检索,大致有如下几类:(a)北京信息科技大学学报,文章编号:1674-6864(2012)06-0042-04,题目为“苏拉卡尔塔博弈系统中的评估函数研究”文章中,提出的估值包含:棋盘位置价值,棋子移动范围,棋子攻击范围,棋子攻击力,盘面价值,占弧价值。该评估函数看似周全,但我们实验后发现以上几种元素并不能准确地描述棋局的优劣势,并且该棋先后手行棋思路并不完全一致,因此有着估值不准确,棋力不强的缺陷。(b)题目“PC游戏编程(人机博弈)”文章中,系统地提出了机器博弈中所要用到的搜索算法及优化方法,但是各种优化方法并没有结合起来去具体实现,对于多线程并行搜索方面也只是一带而过,没有具体地去讲解和实现,缺陷是未加入多线程并行搜索的搜索方法效率依然很低。此处引用用于便于读者领会本专利技术技术背景。上述两篇文章中,现有的估值方法并不精确,没有考虑先后手不同的下棋策略,也没有考虑关键棋盘位置的精准评估,因此局面估值不够准确,同时搜索算法也依然有优化的空间,所以AI搜索效率和棋力并不理想。本专利技术的目的是在于结合现有的搜索算法和优化方法,加入多线程技术进行并行搜索,同时多方面考虑先后手下棋策略和关键位置,改进现有的估值函数。使得AI棋力有所提升。本申请致力于克服上述方法无法解决的估值粗糙问题和搜索效率不高的问题,旨在提出一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法。
技术实现思路
本专利技术的目的是在于针对传统的估值方法估值粗糙,未考虑先后手不同的下棋策略和棋盘关键点位置的问题,以及在如今多核cpu盛行,搜索算法未加入多线程技术,以致搜索效率低下的问题,提出一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法。一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,包括一种基于多种优化方法的多线程并行搜索方法和一种基于关键位置估值的局面评估方法;其中,一种基于多种优化方法的多线程并行搜索方法,简称搜索;一种基于关键位置估值的局面评估方法,简称估值;一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,其核心在于:在搜索方面,从策略101至策略105中依次加入历史启发,PVS极小窗搜索,Zobrist哈希和多线程优化方法提升Alphabeta搜索的搜索效率:即:结合了多种优化方法,尽可能地提升搜索深度,并使这些优化方法相互配合,达到效率上的大幅度提升;在估值方面,随着敌我双方的互相吃子,总棋子数不断减少,每个棋子对应的各个价值权重和位置参数也在不断地动态改变,在不同阶段采用的不同估值方法;与此同时,作为先后手的不同角色角度也应该有不同的对应参数,用于进攻和防守等不同目的;总之,通过多方面的考虑应对不同的局面,使得我们的估值更加精确,棋力也更加强大。具体来说,所述的搜索包括如下几方面优化:1.Alphabeta搜索的优化:PVS极小窗搜索;2.以吃子招法为优先搜索的历史启发方法;3.Zobrist哈希技术;4.多线程技术实现并发搜索;5.估值的多方面深层次考虑;其中,5.中所述的估值的多方面深层次考虑,又包括以下几个方面:1)棋子价值;2)棋子位置价值;3)棋子的占弧价值;4)对轨道交点的深入估值;5)估值价值1-4的权值都随局面分为残局和非残局以及先手和后手两种方案;其中,所述的搜索,具体包括如下步骤和策略:步骤100:设定定时器限度为T分钟,并启动定时器开始计时;优选的定时器限度T范围为大于等于8分钟,小于等于15分钟;步骤101:运行基础AI算法,具体为:步骤1011以Alphabeta搜索方法进行搜索招法,直至搜索深度达到S层,其中,优选的搜索深度范围为6到10层;其中,搜索深度用S表示,其含义为招法路径能够搜索到S层;步骤1012根据步骤1011延某一个招法路径一直搜索到S层得到一个局面,以棋子数量和棋子位置为主对该局面进行估值,具体步骤为:步骤10131计算双方存活棋子数量差detaSum,乘以单个棋子价值V得到棋子存在价值extentVal,即根据公式(1)计算出extentVal:extentVal=detaSum*V; (1)其中,公式(1)中的棋子单个价值V的范围为80到200,优选的V值为100;步骤10132设定对应棋盘上各个位置的价值矩阵P,某一颗棋子的位置价值即其位置处对应的Pi,j值,以我方棋子所在位置价值总和减去对方棋子所在位置价值总和得到位置价值positionVal,优选的矩阵P如下:P=5,20,20,20,20,5,20,30,50,50,30,20,20,50,40,40,50,20,20,50,40,40,50,20,20,30,50,50,30,20,5,20,20,20,20,5;策略102:对策略101中的基础AI算法中引入历史启发搜索方法:即优先以吃子招法进行搜索;即:步骤1011中对每一层招法的顺序进行调整,将吃子的招法放在不吃子的招法之前优先搜索;所述的策略102,其搜索深度S在保证定时器限度T为15分钟时,取值最大能达到7层;策略103:在策略102基础上,引入Zobrist哈希技术,生成哈希表,即在基础AI的步骤10131中,首先差哈希表中该局面是否已经估值完成,如果估值完成则返回该局面的估值,不进行10131以及10132的操作,如果哈希表中估值没有完成,则正常进行10131和10132的估值操作,并将估值结果和对应的局面存入哈希表,得到策略103,此策略能够实现定时器限度T在设定的8到15分钟内,搜索深度S达到8层;策略104:在策略103基础上,将Alphabeta改进为PVS极小窗搜索,即在步骤1011中每次用Alphabeta递归搜索以极小窗(alpha,alpha+1)来搜索,如果搜索命中,则本文档来自技高网
...

【技术保护点】
一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,其特征在于:一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法包括一种基于多种优化方法的多线程并行搜索方法(简称搜索),和一种基于关键位置估值的局面评估方法(简称估值);一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,其核心在于:在搜索方面,从策略101至策略105中依次加入历史启发,PVS极小窗搜索,Zobrist哈希和多线程优化方法提升Alphabeta搜索的搜索效率:即:结合了多种优化方法,尽可能地提升搜索深度,并使这些优化方法相互配合,达到效率上的大幅度提升;在估值方面,随着敌我双方的互相吃子,总棋子数不断减少,每个棋子对应的各个价值权重和位置参数也在不断地动态改变,在不同阶段采用的不同估值方法;与此同时,作为先后手的不同角色角度也应该有不同的对应参数,用于进攻和防守等不同目的;总之,通过多方面的考虑应对不同的局面,使得我们的估值更加精确,棋力也更加强大。

【技术特征摘要】
1.一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,其特征在于:一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法包括一种基于多种优化方法的多线程并行搜索方法(简称搜索),和一种基于关键位置估值的局面评估方法(简称估值);一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,其核心在于:在搜索方面,从策略101至策略105中依次加入历史启发,PVS极小窗搜索,Zobrist哈希和多线程优化方法提升Alphabeta搜索的搜索效率:即:结合了多种优化方法,尽可能地提升搜索深度,并使这些优化方法相互配合,达到效率上的大幅度提升;在估值方面,随着敌我双方的互相吃子,总棋子数不断减少,每个棋子对应的各个价值权重和位置参数也在不断地动态改变,在不同阶段采用的不同估值方法;与此同时,作为先后手的不同角色角度也应该有不同的对应参数,用于进攻和防守等不同目的;总之,通过多方面的考虑应对不同的局面,使得我们的估值更加精确,棋力也更加强大。2.如权利要求1所述的一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,其特征还在于:所述的搜索包括如下几方面优化:1.Alphabeta搜索的优化:PVS极小窗搜索;2.以吃子招法为优先搜索的历史启发方法;3.Zobrist哈希技术;4.多线程技术实现并发搜索;5.估值的多方面深层次考虑;其中,5.中所述的估值的多方面深层次考虑,又包括以下几个方面:1)棋子价值;2)棋子位置价值;3)棋子的占弧价值;4)对轨道交点的深入估值;5)估值价值1-4的权值都随局面分为残局和非残局以及先手和后手两种方案。3.如权利要求1所述的一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,其特征还在于:所述的搜索,具体包括如下步骤和策略:步骤100:设定定时器限度为T分钟,并启动定时器开始计时;优选的定时器限度T范围为大于等于8分钟,小于等于15分钟;步骤101:运行基础AI算法,具体为:步骤1011以Alphabeta搜索方法进行搜索招法,直至搜索深度达到S层,其中,优选的搜索深度范围为6到10层;其中,搜索深度用S表示,其含义为招法路径能够搜索到S层;步骤1012根据步骤1011延某一个招法路径一直搜索到S层得到一个局面,以棋子数量和棋子位置为主对该局面进行估值,具体步骤为:步骤10131计算双方存活棋子数量差detaSum,乘以单个棋子价值V得到棋子存在价值extentVal;步骤10132设定对应棋盘上各个位置的价值矩阵P,某一颗棋子的位置价值即其位置处对应的Pi,j值,以我方棋子所在位置价值总和减去对方棋子所在位置价值总和得到位置价值positionVal;策略102:对策略101中的基础AI算法中引入历史启发搜索方法:即优先以吃子招法进行搜索;即:步骤1011中对每一层招法的顺序进行调整,将吃子的招法放在不吃子的招法之前优先搜索;策略103:在策略102基础上,引入Zobrist哈希技术,生成哈希表,即在基础AI的步骤10131中,首先差哈希表中该局面是否已经估值完成,如果估值完成则返回该局面的估值,不进行10131以及10132的操作,如果哈希表中估值没有完成,则正常进行10131和10132的估值操作,并将估值结果和对应的局面存入哈希表,得到策略103,此策略能够实现定时器限度T在设定的8到15分钟内,搜索深度S达到8层;策略104:在策略103基础上,将Alphabeta改进为PVS极小窗搜索;策略105:引入多线程技术,即将搜索方式改为并行搜索,并处理好与已使用的搜索策略的配合,加入互斥锁防止哈希表的读写冲突,当使用N条线程时,即在基础AI的步骤1011中进行Alphabeta搜索时,给每条线程分配一个子树进行搜索,搜索完当前子树后由主线程继续分配新的子树,每条线程的子树搜索过程中共用一个哈希表,能够实现搜索用时的最大M倍提升,即为策略105;所述的估值,具体包括如下步骤:步骤106对步骤1012的估值方法进行优化,并将此优化替换步骤1013的估值方法后,由于估值复杂度有所提升,在规定定时器T内搜索层数S回到了9层,但棋力比S为10层时还要强;至此,从步骤101、步骤106、再经策略102、策略103、策略104以及策略106共同构成了一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,能够达到在定时器限度T分钟内搜索深度S达到10层。4.如权利要求3所述的一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,其特征还在于:步骤10131中的棋子存在价值extentVal,具体根据公式(1)计算出extentVal:extentVal=detaSum*V; (1)其中,公式(1)中的棋子单个价值V的范围为80到200,优选的V值为100。5.如权利要求3所述的一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,其特征还在于:步骤10132中优选的矩阵P如下:P=5,20,20,20,20,5,20,30,50,50,30,20,20,50,40,40,50,20,20,50,40,40,50,20,20,30,50,50,30,20,5,20,20,20,20,5。6.如权利要求3所述的一种基于棋盘关键位置估值的苏拉卡尔塔棋的AI算法,其特征还在于:策略104在策略103基础上,将Alph...

【专利技术属性】
技术研发人员:赵崇赵峻瑶陈丽凤张秋鸿
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1