兵棋博弈策略的生成方法、装置及存储介质与流程

文档序号:31899640发布日期:2022-10-22 03:35阅读:141来源:国知局
兵棋博弈策略的生成方法、装置及存储介质与流程

1.本公开的实施例涉及人工智能技术领域,具体地涉及一种兵棋博弈策略的生成方法、装置及存储介质。


背景技术:

2.计算机兵棋始于20世纪60年代,在20世纪80年代后期才随着计算机的普及被广泛应用。计算机兵棋的对抗推演是通过模拟多种作战装备、武器和作战场景,各方根据棋局态势不断地进行判断并做出决策,推进整个兵棋的走势,从而模拟出实际的作战流程及作战效果,其可用于兵棋博弈策略的生成,是研究战争和认识战争的有效工具。
3.现有技术中的计算机兵棋博弈策略的生成方法包括:对弈双方采用随机策略选择回合内执行的动作以生成兵棋博弈策略、对弈双方直接通过人工操纵以生成兵棋博弈策略等等。
4.但是,由于计算机兵棋推演的关键在于模拟“人”的行为,而现有技术中的随机策略虽然能够有效减少生成策略的时间消耗成本、保证生成过程的高效性,但最终生成得到的兵棋博弈策略缺乏智能性、不能很好地模拟反映“人”的行为特点。另外,对于对弈双方直接通过人工操纵生成兵棋博弈策略的方法,虽然能够较好地反映操纵者的思维模式及行为选择倾向、较好地体现兵棋博弈策略的智能性,但由人工操纵生成兵棋博弈策略不仅增加了人力成本和需要思考所耗费的时间成本,而且由同一人操纵会使智能性单一固化,无法保证智能性的多样化。


技术实现要素:

5.本公开的实施例的目的是提供一种兵棋博弈策略的生成方法、装置及存储介质,解决了现有技术中兵棋博弈策略缺乏智能性的问题,利用预设奖励函数以及蒙特卡洛树搜索生成智能化的兵棋博弈策略。
6.为了实现上述目的,本公开实施例的第一方面提供一种兵棋博弈策略的生成方法,包括:获取兵棋棋局中我方棋子与敌方棋子在每一个回合开始时刻的棋局态势;根据所述棋局态势以及预设奖励函数,在所述每一个回合重复执行预设搜索次数的蒙特卡洛树搜索,得到所述每一个回合的所述我方棋子的目标动作,并根据所述目标动作执行对弈操作;在所述兵棋棋局结束时,将所述每一个回合的所述我方棋子的目标动作、所述兵棋棋局结束时的棋局态势以及所述兵棋棋局的结果,记录为所述兵棋棋局的兵棋博弈策略。
7.在本公开的一些实施例中,在所述获取兵棋棋局中我方棋子与敌方棋子在每一个回合开始时刻的棋局态势之前,所述方法还包括:获取所述兵棋棋局中我方棋子与敌方棋子的基础属性、预设棋盘规则以及预设奖励函数,其中,所述预设奖励函数包括单次行动奖励函数、棋局结束奖励函数以及节点评估奖励函数,其中,所述单次行动奖励函数是用于计算一个回合内棋子行动的奖励值,所述单次行动奖励函数包括移动奖励函数和攻击奖励函数,所述棋局结束奖励函数是用于计算所述兵棋棋局结束后产生的奖励值,所述节点评估
奖励函数为在执行蒙特卡洛树搜索中选择节点的依据。
8.在本公开的一些实施例中,在一个回合内我方棋子移动的所述移动奖励函数通过下述方式获得:根据 ,得到所述移动奖励函数 , 表示所述我方棋子的移动速度,表示所述我方棋子的最大移动速度, 表示所述我方棋子在移动前与敌方棋子的最近距离, 表示所述我方棋子在移动后与所述敌方棋子的最近距离。
9.在本公开的一些实施例中,在一个回合内我方棋子攻击敌方棋子的所述攻击奖励函数通过下述方式获得:根据 ,得到所述攻击奖励函数 , 表示受本次攻击后敌方棋子的生命值减少量, 表示受本次攻击后生命值减少的所述敌方棋子的棋子价值, 表示在本次攻击中所述我方棋子的攻击力, 表示本次攻击后所述我方棋子的剩余攻击次数。
10.在本公开的一些实施例中,所述棋局结束奖励函数通过下述方式获得:根据下述公式得到所述棋局结束奖励函数
ꢀꢀ
:,其中, 表示所述兵棋棋局结束时我方获胜的获胜奖励值, 表示所述兵棋棋局结束时我方失败的失败奖励值, 表示所述兵棋棋局结束时平局奖励值,表示所述兵棋棋局结束时我方存活的棋子, 表示所述兵棋棋局结束时敌方存活的棋子, 表示棋子生命值, 表示棋子价值。
11.在本公开的一些实施例中,所述节点评估奖励函数通过下述方式获得:根据
ꢀꢀ
,得到所述节点评估奖励函数,其中, 表示当前节点的棋局奖励值,所述棋局奖励值为所述当前节点的所有单次行动奖励函数值之和与棋局结束奖励函数值的累加, 表示所述当前节点的总访问次数, 表示所述当前节点的父节点的总访问次数, 表示平衡棋局奖励和访问次数的常系数。
12.在本公开的一些实施例中,所述根据所述棋局态势以及预设奖励函数,在所述每一个回合重复执行预设搜索次数的蒙特卡洛树搜索,得到所述每一个回合的所述我方棋子的目标动作包括:步骤1:根据当前回合开始时刻的所述棋局态势初始化蒙特卡洛树的一个根节点;步骤2:执行所述蒙特卡洛树搜索,并根据所述节点评估奖励函数,选择所述节点评估奖励函数值最大的叶节点;步骤3:判断所述叶节点是否为终止节点,若不是终止节点,执行步骤4,若是终止节点,则执行步骤5;
步骤4:根据所述我方棋子与敌方棋子的基础属性以及预设棋盘规则,创建所述叶节点的一个或多个子节点,并从所述一个或多个子节点中随机选择一个子节点作为模拟起始节点,从所述模拟起始节点开始,按照随机走子策略模拟所述兵棋棋局至棋局结束,并执行步骤5;步骤5:获取所述节点以及其所有祖先节点的单次行动奖励函数值和棋局结束奖励函数值,并执行步骤6;步骤6:将所述步骤5中获得的所述单次行动奖励函数值和棋局结束奖励函数值反向传播,回溯更新所述节点以及其所有祖先节点的节点评估奖励函数值,且搜索次数自增;步骤7:判断当前搜索次数是否达到所述预设搜索次数,若未达到,则返回步骤2,否则执行步骤8;步骤8:停止所述蒙特卡洛树搜索,从所述蒙特卡洛树的第二层节点中选择节点评估奖励函数值最大的一个节点,将该节点对应的动作作为所述目标动作。
13.在本公开的一些实施例中,在所述将所述每一个回合的所述我方棋子的目标动作、所述兵棋棋局结束时的棋局态势以及所述兵棋棋局的结果,记录为所述兵棋棋局的兵棋博弈策略之后,所述方法还包括:记录多个兵棋棋局的兵棋博弈策略,并将多个兵棋博弈策略作为兵棋博弈策略数据样本,以便利用所述兵棋博弈策略数据样本训练兵棋博弈策略模型。
14.本公开实施例的第二方面提供一种兵棋博弈策略的生成装置,包括:获取模块,用于获取兵棋棋局中我方棋子与敌方棋子在每一个回合开始时刻的棋局态势;目标动作确定模块,用于根据所述棋局态势以及预设奖励函数,在所述每一个回合重复执行预设搜索次数的蒙特卡洛树搜索,得到所述每一个回合的所述我方棋子的目标动作,并根据所述目标动作执行对弈操作;策略生成模块,用于在所述兵棋棋局结束时,将所述每一个回合的所述我方棋子的目标动作、所述兵棋棋局结束时的棋局态势以及所述兵棋棋局的结果,记录为所述兵棋棋局的兵棋博弈策略。
15.本公开实施例的第三方面提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行如上所述的兵棋博弈策略的生成方法。
16.通过上述技术方案,利用蒙特卡洛树搜索方法进行大样本的推演,进行成百上千次模拟,就能囊括可能存在的大部分情况,进行有意义的概率分析,最终生成更富有智能性的兵棋博弈策略。
17.本公开的实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
18.附图是用来提供对本公开的实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开的实施例,但并不构成对本公开的实施例的限制。在附图中:图1是根据本公开实施例提供的一种兵棋博弈策略的生成方法的流程示意图;图2是根据本公开的实施例提供的蒙特卡洛树搜索的过程流程示意图;图3是根据本公开实施例提供的一种兵棋博弈策略的生成装置的结构示意图。
具体实施方式
19.为了使本公开的实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本公开的实施例的技术方案进行清楚、完整的描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域技术人员在无需创造性劳动的前提下所获得的所有其它实施例,也都属于本公开保护的范围。
20.除非另外定义,否则在此使用的所有术语(包括技术和科学术语)具有与本公开主题所属领域的技术人员所通常理解的相同含义。进一步将理解的是,诸如在通常使用的词典中定义的那些的术语应解释为具有与说明书上下文和相关技术中它们的含义一致的含义,并且将不以理想化或过于正式的形式来解释,除非在此另外明确定义。
21.图1是根据本公开实施例提供的一种兵棋博弈策略的生成方法的流程示意图。如图1所示,所述方法包括如下步骤:步骤101,获取兵棋棋局中我方棋子与敌方棋子在每一个回合开始时刻的棋局态势;步骤102,根据所述棋局态势以及预设奖励函数,在所述每一个回合重复执行预设搜索次数的蒙特卡洛树搜索,得到所述每一个回合的所述我方棋子的目标动作,并根据所述目标动作执行对弈操作;步骤103,在所述兵棋棋局结束时,将所述每一个回合的所述我方棋子的目标动作、所述兵棋棋局结束时的棋局态势以及所述兵棋棋局的结果,记录为所述兵棋棋局的兵棋博弈策略。
22.其中,在兵棋棋局开始之前,需要先获取所述兵棋棋局中我方棋子与敌方棋子的基础属性、预设棋盘规则以及预设奖励函数。所述基础属性和预设棋盘规则可通过人机交互,由用户输入至计算机中,或者预先存储在计算机设备中,在兵棋棋局开始之前直接调用预存的所述基础属性和预设棋盘规则。
23.其中,棋子指代的是对弈双方操纵的作战平台,它们可以在棋盘上进行自身约束条件(例如,棋子的移动速度、可移动方向、剩余攻击次数)允许内的移动和攻击行为。棋盘指代的是双方棋子移动的地图,具体信息包含地图大小、形状、障碍物等。棋局指代的是兵棋博弈过程。
24.其中,棋子的基础属性包括棋子编号、棋子类型、棋子阵营、棋子速度区间、棋子可移动方向、棋子位置、棋子生命值、棋子价值、棋子攻击力、棋子剩余攻击次数、棋子攻击范围圆半径、棋子攻击目标类型集等,具体内容如下表1所示:表1
另外,对于预设棋盘规则可根据用户需求进行设置,例如,在本公开实施例中设定的棋盘大小为300*300的方形网格地图,所述预设棋盘规则如下所示:(1)兵棋棋局开始前,由对弈双方部署棋子的初始位置;(2)对弈双方轮流对棋子进行操作;(3)每一个回合内对弈双方均只能对一个棋子进行操作;(4)棋子只能进行移动操作或攻击操作;(5)不允许同时进行移动和攻击操作;(6)不允许在单个回合内不对棋子进行操作;(7)移动操作由棋子的速度区间与可移动方向共同约束;(8)移动操作中,棋子落点不得存在其他棋子;(9)攻击操作由棋子的剩余攻击次数约束,若剩余攻击次数为0,则无法执行攻击操作;(10)攻击操作的攻击目标为攻击范围内最近的,且属于棋子攻击目标类型集中的敌方棋子,敌方棋子生命值减少量等同于我方棋子的攻击力;(11)若攻击范围内无棋子攻击目标类型集中的敌方棋子,本次攻击视为未命中,敌方棋子生命值不变,我方操作棋子的剩余攻击次数仍减少一次;(12)当一方所有棋子的生命值均降至0以下(包括0)时,游戏结束(存在胜负关系);(13)当游戏回合数超过300回合时,游戏结束(视为流局)。
25.其中,所述预设奖励函数是根据棋子的基础属性和预设棋盘规则生成的。所述预设奖励函数包括单次行动奖励函数、棋局结束奖励函数以及节点评估奖励函数。
26.其中,所述单次行动奖励函数是用于计算一个回合内棋子行动的奖励值,所述单次行动奖励函数包括移动奖励函数和攻击奖励函数。其中,移动奖励函数是用于计算棋子进行位置移动所获得的奖励,攻击奖励函数是用于计算棋子进行攻击动作所获得的奖励。
其中,可根据我方棋子移动的效率高低、我方棋子是否逼近敌方棋子等多重影响因素,生成移动奖励函数。另外,可根据攻击是否命中、命中时敌方棋子的价值高低等多重影响因素,生成攻击奖励函数。
[0027] 在本公开实施例中,可采用如下公式(1),得到在一个回合内我方棋子移动的所述移动奖励函数 :
ꢀꢀꢀꢀꢀꢀꢀꢀ
公式(1)其中, 表示所述我方棋子的移动速度, 表示所述我方棋子的最大移动速度, 表示所述我方棋子在移动前与敌方棋子的最近距离, 表示所述我方棋子在移动后与所述敌方棋子的最近距离。
[0028]
在本公开实施例中,可采用如下公式(2),得到在一个回合内我方棋子攻击敌方棋子的所述攻击奖励函数
ꢀꢀ

ꢀꢀꢀꢀꢀꢀꢀꢀ
公式(2)其中, 表示受本次攻击后敌方棋子的生命值减少量, 表示受本次攻击后生命值减少的所述敌方棋子的棋子价值, 表示在本次攻击中所述我方棋子的攻击力, 表示本次攻击后所述我方棋子的剩余攻击次数。
[0029]
对于棋局结束奖励函数是用于计算所述兵棋棋局结束后产生的奖励值,一般棋局结束奖励则分为获胜奖励、失败奖励、流局奖励。其中,获胜奖励是指我方棋子获胜所获得的奖励,奖励值一般为正值;失败奖励是指我方棋子失败所获得的奖励,奖励值一般为负值;流局奖励是指平局或棋局回合数超过上限(例如,棋局最大回合数)导致的棋局结束,奖励值可以为0,也可以根据结束时刻敌我战损比进行计算。棋局结束奖励函数可根据棋局结束时对弈双方剩余棋子的生命值、价值等多重影响因素,设计获胜奖励函数值、失败奖励函数值、流局奖励函数值。
[0030]
在本公开实施例中,可采用如下公式(3),得到所述棋局结束奖励函数 :公式(3)其中, 表示所述兵棋棋局结束时我方获胜的获胜奖励值, 表示所述兵棋棋局结束时我方失败的失败奖励值, 表示所述兵棋棋局结束时平局奖励值,表示所述兵棋棋局结束时我方存活的棋子, 表示所述兵棋棋局结束时敌方存活的棋子, 表示棋子生命值, 表示棋子价值。
[0031]
其中,所述节点评估奖励函数为在执行蒙特卡洛树搜索中选择节点的依据。蒙特卡洛树搜索时的节点评估奖励函数需要平衡节点的访问次数以及节点的棋局奖励,来保障最大胜率和新节点探索上的平衡,对已知收益的利用和鼓励接触那些相对未曾访问的节点的探索进行平衡。在本公开实施例中,可采用如下公式(4),得到所述节点评估奖励函数 :
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
公式(4)其中, 表示当前节点的棋局奖励值,所述棋局奖励值为所述当前节点的所有单次行动奖励函数值之和与棋局结束奖励函数值的累加, 表示所述当前节点的总访问次数, 表示所述当前节点的父节点的总访问次数, 表示平衡棋局奖励和访问次数的常系数。
[0032]
在执行蒙特卡洛树搜索中,对于每个节点(除根节点以外)都需要计算节点评估奖励函数值,其中,父节点的访问次数等于其子节点的访问次数之和。对于常系数可根据用户需求进行调整,以便平衡节点的访问次数以及节点的棋局奖励。
[0033]
在步骤101中,所述棋局态势包括向量形式的棋子信息以及矩阵形式的棋盘信息。其中,棋子信息包括我方棋子与敌方棋子的基础属性的参数。棋盘信息包括作战区域(例如,当前回合攻击或被命中的棋子位置)、敌我棋子分布情况、我方棋子的可移动区域。
[0034]
在步骤102中,根据所述棋局态势以及预设奖励函数,在所述每一个回合重复执行预设搜索次数的蒙特卡洛树搜索,得到所述每一个回合的所述我方棋子的目标动作,也就是说,在每一个回合均要执行预设搜索次数的蒙特卡洛树搜索,从而得到当前回合的最优动作作为我方棋子的目标动作,并执行对弈操作。在本公开实施例中,每一个回合中敌方棋子的走子策略为随机走子策略,即从其动作空间中随机选择一个动作加以执行。
[0035]
其中,蒙特卡洛树搜索的过程包括:选择、扩展、模拟、反向传播。
[0036]
具体的,选择是指以当前回合开始时刻的棋局态势作为根节点构建蒙特卡洛树,递归选择最优的子节点直到达到一个叶节点,节点选择的依据为蒙特卡洛树搜索时的节点评估奖励函数值。
[0037]
扩展是指如果当前选择的叶节点不是一个终止节点,即不会导致整盘棋局终止,那么就创建一个或者更多的子节点,也就是我方棋子接下来更多的走法,并从这些新创建的节点中选择一个节点。
[0038]
模拟是指从选择的节点开始模拟棋局对弈的进行过程,直至整个棋局结束。另外,为了提高模拟运行的速度,在本公开实施例中模拟过程中的对弈策略采用随机走子策略。
[0039]
反向传播是指计算该节点的单次行动奖励函数值和棋局结束奖励函数值,并根据上述函数值回溯更新整棵蒙特卡洛树结构中的该节点及其所有祖先节点的节点评估奖励函数值。
[0040]
具体的,如图2所示,每一个回合重复执行预设搜索次数的蒙特卡洛树搜索的过程包括如下步骤:步骤1:根据当前回合开始时刻的所述棋局态势初始化蒙特卡洛树的一个根节点。
[0041]
其中,之后的搜索过程可以视作该根节点生长为一整棵蒙特卡洛树的过程。如果当前回合是棋局最开始,即当前回合为第一回合,则当前回合开始时刻的棋局态势就是初始棋盘的态势。如果当前回合不是棋局最开始,即当前回合为第二回合及之后的各个回合,那么棋子的位置、生命值和其他信息可能会有变化,那么当前回合开始时刻的棋局态势为经过之前所有回合动作改变后的棋局态势。
[0042]
步骤2:执行所述蒙特卡洛树搜索,并根据所述节点评估奖励函数,选择所述节点评估奖励函数值最大的叶节点。
[0043]
其中,在选择所述节点评估奖励函数值最大的叶节点时,若是选择的节点不是叶节点,从当前选择节点的所有子节点中,选择节点评估奖励函数值最大的子节点,直到选择的节点为叶节点,若是叶节点则直接执行步骤3。步骤2的目的是为了找到一个叶节点,也就是说要搜索到这棵树的底层,而不会停留在树的中间部分。
[0044]
步骤3:判断所述叶节点是否为终止节点(即会导致整盘棋局终止的节点),若不是终止节点,执行步骤4,若是终止节点,则执行步骤5。
[0045]
步骤4:根据所述我方棋子与敌方棋子的基础属性以及预设棋盘规则,创建所述叶节点的一个或多个子节点,并从所述一个或多个子节点中随机选择一个子节点作为模拟起始节点,从所述模拟起始节点开始,按照随机走子策略模拟所述兵棋棋局至棋局结束,并执行步骤5。
[0046]
其中,由于节点在刚创建出来的时候,节点评估奖励函数值是相同的,因此,可以从根据所述我方棋子与敌方棋子的基础属性以及预设棋盘规则,新创建的节点中随机选择一个节点。
[0047]
步骤5:获取所述节点以及其所有祖先节点的单次行动奖励函数值和棋局结束奖励函数值,并执行步骤6。
[0048]
另外,当步骤3中判断所述叶节点是终止节点时,则直接执行步骤5,将该叶节点作为模拟起始节点,从所述模拟起始节点开始,按照随机走子策略模拟所述兵棋棋局至棋局结束,并获取该节点以及其所有祖先节点的单次行动奖励函数值和棋局结束奖励函数值。若是所述叶节点不是终止节点,则需要执行步骤4,之后再执行步骤5。
[0049]
步骤6:将所述步骤5中获得的所述单次行动奖励函数值和棋局结束奖励函数值反向传播,回溯更新所述节点以及其所有祖先节点的节点评估奖励函数值,且搜索次数自增。
[0050]
步骤7:判断当前搜索次数是否达到所述预设搜索次数,若未达到,则返回步骤2,否则执行步骤8。
[0051]
步骤8:停止所述蒙特卡洛树搜索,从所述蒙特卡洛树的第二层节点中选择节点评估奖励函数值最大的一个节点,将该节点对应的动作作为所述目标动作。
[0052]
其中,所述蒙特卡洛树中的每一个节点代表着选择一个动作后相应发生改变的棋局态势,也就是说,每一个节点代表着一个动作。选择节点相当于对不同分支进行探索,看哪个动作(节点/分支)能够得到的节点评估奖励函数值最大。
[0053]
在执行到步骤10的时候,蒙特卡洛树搜索过程结束,需要根据节点评估奖励函数值做出最终选择了。即,在蒙特卡洛树生长到一定程度后,也就是达到预设搜索次数后,从第二层节点中选择节点评估奖励函数值最大的一个节点,这个节点所代表的动作即为当前回合的最优动作,也就是目标动作。
[0054]
在得到每一个回合的目标动作之后,直至所述兵棋棋局结束时,也就得到了该棋局的兵棋博弈策略,其中,所述兵棋博弈策略包括所述每一个回合的所述我方棋子的目标动作、所述兵棋棋局结束时的棋局态势以及所述兵棋棋局的结果。另外,记录最终生成的兵棋博弈策略以供复盘。
[0055]
另外,在本公开实施例的一种实施方式中,在将所述每一个回合的所述我方棋子的目标动作、所述兵棋棋局结束时的棋局态势以及所述兵棋棋局的结果,记录为所述兵棋棋局的兵棋博弈策略之后,可记录多个兵棋棋局的兵棋博弈策略,并将多个兵棋博弈策略
作为兵棋博弈策略数据样本,以便利用所述兵棋博弈策略数据样本训练兵棋博弈策略模型。也就是说,通过本公开实施例可获取到大量拥有一定智能性的兵棋博弈策略数据样本,以满足当前兵棋推演系统对智能性策略样本的需求。
[0056]
通过本公开实施例,解决了现有技术中兵棋博弈策略缺乏智能性的问题,本公开实施例提出了一种基于蒙特卡洛树搜索的兵棋博弈策略的生成方法。通过蒙特卡洛树搜索,不需要人为操纵博弈方的棋子,而是自主去模拟可能会发生的情况并从中选择获益最大的动作以执行。单一的模拟难以囊括各种可能性,但是通过蒙特卡洛树搜索方法进行大样本的推演,进行成百上千次模拟,就能囊括可能存在的大部分情况,进行有意义的概率分析,最终生成更富有智能性的兵棋博弈策略。
[0057]
图3是根据本公开实施例提供的一种兵棋博弈策略的生成装置的结构示意图。如图3所示,所述装置30包括:获取模块31、目标动作确定模块32和策略生成模块33。
[0058]
其中,获取模块31,用于获取兵棋棋局中我方棋子与敌方棋子在每一个回合开始时刻的棋局态势;目标动作确定模块32,用于根据所述棋局态势以及预设奖励函数,在所述每一个回合重复执行预设搜索次数的蒙特卡洛树搜索,得到所述每一个回合的所述我方棋子的目标动作,并根据所述目标动作执行对弈操作;策略生成模块33,用于在所述兵棋棋局结束时,将所述每一个回合的所述我方棋子的目标动作、所述兵棋棋局结束时的棋局态势以及所述兵棋棋局的结果,记录为所述兵棋棋局的兵棋博弈策略。
[0059]
进一步地,所述获取模块31还用于获取所述兵棋棋局中我方棋子与敌方棋子的基础属性、预设棋盘规则以及预设奖励函数,其中,所述预设奖励函数包括单次行动奖励函数、棋局结束奖励函数以及节点评估奖励函数,其中,所述单次行动奖励函数是用于计算一个回合内棋子行动的奖励值,所述单次行动奖励函数包括移动奖励函数和攻击奖励函数,所述棋局结束奖励函数是用于计算所述兵棋棋局结束后产生的奖励值,所述节点评估奖励函数为在执行蒙特卡洛树搜索中选择节点的依据。
[0060]
进一步地,在一个回合内我方棋子移动的所述移动奖励函数通过下述方式获得:根据,得到所述移动奖励函数, 表示所述我方棋子的移动速度, 表示所述我方棋子的最大移动速度, 表示所述我方棋子在移动前与敌方棋子的最近距离, 表示所述我方棋子在移动后与所述敌方棋子的最近距离。
[0061]
进一步地,在一个回合内我方棋子攻击敌方棋子的所述攻击奖励函数通过下述方式获得:根据 ,得到所述攻击奖励函数 , 表示受本次攻击后敌方棋子的生命值减少量, 表示受本次攻击后生命值减少的所述敌方棋子的棋子价值, 表示在本次攻击中所述我方棋子的攻击力, 表示本次攻击后所述我方棋子的剩余攻击次数。
[0062]
进一步地,所述棋局结束奖励函数通过下述方式获得:根据下述公式得到所述棋局结束奖励函数 :
,其中, 表示所述兵棋棋局结束时我方获胜的获胜奖励值, 表示所述兵棋棋局结束时我方失败的失败奖励值, 表示所述兵棋棋局结束时平局奖励值,表示所述兵棋棋局结束时我方存活的棋子, 表示所述兵棋棋局结束时敌方存活的棋子, 表示棋子生命值, 表示棋子价值。
[0063]
进一步地,所述节点评估奖励函数通过下述方式获得:根据 ,得到所述节点评估奖励函数 ,其中, 表示当前节点的棋局奖励值,所述棋局奖励值为所述当前节点的所有单次行动奖励函数值之和与棋局结束奖励函数值的累加, 表示所述当前节点的总访问次数, 表示所述当前节点的父节点的总访问次数, 表示平衡棋局奖励和访问次数的常系数。
[0064]
进一步地,所述目标动作确定模块32具体用于执行如下步骤:步骤1:根据当前回合开始时刻的所述棋局态势初始化蒙特卡洛树的一个根节点;步骤2:执行所述蒙特卡洛树搜索,并根据所述节点评估奖励函数,选择所述节点评估奖励函数值最大的叶节点;步骤3:判断所述叶节点是否为终止节点,若不是终止节点,执行步骤4,若是终止节点,则执行步骤5;步骤4:根据所述我方棋子与敌方棋子的基础属性以及预设棋盘规则,创建所述叶节点的一个或多个子节点,并从所述一个或多个子节点中随机选择一个子节点作为模拟起始节点,从所述模拟起始节点开始,按照随机走子策略模拟所述兵棋棋局至棋局结束,并执行步骤5;步骤5:获取所述节点以及其所有祖先节点的单次行动奖励函数值和棋局结束奖励函数值,并执行步骤6;步骤6:将所述步骤5中获得的所述单次行动奖励函数值和棋局结束奖励函数值反向传播,回溯更新所述节点以及其所有祖先节点的节点评估奖励函数值,且搜索次数自增;步骤7:判断当前搜索次数是否达到所述预设搜索次数,若未达到,则返回步骤2,否则执行步骤8;步骤8:停止所述蒙特卡洛树搜索,从所述蒙特卡洛树的第二层节点中选择节点评估奖励函数值最大的一个节点,将该节点对应的动作作为所述目标动作。
[0065]
进一步地,所述装置30还包括样本记录模块34,用于记录多个兵棋棋局的兵棋博弈策略,并将多个兵棋博弈策略作为兵棋博弈策略数据样本,以便利用所述兵棋博弈策略数据样本训练兵棋博弈策略模型。
[0066]
本公开实施例提供的兵棋博弈策略的生成装置的具体工作原理及益处与本公开实施例提供的兵棋博弈策略的生成方法的具体工作原理及益处相似,这里将不再赘述。
[0067]
此外,本公开实施例的另一方面还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行上述实施例所述的兵棋博弈策略的生成方
法。
[0068]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0069]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0070]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0071]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0072]
在一个典型的配置中,计算设备包括一个或多个处理器 (cpu)、输入/输出接口、网络接口和内存。
[0073]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
[0074]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (pram)、静态随机存取存储器 (sram)、动态随机存取存储器 (dram)、其他类型的随机存取存储器 (ram)、只读存储器 (rom)、电可擦除可编程只读存储器 (eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器 (cd-rom)、数字多功能光盘 (dvd) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
[0075]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0076]
以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1