我正在实现使用蒙特卡洛树搜索播放2048的AI。根据Wikipedia https://en.wikipedia.org/wiki/monte_carlo_tree_search以及我在扩展步骤中检查的所有其他资源,您应该使用UCB公式以确定哪个节点访问wi/ni + c*sqrt(ln(N)/ni)
。当末尾的分数为0
或1
(获胜或输(时,此公式效果很好,但是,该公式在2048年不起作用,因为得分是我们想要最大化的0
和n
之间的值。
有人知道当分数是0
和n
之间的值时,MCT中使用哪种最佳公式,以便我可以在2048游戏中使用它?
谢谢。
2048的最高得分似乎在4000000点附近。
因此,您只需要将最大可能的分数扩展到1
:
game_score / 3932156
挤压到[0, 1]
范围很常见。
可能的问题是最大得分与最可能的分数之间的差异。在 2048 中,得分可能远远低于最大缩放量的最大分数,将产生大多数分数(将其余的范围留至1
很少使用(。
这可能会在UCT计算中产生意外的后果,因为由于这种挤压,节点看起来会更相似(在不切实际的最高最大分数下(。
您必须尝试:这也是如此,挤压准确性的影响很小(请使用域知识来改善蒙特卡洛树搜索性能,以参数化的扑克平方 - 罗伯特·阿灵顿,克莱·兰利和史蒂文·博格尔特斯,以获取更多详细信息(。