任何人都可以澄清一下(因为我没有在任何地方找到任何明确的例子)MCTS算法为第二个玩家进行迭代。
我看起来似乎只是看起来像是在玩,例如P1每次移动。 我理解一个代理的步骤,但我从来没有发现任何显示P2放置其计数器的代码,这在生长树时肯定会发生。
基本上我希望:
每个人:
选择节点Player1 展开Player1
选择节点Player2 扩展玩家2
推出 backpropogate
next iter
这是对的吗?有人可以拼出一些伪造的代码吗?无论是迭代还是递归,我都不介意。
感谢您的帮助。
答案 0 :(得分:1)
诀窍在于反向传播部分,在那里你更新"胜利"从球员移动到这个位置的角度来看是可变的。
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
然而,不是。