我正在实现一个使用蒙特卡洛树搜索来播放2048的人工智能。根据维基百科、https://en.wikipedia.org/wiki/Monte_Carlo_tree_search和我在扩展步骤中检查过的所有其他来源,您应该使用UCB公式来确定要访问wi/ni + c*sqrt(ln(N)/ni)的节点。当最后的分数是0或1 (输赢)时,这个公式工作得很好,但是,这个公式在2048年不起作用,因为这个分数是我们想要最大化的0和n之间的值。
谁知道在MCTS中,当分数是0和n之间的值时,哪个公式是最优的,这样我就可以在2048年的比赛中使用它?
谢谢。
发布于 2019-09-05 00:00:29
2048的最高分似乎是somewhere near 4000000 points。
因此,您只需将最大可能分数调整为1
game_score / 3932156挤到[0, 1]范围是很常见的。
一个可能的问题是最大可能分数和最可能分数之间的差异。在2048年,分数可能会远远低于最大值,简单的缩放将在较小的范围内生成大多数分数(将范围的其余部分留给1,很少使用)。
这可能会在UCT计算中产生意想不到的结果,因为由于这种挤压(在不切实际的最大可能分数下),节点看起来会比应有的更相似。
你必须尝试一下:这种情况也会发生,因为挤压精度的影响微乎其微(有关更多详细信息,请查看Using Domain knowledge to Improve Monte-Carlo Tree Search Performance in Parameterized Poker Squares - Robert Arrington, Clay Langley and Steven Bogaerts )。
https://stackoverflow.com/questions/57359229
复制相似问题