我有一个MCTS的工作实现。为方便起见,我在Tic-Tac-Toe上测试它,但真正的目标游戏会更大。
据我所知,它可以产生正确的胜利计数,并以应有的方式探索树,并且主要产生良好的动作。但是,在某些情况下,所选择的行动会立即导致损失。同样,它可能不会选择导致强制获胜的举动。
我对胜利计数的分析是这些动作实际上是在随机游戏中移动将赢得比失败更多的动作,并且技术熟练的对手所扮演的线路没有给予足够的重量。
所以问题是如何(a)调整MCTS以支持短期胜利并避免短期损失,或者(b)在搜索中添加功能以检测强制线并确定优先级。
实际编写并完成MCTS的人可能最能回答这个问题。关于SO和SWE还有其他类似的问题,但没有有用的答案。
要明确的是,我的MCTS实施在大约500次迭代中实现了TTT交通灯变体的完美发挥,但是100-200次迭代有时会发挥非常糟糕的动作,缺少即时的赢或输。相比之下,minimax仅需要81次迭代以完全避免不良移动(2层),但显示729次迭代(3层)的一般弱游戏。任何有这些算法实现工作的人都会看到类似的结果。
MCTS收敛到良好的发挥,但我希望改进它在低迭代次数的猝死游戏中的表现。我发现交通灯是一个很好的试验台。