0

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

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

基本上我希望:

对于每个迭代:

选择节点 Player1 展开 Player1

选择节点 Player2 展开播放器 2

推出反向传播

下一次迭代

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

谢谢你的帮助。

4

1 回答 1

1

诀窍在于反向传播部分,您可以从移动导致该位置的玩家的角度更新“获胜”变量。

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

于 2017-09-28T17:30:47.260 回答