一种通用的计算机博弈问题策略搜索引擎类库制造技术

技术编号:17667544 阅读:40 留言:0更新日期:2018-04-11 05:50
本发明专利技术公开了一种通用的计算机博弈问题策略搜索引擎类库,包括:蒙特卡洛树搜索算法类包含哈希映射表数据结构,表级的线程互斥锁,蒙特卡洛随机模拟方法,策略选择方法,以及局面评估方法;特定局面的博弈树搜索状态类包括对应局面下蒙特卡洛模拟总数计数器,对应局面下行动方的蒙特卡洛模拟胜利总数计数器,结点级线程互斥锁类实例,蒙特卡洛模拟胜利与失败情况下的博弈树搜索状态更新方法;结点级的线程互斥锁类:包含线程安全的、可抢占原子变量,可配置互斥锁写行为原则的类构造方法,通过该类的成员方法,实现基于循环等待的读/写状态抢占机制。本发明专利技术在计算机博弈系统中,这种引擎具有广泛的适用性,高性能,提供了极大方便。

A general computer game problem strategy search engine class library

The invention discloses a general computer game strategy search engine library, including: Monte Carlo tree search algorithm class contains a hash map data structure, table level thread mutex, Monte Carlo method, strategy selection method, and situation assessment method; game tree search includes state specific situation corresponding situation of Monte Carlo the total number of Monte Carlo simulation counter, corresponding situation action simulation victory total counter, node level thread mutex class instance, Monte Carlo simulation game tree of success and failure in case of search state updating method; node level thread mutex class contains thread safe, can seize the atomic variable type construction method of configuration mutex write the principles of conduct, through the methods of the class members, to achieve circular wait read / write based on shape State preemption mechanism. In the computer game system, this kind of engine has extensive applicability, high performance and great convenience.

【技术实现步骤摘要】
一种通用的计算机博弈问题策略搜索引擎类库
本专利技术涉及计算机博弈
,具体是一种通用的计算机博弈问题策略搜索引擎类库。
技术介绍
计算机博弈作为人工智能的重要发展方向之一,是对人工智能广泛、深层逻辑决策能力的一大挑战。计算机博弈树搜索算法,以基于简单深度优先搜索的极大极小值搜索为起点,已经经过了长足的发展,诞生了影响深远、应用广泛的Alpha-Beta剪枝,其各种改进版本如SSS算法、PVS算法、MTD(f)算法,以及置换表、启发表、杀手表等辅助数据结构。但是随着对基于极大极小值搜索算法的改进日趋饱和,人们开始普遍地将目光移向博弈局面评估方法的设计上。而一个好的局面评估方法,势必涉及大量博弈局面评估经验,这提高了开发优秀计算机博弈树搜索引擎的技术门槛,削弱了这类传统算法的推广能力。蒙特卡洛树搜索算法的提出为通用的计算机博弈树搜索引擎带来了希望。这类随机算法通过大量随机模拟博弈,获得博弈树中各个状态结点的模拟胜率,即局面价值,同时利用UCB1、UCB1-TUNED等平衡策略,使随机模拟博弈过程中的策略选择兼顾横向探索倾向与纵向挖掘倾向,令博弈树的展开更高效、有针对性。蒙特卡洛树搜索算法具有两个值得注意的特性:由于该类算法使用随机模拟累计胜率来描述特定局面的优劣,不再依赖任何博弈规则以外的场景相关博弈知识或经验,具有极佳的泛用性;所有随机模拟过程之间很大程度上相互独立,有竞争资源,但没有同步需求,只要调度合理,完全有可能将算法并行化。事实上,在围棋计算机博弈系统,包括著名的围棋AIAlphaGo中,并行化的蒙特卡洛树搜索算法已经得到了广泛运用,其中“更新发生冲突则放弃更新”的“lockfree”改良机制更是十分具有启发性。
技术实现思路
本专利技术的目的在于提供一种通用的计算机博弈问题策略搜索引擎类库,以解决上述
技术介绍
中提出的问题。为实现上述目的,本专利技术提供如下技术方案:一种通用的计算机博弈问题策略搜索引擎类库,包括:1)蒙特卡洛树搜索算法类:包含以局面哈希值为键,以局面对应的博弈树结点的搜索状态类实例为值的哈希映射表数据结构,表级的线程互斥锁,蒙特卡洛随机模拟方法,策略选择方法,以及局面评估方法;2)特定局面的博弈树搜索状态类:包括对应局面下蒙特卡洛模拟总数计数器,对应局面下行动方的蒙特卡洛模拟胜利总数计数器,结点级线程互斥锁类实例,蒙特卡洛模拟胜利情况下的博弈树搜索状态更新方法,蒙特卡洛模拟失败情况下的博弈树搜索状态更新方法;3)结点级的线程互斥锁类:包含一个线程安全的、可抢占原子变量,一个可配置互斥锁写行为原则(阻塞/非阻塞)的类构造方法,通过该类的成员方法,实现基于循环等待的读/写状态抢占机制。作为本专利技术进一步的方案:蒙特卡洛随机模拟方法,以当前结点为任务起点,以模拟博弈结束为任务终点;查询搜索状态索引表,在特定结点预热模拟未完成时,即其所有分支的模拟访问总数均不小于设定阈值前,均匀地随机挑选下一个分支局面继续迭代模拟;查询搜索状态索引表,在特定结点预热模拟已完成,即其所有分支的模拟访问总数均不小于设定阈值,按照配置的平衡策略(UCB1/UCB1-TUNED)挑选下一个分支局面继续迭代模拟。作为本专利技术进一步的方案:策略选择方法,通过公式min{CPU逻辑核数,参数设定的线程数},确定启动蒙特卡洛模拟线程的实际数量;查询蒙特卡洛树搜索算法类实例中的博弈树搜索状态映射表,获取当前博弈局面的直接分支的模拟胜率;对局面归属与当前局面不一致的局面的胜率进行翻转,即用模拟总数减去胜利总数,作为新的胜利总数;选择胜率最高的分支作为最佳分支;获取使当前局面进入最佳分支的策略并返回之。作为本专利技术进一步的方案:局面评估方法,通过公式min{CPU逻辑核数,参数设定的线程数},确定启动蒙特卡洛模拟线程的实际数量;查询蒙特卡洛树搜索算法类实例中的博弈树搜索状态映射表,获取当前博弈局面的模拟胜率,作为当前博弈局面的局面评估值。作为本专利技术进一步的方案:蒙特卡洛树搜索算法类,该类的实现形式为泛型类;该类的编译过程依赖本类库用户程序对博弈局面状态维护类的实现;该类的编译过程依赖本类库用户程序对博弈局面可哈希的、可唯一标识局面状态的数据结构的选择;该类的编译过程依赖本类库用户程序对策略描述数据结构的实现;作为本专利技术进一步的方案:用户程序需要实现博弈局面状态维护类应包括:获取博弈局面哈希值的成员方法、获取当前博弈局面归属方的成员方法、获取当前博弈局面经过的累计回合数的成员方法、可选策略生成方法、返回博弈局面状态维护类实例拷贝的策略执行方法。表级的线程互斥锁,实质上为一个原子变量与配套的使用权抢占、释放方法。以局面哈希值为键,以局面对应的博弈树结点的搜索状态类实例为值的哈希映射表数据结构。该哈希映射表的条目存在性查询与条目添加过程将依靠表级线程互斥锁保障线程安全,即当前线程将循环等待并在抢占映射表使用权后执行条目存在性查询或条目添加,随后释放对映射表使用权的占用。用户程序需要选择博弈局面可哈希的、可唯一标识局面状态的数据结构类型,如所有基本数据类型和C++编程语言中的bitset数据结构;用户程序需要定义策略描述数据结构。蒙特卡洛模拟胜利情况下的博弈树搜索状态更新方法,即同时更新模拟总数计数器和胜利总数计数器;蒙特卡洛模拟失败情况下的博弈树搜索状态更新方法,即只更新模拟总数计数器。作为本专利技术进一步的方案:通过结点级线程互斥锁的成员方法实现的基于循环等待的读/写状态抢占机制,包括:①当结点级线程互斥锁处于空闲状态时,被写状态线程或读状态线程抢占;②读/写状态线程都首先使用一轮循环等待确认线程互斥锁为空闲状态;③读/写状态线程在确认互斥锁可用后立刻开始第二轮循环,尝试抢占互斥锁;④若抢占失败,返回②过程;⑤若读状态线程抢占互斥锁成功,将以互斥锁中的原子变量为读状态线程计数器,允许其他读状态线程共同占用互斥锁,不允许写状态线程占用互斥锁;⑥在所有读状态线程释放对互斥锁的占用后,互斥锁回归空闲状态,允许被读/写状态线程抢占,即回到①状态;⑦若写状态线程抢占互斥锁成功,将以互斥锁中的原子变量为独占标志,不允许任何其他读/写状态线程占用互斥锁,直至该线程释放对互斥锁的占用;⑧若结点级线程互斥锁在构造实例时配置成有退让的互斥锁,互斥锁占用状态下的状态结点更新请求将直接被无视;⑨若结点级线程互斥锁在构造实例时配置成阻塞的互斥锁,互斥锁占用状态下的状态结点更新请求将被阻塞直至互斥锁回到空闲状态。与现有技术相比,本专利技术的有益效果是:为了充分利用蒙特卡洛树搜索算法的泛用性与可并行化的特点,首先,本专利技术利用泛型编程技术实现了一个模板类,对蒙特卡洛树搜索算法进行封装,向所有计算机博弈系统提供调用接口;然后,本专利技术在搜索算法类的搜索状态索引表中添加表级线程互斥锁、结点级线程互斥锁,共两个粒度的线程互斥锁,并启动多个线程并行执行随机模拟过程,在线程间维护同一张搜索状态索引表。本专利技术在计算机博弈系统如棋牌游戏中,这种引擎具有广泛的适用性,优秀的通用类库提供了极大方便。该类库实现了经典的随机模拟算法——蒙特卡洛树搜索算法。该类库通过使用多线程技术,充分利用现代多核计算机的并行计算能力,具有高性能。该类库针对博弈搜索状态树设计了哈希映射表数据结构并创造性地设计本文档来自技高网
...
一种通用的计算机博弈问题策略搜索引擎类库

【技术保护点】
一种通用的计算机博弈问题策略搜索引擎类库,其特征在于,包括:1)蒙特卡洛树搜索算法类:包含以局面哈希值为键,以局面对应的博弈树结点的搜索状态类实例为值的哈希映射表数据结构,表级的线程互斥锁,蒙特卡洛随机模拟方法,策略选择方法,以及局面评估方法;2)特定局面的博弈树搜索状态类:包括对应局面下蒙特卡洛模拟总数计数器,对应局面下行动方的蒙特卡洛模拟胜利总数计数器,结点级线程互斥锁类实例,蒙特卡洛模拟胜利情况下的博弈树搜索状态更新方法,蒙特卡洛模拟失败情况下的博弈树搜索状态更新方法;3)结点级的线程互斥锁类:包含线程安全的、可抢占原子变量,可配置互斥锁写行为原则的类构造方法,通过该类的成员方法,实现基于循环等待的读/写状态抢占机制。

【技术特征摘要】
1.一种通用的计算机博弈问题策略搜索引擎类库,其特征在于,包括:1)蒙特卡洛树搜索算法类:包含以局面哈希值为键,以局面对应的博弈树结点的搜索状态类实例为值的哈希映射表数据结构,表级的线程互斥锁,蒙特卡洛随机模拟方法,策略选择方法,以及局面评估方法;2)特定局面的博弈树搜索状态类:包括对应局面下蒙特卡洛模拟总数计数器,对应局面下行动方的蒙特卡洛模拟胜利总数计数器,结点级线程互斥锁类实例,蒙特卡洛模拟胜利情况下的博弈树搜索状态更新方法,蒙特卡洛模拟失败情况下的博弈树搜索状态更新方法;3)结点级的线程互斥锁类:包含线程安全的、可抢占原子变量,可配置互斥锁写行为原则的类构造方法,通过该类的成员方法,实现基于循环等待的读/写状态抢占机制。2.根据权利要求1所述的通用的计算机博弈问题策略搜索引擎类库,其特征在于,蒙特卡洛随机模拟方法,以当前结点为任务起点,以模拟博弈结束为任务终点;查询搜索状态索引表,在特定结点预热模拟未完成时,即其所有分支的模拟访问总数均不小于设定阈值前,均匀地随机挑选下一个分支局面继续迭代模拟;查询搜索状态索引表,在特定结点预热模拟已完成,即其所有分支的模拟访问总数均不小于设定阈值,按照配置的平衡策略挑选下一个分支局面继续迭代模拟。3.根据权利要求1所述的通用的计算机博弈问题策略搜索引擎类库,其特征在于,策略选择方法,通过公式min{CPU逻辑核数,参数设定的线程数},确定启动蒙特卡洛模拟线程的实际数量;查询蒙特卡洛树搜索算法类实例中的博弈树搜索状态映射表,获取当前博弈局面的直接分支的模拟胜率;对局面归属与当前局面不一致的局面的胜率进行翻转,即用模拟总数减去胜利总数,作为新的胜利总数;选择胜率最高的分支作为最佳分支;获取使当前局面进入最佳分支的策略并返回之。4.根据权利要求1所述的通用的计算机博弈问题策略搜索引擎类库,其特征在于,局面评估方法,通过公式min{CPU逻辑核数,参数设定的线程数},确定启动蒙特卡洛模拟线程的实际数量;查询蒙特卡洛...

【专利技术属性】
技术研发人员:李淑琴张亦鹏丁濛孟坤李玉璋郑蓝舟
申请(专利权)人:北京信息科技大学微智娱北京科技有限公司
类型:发明
国别省市:北京,11

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

1