蒙特卡洛树搜索交替

时间:2017-09-27 10:06:18

标签: artificial-intelligence game-ai monte-carlo-tree-search

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

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

基本上我希望:

每个人:

选择节点Player1    展开Player1

选择节点Player2    扩展玩家2

推出    backpropogate

next iter

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

诀窍在于反向传播部分,在那里你更新"胜利"从球员移动到这个位置的角度来看是可变的。

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然而,不是。