在Wikipedia中描述的mcts算法中,它在每个节点选择中只执行一个播放(模拟)。现在,我在一个简单的connect-k游戏中试验这个算法。我想知道,在实践中,我们是否会执行更多的播放来减少差异?
我尝试了最初的算法,只有一个随机播放(无偏)。与我使用alpha-beta剪枝的启发式搜索相比,结果很糟糕。它的收敛速度非常慢。当我改为执行500次播放时,噪音要小得多。然而,每个节点的模拟速度太慢,算法无法在给定的时间内探索树的其他部分,因此有时会错过最关键的移动。
然后,我将AMAF (特别是RAVE转换)启发式方法添加到基本的MCTS中。我没有注意到500场比赛有太大的不同,可能是因为方差已经很低了。我还没有分析过1次季后赛的结果。
有人能给我一些见解吗?
发布于 2017-02-01 02:02:18
通常,您将在每个选择步骤中只执行一个播放。但是,后续的选择步骤可能会多次遍历同一节点。
例如,考虑在根节点中只有两个可用移动的情况。然后,假设您运行10,000次完整的MCTS迭代(其中一次迭代=选择+扩展+播放+反向传播),根节点下的两个节点中的每一个将被选择大约5,000次(或者可能一个节点被选择9,000次,如果第一个显然比seocnd更好,则另一个节点被选择1,000次,但仍然,两个节点都被选择不止一次)。
这是否与您当前在实现中所做的工作相匹配?如果没有,请尝试提供您当前拥有的一些代码,以便我们可以看到哪里出了问题。但是,如果这是您实现它的方式(它应该是这样的),那么每个选择步骤只执行一次播放应该没有问题
https://stackoverflow.com/questions/41963566
复制相似问题