任何人都可以澄清一下(因为我在任何地方都没有找到任何明确的例子)MCTS算法为第二个玩家迭代。
我看起来的一切似乎都在玩,例如每次都在玩 P1 移动。我了解一个代理的步骤,但我从来没有找到任何显示 P2 放置计数器的代码的东西,这在生长树时肯定会发生。
基本上我希望:
对于每个迭代:
选择节点 Player1 展开 Player1
选择节点 Player2 展开播放器 2
推出反向传播
下一次迭代
这是正确的吗??有人可以拼出一些伪代码来显示吗?无论是迭代还是递归,我都不介意。
谢谢你的帮助。
任何人都可以澄清一下(因为我在任何地方都没有找到任何明确的例子)MCTS算法为第二个玩家迭代。
我看起来的一切似乎都在玩,例如每次都在玩 P1 移动。我了解一个代理的步骤,但我从来没有找到任何显示 P2 放置计数器的代码的东西,这在生长树时肯定会发生。
基本上我希望:
对于每个迭代:
选择节点 Player1 展开 Player1
选择节点 Player2 展开播放器 2
推出反向传播
下一次迭代
这是正确的吗??有人可以拼出一些伪代码来显示吗?无论是迭代还是递归,我都不介意。
谢谢你的帮助。
诀窍在于反向传播部分,您可以从移动导致该位置的玩家的角度更新“获胜”变量。
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然而,不是。