java实现蒙特卡洛树搜索_java – 蒙特卡罗树搜索UCT实现

生成树的最佳方法是一系列随机播放.诀窍是能够平衡勘探和开发(这是UCT所在的地方).这里有一些很好的代码示例和大量的研究论文:

http://www.mcts.ai

当我实现该算法时,我使用随机播放,直到我达到终点或终止状态.我有一个静态评估功能,可以计算出这一点的收益,那么从这一点开始的分数就会传播回树上.每个球员或“球队”都假定另一队将为自己发挥最大的优势,而对手也是最糟糕的.

我也建议您查阅Chaslot的论文和他的博士论文以及参考他的作品的一些研究(基本上所有的MCTS都是从此开始的).

例如:玩家1的第一动作可以模拟未来10次移动到玩家1移动和玩家2移动之间.每次你必须假设对方的玩家会尽量减少你的分数,同时最大化自己的分数.有一个称为游戏理论的整个领域.一旦你模拟到10场比赛的最后,你再次从起点迭代(因为没有必要只是模拟一组决定).树的这些分支中的每一个必须得分,其中分数在树上传播,并且分数代表进行模拟的玩家的最佳可能的回报,假设另一个玩家也为自己选择最佳动作.

MCTS由四个战略步骤组成,只要剩下时间就重复.步骤如下.

>在选择步骤中,从树中遍历树

根节点,直到我们到达一个节点E,在那里我们选择一个未添加到树的位置.

>接下来,在播放步骤期间,自动播放动作直到游戏结束.对于Black(LOA中的第一名玩家)的胜利,在“模拟”游戏的结果R为1,在抽签的情况下为0,而对于White为胜,则为-1.

>随后,在扩展步骤中,E的孩子被添加到树中.

>最后,在反向传播步骤中,R沿着E的路径向后传播到根节点.当时间到了,程序发挥的动作是具有最高价值的根的孩子.

(本例摘自本文 – PDF

这里有一些实现:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值