3 回答
TA贡献1884条经验 获得超4个赞
我是该线程中其他人提到的AI程序的作者。您可以查看AI 行动或阅读源。
目前,考虑到每次移动大约100毫秒的思考时间,该程序在我的笔记本电脑上的浏览器中的javascript中运行时,可以实现约90%的获胜率,因此虽然效果不理想(但!),但它的表现还不错。
由于该游戏是离散的状态空间,完美的信息,基于回合的游戏(如国际象棋和西洋跳棋),因此我使用了已被证明可用于这些游戏的相同方法,即带有alpha-beta修剪的minimax 搜索。由于已经有很多关于该算法的信息,因此,我将仅讨论在静态评估函数中使用的两种主要启发式方法,这些启发式方法将其他人在这里表达的许多直觉形式化。
单调性
这种试探法试图确保图块的值都沿着左/右和上/下方向都增加或减少。仅凭这种启发式方法就可以捕捉许多其他人提到的直觉,即更高价值的瓷砖应聚集成一角。它通常会阻止越来越孤立的小有价值的瓷砖和将保持板非常有组织,有更小的砖级联并填充到大砖。
这里有一个完美的单调格的屏幕截图。我通过运行设置了eval函数的算法来忽略其他启发式算法,而仅考虑单调性,从而获得了此结果。
完美单调的2048板
光滑度
仅上述启发式方法趋向于创建其中相邻区块的值减小的结构,但是当然为了合并,相邻区块需要具有相同的值。因此,平滑度启发式方法只是测量相邻图块之间的值差,以尽量减少此计数。
关于Hacker News的评论者从图论的角度对该想法进行了有趣的形式化。
这是一个完美平滑的网格的屏幕截图,这要归功于出色的模仿叉。
完美光滑的2048板
免费瓷砖
最后,免费磁贴太少会受到惩罚,因为当游戏板太狭窄时,选项会很快用完。
就是这样!在优化这些条件的同时搜索游戏空间会产生非常好的性能。使用这样的通用方法而不是显式编码的移动策略的一个优点是该算法通常可以找到有趣且出乎意料的解决方案。如果您观察它的运行,它通常会做出令人惊讶但有效的举动,例如突然切换它要面对的墙或角。
编辑:
这是这种方法的强大功能的演示。我取消了图块值的上限(因此在达到2048后继续保持不变),这是八次试验后的最佳结果。
4096
是的,这是4096和2048的乘积。=)这意味着它在同一块板上完成了3倍难以捉摸的2048瓦片。
添加回答
举报