用python编写1024游戏(4)

上一篇blog,我们来用python实现ai版1024游戏。


如前文所述,关键在于 获得最优滑动方向 这一步。整理一下思路:

此方法会调用一个用递归实现的深度优先搜索:

直接将其翻译成python代码:

其中 evaluation_func 是关键。如何定义这个函数呢?前文提到:

其中 H(x) 是评估函数。我们要思考究竟是什么因素影响了当前的局面,什么才算对自己有利。

这里这里的讨论可以总结出以下两点:

  • 最大值尽量靠在边角
  • 尽可能地沿着某个方向呈等比数列排列

于是我们可以这样设计:

各种因子的实现为:






递归深度为2时,运行一次大概要4-5min。当我设置递归深度为1时,进行了n次实验(n>50),胜率大概在50%左右。跟这里提及的算法效果比起来简直一个天上一个地下。

如何设计更好的评估函数呢?如何制定更完善的搜索策略呢?这有点超出我目前的能力范围了。。。

完整代码我放到Gist上,如下所示:

《用python编写1024游戏(4)》有4个想法

发表评论

电子邮件地址不会被公开。