Artificial intelligence 蒙特卡罗树搜索

Artificial intelligence 蒙特卡罗树搜索,artificial-intelligence,game-ai,monte-carlo-tree-search,Artificial Intelligence,Game Ai,Monte Carlo Tree Search,有谁能澄清一下,我在第二个玩家的MCTS算法迭代的任何地方都没有找到任何清晰的例子 我所看到的每件事都像是在玩游戏。 我了解一个代理的步骤,但我从未发现任何显示P2放置计数器的代码的东西,这肯定是在树生长时发生的 基本上,我希望: 对于每个iter: 选择节点播放器1 展开Player1 选择节点播放器2 展开播放器2 卷展 反向传播 下一个iter 是这样吗??有人能拼出一些显示这一点的密码吗?无论是迭代还是递归,我都不介意 感谢您的帮助。技巧在反向传播部分,您可以从移动导致进入此位置的玩家的

有谁能澄清一下,我在第二个玩家的MCTS算法迭代的任何地方都没有找到任何清晰的例子

我所看到的每件事都像是在玩游戏。 我了解一个代理的步骤,但我从未发现任何显示P2放置计数器的代码的东西,这肯定是在树生长时发生的

基本上,我希望:

对于每个iter:

选择节点播放器1 展开Player1

选择节点播放器2 展开播放器2

卷展 反向传播

下一个iter

是这样吗??有人能拼出一些显示这一点的密码吗?无论是迭代还是递归,我都不介意


感谢您的帮助。

技巧在反向传播部分,您可以从移动导致进入此位置的玩家的角度更新wins变量

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变量总是更新的;然而,胜利并非如此。

谢谢您的回复。我将很快回顾代码。但是我仍然没有得到选择方面-我肯定必须在P1可用的移动之间交替,得到该节点,然后在玩家2中重复类似于minimax的所有操作??您的代码看起来非常具有描述性,谢谢。我认为我面临的困难是,在我的游戏中,每个玩家都有一套独特的可用招式,就像在国际象棋中一样,因此我无法保留,因为我看到了可用的剩余招式列表-它们与玩家位置相关,也像邻居一样,因此我必须在每次移动后重新生成它们。关于选择方面,每个节点都知道它的子节点从自己的角度保持赢/访问量,所以遵循相同的UCB公式是可以的。关于第二条注释,请注意每个节点都有一个与其关联的对应状态。您要求从该状态开始所有未尝试的移动,节点初始,所以未尝试的移动属性节点当然是相对于玩家位置的,每次移动后都会重新生成。我遇到的问题是,节点不知道哪些移动现在不可用-它会在彼此最后一次移动之前看到棋盘的图片,等等,这样玩家就可以移动到彼此的“顶部”,或者移动到其他无效区域。我真的无法在MCTS迭代循环中获得“每个州的玩家之间的轮换”,谢谢你的额外建议,我会考虑到这一点再看一看。我仍然不确定。我认为迭代必须是这样的:对于每个iter播放器1选择播放器1扩展播放器2选择播放器2扩展卷展栏反向传播下一个iter