实施 Monte Carlo 树搜索 - 游戏状态节点与可能的移动节点

Implementing Monte Carlo Tree Search - Game State nodes vs. Possible Move nodes

我正在尝试在一个相当复杂的游戏上实现 Monte Carlo 搜索树方法,但有些事情我不明白(也许这适用于其他搜索算法,我不确定).对不起,如果我的英语不够清楚。

我的问题是:树节点代表什么 - 可能的游戏状态或玩家可以做出的可能动作?我会尝试解释为什么两者对我来说都没有意义。

如果节点是游戏状态,为什么选择可能导致最佳状态的着法有意义?很可能我的对手会选择不同的打法,导致我的比赛状态非常糟糕。

如果节点是可能的移动,同样的逻辑适用,只是向下一级 - 选择每个移动的最佳 child 没有意义,因为没有我的对手将参与的受让人一种让我下棋的方式。相反,更随机地查看 children 是有意义的,但这恰恰与该方法的工作方式相矛盾。

所以我想常见的实现是两者之间的某种混合?我做了一些研究,我知道有时搜索算法会使用具有简单策略的确定性对手,并将其用于搜索。这似乎对我不起作用,因为我正在实施的游戏没有直观的策略(这就是我选择 monte carlo 方法的原因——不需要评估函数)。感觉好像缺少了一些非常简单的东西。

我希望我的问题足够清楚,如果有任何帮助,我将不胜感激。

博弈树中的节点代表状态 - 边是从一种状态到另一种状态的移动。

在我熟悉的传统 MiniMax 游戏搜索中,从特定位置开始的最佳着法是拒绝对手在下一级别发挥最佳潜在着法的机会的着法,等等,直到搜索深度用尽。

例如,在两层搜索(一个完整的前瞻性移动)中,如果当初始玩家下棋 X1 时,玩家二有潜在的响应移动 Y1、Y2 和 Y3 以及各自的分数(从她的角度)为 1、2 和 3,那么从第一个玩家的角度来看,X1 的得分变为 -3。如果玩家 1 的 X2 移动返回得分,比如说,-4,那么 X1 是更好的初始移动(它拒绝了玩家 2 获得得分 4 的机会),但如果 X2 得出的得分是 -2,那么 X1 仍然存在树顶的最佳着法。

按照我的理解,Monte Carlo 树搜索意味着将检查的游戏节点数量限制为某个随机子集。使用 Monte Carlo,您不必一路走到终止节点(对于总是可以到达的游戏),尽管您可以,但如果需要,它也可以与评估函数一起使用.