我制作了著名的 2048 游戏的新变体。在此变体中,有两种类型的图块(2 和 3)需要单独合并。这使得游戏比原版更难。
我想知道玩这个游戏可以达到最高分的最佳算法是什么?我写了一个基于蒙特卡洛的机器人。对于给定的状态,它运行 K 次随机模拟,直到游戏结束并记录它们的最终得分。然后它会播放给出最高平均最终游戏得分的起始动作。我还注意到,如果我将模拟限制为仅 3 次移动(下、左和右),那么它会获得更高的分数。在以 K=1000 运行这个机器人一周后,我获得了3060的分数。最终的董事会位置如下所示:
3 2 3 2 2 6 32 6 32 24 96 64 3 128 192 3
尽管这比人类获得的任何分数都高,但我想知道我们怎样才能做得更好,我们可以达到的最高分数是多少?
当我看到原始游戏的类似问题时,我受到启发写下这个问题。事实上,那里的算法之一(第三流行)和我的一样。但是,我不确定那里描述的其他算法是否也可以在这里工作,因为它们使用的是专门针对原始游戏调整的启发式评估函数。
2021 年 9 月 22 日更新
我尝试了具有不同探索参数值的蒙特卡洛树搜索算法 (UCT)。然而,它发现的最好的只有 1800 左右,这似乎相当低。也许实施不正确。
我还尝试了返回深度 3 的当前分数的Expectiminimax算法。这给了我 2972 的分数,接近我的最佳结果。我尝试为空单元格和相同颜色的相邻数字添加奖金,但它们没有帮助。