一种基于动态估值的跳棋方法及系统技术方案

技术编号:18712254 阅读:36 留言:0更新日期:2018-08-21 22:53
本发明专利技术公开了一种基于动态估值的跳棋方法及系统。该方法包括:获取当前棋局;计算所述当前棋局的估值;根据所述当前棋局,通过剪枝算法搜索,得到多个不同的下一步棋局;计算各所述下一步棋局的估值;根据所述当前棋局的估值以及各所述下一步棋局的估值,计算各所述下一步棋局的动态估值;根据各所述下一步棋局的动态估值确定最优棋局。本方法或系统使用动态估值的方法,根据棋局的状态不同,增量地进行估值计算,使得估值更精确,并且提高了计算效率。

A checker method and system based on dynamic estimation

The invention discloses a checker method and system based on dynamic estimation. The method includes: acquiring the current chess game; calculating the valuation of the current chess game; searching through the pruning algorithm according to the current chess game to obtain a number of different next chess games; calculating the valuation of each next chess game; calculating each chess game according to the valuation of the current chess game and the valuation of each next chess game. The dynamic valuation of the next chess game is described, and the optimal chess game is determined according to the dynamic valuation of the next chess game. This method or system uses the method of dynamic valuation, incrementally calculating the valuation according to the state of the chess game, which makes the valuation more accurate and improves the calculation efficiency.

【技术实现步骤摘要】
一种基于动态估值的跳棋方法及系统
本专利技术涉及计算机领域,特别是涉及一种基于动态估值的跳棋方法及系统。
技术介绍
现有的国际跳棋AI引擎,由于采用的是静态深度、静态估值,无法根据局面来动态调整深度和估值,容易引起时间开销大、估值不精确等问题。并且,现有国际跳棋AI引擎对搜索未做优化,对博弈树的搜索时间复杂度高。以多叉树为例,若无优化,每增加一层,时间开销指数型增长。由此带来的影响就是在一定时间内,搜索层数少,棋力弱。
技术实现思路
针对上述问题,本专利技术提供了一种基于动态估值的跳棋方法及系统。为实现上述目的,本专利技术提供了如下方案:一种基于动态估值的跳棋方法,所述方法包括:获取当前棋局;计算所述当前棋局的估值;根据所述当前棋局,通过剪枝算法搜索,得到多个不同的下一步棋局;计算各所述下一步棋局的估值;根据所述当前棋局的估值以及各所述下一步棋局的估值,计算各所述下一步棋局的动态估值;根据各所述下一步棋局的动态估值确定最优棋局。可选的,所述计算所述当前棋局的估值,具体包括:记录当前棋局的棋局信息,并将当前棋局信息保存到哈希表中;根据所述当前棋局信息计算当前棋局的估值。可选的,所述计算各所述下一步棋局的估值,具体包括:记录各所述下一步棋局的棋局信息;并将下一步棋局信息保存到哈希表中;根据所述下一步棋局信息计算下一步棋局的估值。可选的,所述根据各所述下一步棋局的动态估值确定最优棋局,具体包括:比较各所述下一步棋局的动态估值,得到最大动态估值;选择最大动态估值对应的下一步棋局为最优棋局。一种基于动态估值的跳棋系统,所述系统包括:获取模块,用于获取当前棋局;第一估值计算模块,用于计算所述当前棋局的估值;搜索模块,用于根据所述当前棋局,通过剪枝算法搜索,得到多个不同的下一步棋局;第二估值计算模块,用于计算各所述下一步棋局的估值;动态估值计算模块,用于根据所述当前棋局的估值以及各所述下一步棋局的估值,计算各所述下一步棋局的动态估值;确定模块,用于根据各所述下一步棋局的动态估值确定最优棋局。可选的,所述第一估值计算模块包括:第一记录单元,用于记录所述当前棋局的棋局信息,并将当前棋局信息保存到哈希表中;第一估值计算单元,用于根据所述当前棋局信息计算当前棋局的估值。可选的,所述第二估值计算模块包括:第二记录单元,用于记录各下一步棋局的棋局信息;并将下一步棋局信息保存到哈希表中;第二估值计算单元,用于根据所述下一步棋局信息计算下一步棋局的估值。可选的,所述确定模块包括:比较单元,用于比较各所述下一步棋局的动态估值,得到最大动态估值;选择单元,用于选择最大动态估值对应的下一步棋局为最优棋局。与现有技术相比,本专利技术具有以下技术效果:本专利技术根据所述当前棋局,通过剪枝算法搜索,得到多个不同的下一步棋局;然后根据所述当前棋局的估值以及各所述下一步棋局的估值,计算各所述下一步棋局的动态估值;然后根据各所述下一步棋局的动态估值确定最优棋局。本专利技术使用动态估值的方法,根据棋局的状态不同,增量地进行估值计算,使得估值更精确,并且提高了计算效率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例基于动态估值的跳棋方法的流程图;图2为本专利技术实施例基于动态估值的跳棋系统的结构框图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本专利技术作进一步详细的说明。图1为本专利技术实施例基于动态估值的跳棋方法的流程图。如图1所示,一种基于动态估值的跳棋方法包括以下步骤:步骤101:获取当前棋局。步骤102:计算所述当前棋局的估值。记录当前棋局的棋局信息,并将当前棋局信息保存到哈希表中;根据所述当前棋局信息计算当前棋局的估值。步骤103:根据所述当前棋局,通过剪枝算法搜索,得到多个不同的下一步棋局。步骤104:计算各所述下一步棋局的估值。记录各所述下一步棋局的棋局信息;并将下一步棋局信息保存到哈希表中;根据所述下一步棋局信息计算下一步棋局的估值。步骤105:根据所述当前棋局的估值以及各所述下一步棋局的估值,计算各所述下一步棋局的动态估值。步骤106:根据各所述下一步棋局的动态估值确定最优棋局。比较各所述下一步棋局的动态估值,得到最大动态估值;选择最大动态估值对应的下一步棋局为最优棋局。具体实施方案,当前棋局为x,当前状态的记录信息有:棋子数量因素s1,棋子自由度s2(即每个棋子在各个方向上没有被围堵的空位的数量),棋子控制力因素s3(即棋子围堵对面空位的数量),棋子受威胁程度s4(即棋子还有几步会被对面吃掉),棋子称王度s5(即棋子距对面底线的距离),棋局阵型布局s6(对于每个棋子,其后侧若有两颗己方棋子,则为100,若只有一颗己方棋子,则为50,若没有己方棋子,则为0)。即状态S以一个六元组表示:S=(s1,s2,s3,s4,s5,s6)。棋局x的估值为Sx(sx1,sx2,sx3,sx4,sx5,sx6)。将当前棋局信息保存到哈希表中。对棋类博弈来说,定义一个巨大的数组,将每一个局面计入其中,每一个局面在数组中对应唯一的位置。这样,将数据计入和取出就类似于随机读写,不会有耗时的查找和插入过程。但是,如果每一局面在数组中对应一个与其他局面不同的位置的话,则组合的结果是计算机内存远远不够。利用哈希表的话对要进行搜索的每一个节点,计算出它的哈希值以确定局面在哈希表中的位置,计算另一个哈希值来校验表中的数据项是否符合所要的那一项。Orbit哈希技术是为了解决搜索过程中出现重复棋局时会产生的重复搜索的问题。通过Alpha-beta搜索,得到多个下一步棋局a,b。棋局x的估值为Sx(sx1,sx2,sx3,sx4,sx5,sx6),棋局a的估值为Sa(sa1,sa2,sa3,sa4,sa5,sa6),棋局b的估值为Sib(sb1,sb2,sb3,sb4,sb5,sb6)。那么,棋局a的动态估值为其中,i=1,2,3,4,5,6,表示第i个状态。棋局b的动态估值为:比较棋局a,b的动态估值,得到最大动态估值;选择最大动态估值对应的下一步棋局为最优棋局。根据本专利技术提供的具体实施例,本专利技术公开了以下技术效果:本专利技术根据所述当前棋局,通过剪枝算法搜索,得到多个不同的下一步棋局;然后根据所述当前棋局的估值以及各所述下一步棋局的估值,计算各所述下一步棋局的动态估值;然后根据各所述下一步棋局的动态估值确定最优棋局。本专利技术使用动态估值的方法,根据棋局的状态不同,增量地进行估值计算,使得估值更精确,并且提高了计算效率。图2为本专利技术实施例基于动态估值的跳棋系统的结构框图。如图2所示,一种基于动态估值的跳棋系统包括:获取模块201,用于获取当前棋局;第一估值计算模块202,用于计算本文档来自技高网...

【技术保护点】
1.一种基于动态估值的跳棋方法,其特征在于,所述方法包括:获取当前棋局;计算所述当前棋局的估值;根据所述当前棋局,通过剪枝算法搜索,得到多个不同的下一步棋局;计算各所述下一步棋局的估值;根据所述当前棋局的估值以及各所述下一步棋局的估值,计算各所述下一步棋局的动态估值;根据各所述下一步棋局的动态估值确定最优棋局。

【技术特征摘要】
1.一种基于动态估值的跳棋方法,其特征在于,所述方法包括:获取当前棋局;计算所述当前棋局的估值;根据所述当前棋局,通过剪枝算法搜索,得到多个不同的下一步棋局;计算各所述下一步棋局的估值;根据所述当前棋局的估值以及各所述下一步棋局的估值,计算各所述下一步棋局的动态估值;根据各所述下一步棋局的动态估值确定最优棋局。2.根据权利要求1所述的方法,其特征在于,所述计算所述当前棋局的估值,具体包括:记录当前棋局的棋局信息,并将当前棋局信息保存到哈希表中;根据所述当前棋局信息计算当前棋局的估值。3.根据权利要求1所述的方法,其特征在于,所述计算各所述下一步棋局的估值,具体包括:记录各所述下一步棋局的棋局信息;并将下一步棋局信息保存到哈希表中;根据所述下一步棋局信息计算下一步棋局的估值。4.根据权利要求1所述的方法,其特征在于,所述根据各所述下一步棋局的动态估值确定最优棋局,具体包括:比较各所述下一步棋局的动态估值,得到最大动态估值;选择最大动态估值对应的下一步棋局为最优棋局。5.一种基于动态估值的跳棋系统,其特征在于,所述系统包括:获取模块,用于获...

【专利技术属性】
技术研发人员:周炽金张克明王梦圆
申请(专利权)人:北京理工大学
类型:发明
国别省市:北京,11

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

1