首页 文章

蒙特卡洛树搜索交替

提问于
浏览
0

任何人都可以澄清一下(因为我没有在任何地方找到任何明确的例子)MCTS算法为第二个玩家迭代 .

我看起来似乎只是看起来像是在玩,例如P1每次移动 . 我理解一个代理的步骤,但我从来没有发现任何显示P2放置其计数器的代码,这在生长树时肯定会发生 .

基本上我会期望:

对于每个人:

select node Player1展开Player1

选择节点Player2展开播放器2

推出backpropogate

下一个

这是正确的吗??有人可以拼出一些伪造的代码吗?无论是迭代还是递归,我都不介意 .

谢谢你的帮助 .

1 回答

  • 1

    诀窍在于反向传播部分,你可以从那些移动到这个位置的玩家的角度更新“wins”变量 .

    Code for MCTS

    UCT功能下的注意事项,特别是注释:

    #Backpropagate
        while node != None: # backpropagate from the expanded node and work back to the root node
            node.Update(state.GetResult(node.playerJustMoved)) # state is terminal. Update node with result from POV of node.playerJustMoved
            node = node.parentNode
    

    如果你按照函数调用,你会意识到 visit 变量总是被更新; wins 但是,不是 .

相关问题