2

在 Wikipedia 中描述的 mcts 算法中,它在每个节点选择中只执行一次播放(模拟)。现在,我正在一个简单的 connect-k 游戏中试验这个算法。我想知道,在实践中,我们是否会进行更多的播放以减少差异?

我用一个随机播放(无偏见)尝试了原始算法。与我使用 alpha-beta 修剪的启发式搜索相比,结果很糟糕。它收敛得非常缓慢。相反,当我执行 500 次播放时,噪音要小得多。但是,每个节点模拟对于算法来说太慢了,无法在给定时间内探索树的其他部分,因此有时会错过最关键的移动。

然后我将 AMAF(尤其是 RAVE 转换)启发式添加到基本 MCTS。我没有注意到 500 场比赛有太大差异,也许是因为差异已经很低。我还没有分析 1 场比赛的结果。

谁能给我任何见解?

4

1 回答 1

3

通常,您会在每个选择步骤中只进行一次播放。但是,后续的选择步骤可以多次通过同一个节点。

例如,考虑在根节点中只有两个可用移动的情况。如果然后运行 ​​10,000 次完整的 MCTS 迭代(其中一次迭代 = 选择 + 扩展 + 播放 + 反向传播),根节点下方的两个节点中的每一个将被选中大约 5,000 次(或者可能一个被选中9,000 次和其他 1,000 次,如果第一个显然是比 seocnd 更好的选择,但仍然不止一次被选中)。

这是否与您当前在实施中所做的相匹配?如果没有,请尝试提供一些您当前拥有的代码,以便我们可以看到哪里出错了。但是,如果这是您实现它的方式(应该是这样),那么每个选择步骤只进行一次播放应该没有问题

于 2017-01-31T18:02:18.267 回答