机器学习用Python来玩跳棋?

时间:2012-09-26 02:39:58

标签: python machine-learning game-theory

我是机器学习初学者。我想通过教电脑玩跳棋来学习基础知识。实际上,我想要学习的游戏是DomineeringHex。我选择的语言是Python

这些游戏很容易存储,规则比国际象棋简单得多,但玩的人不多。如果我能够实现这个想法,那么试验Combinatorial Game Theory以查看计算机是否能找到最佳移动将会非常棒。

我在IBM发现了一篇关于来自1960's的跳棋的旧论文。最初我曾问过neural networks,但他们说这是错误的工具。

编辑:可能是机器学习不是正确的策略。在那种情况下,出了什么问题?什么是更好的方式?

3 个答案:

答案 0 :(得分:3)

您可能需要查看以下内容:Chinook,Upper Confidence Trees,强化学习和Alpha-Beta修剪。我个人喜欢将Alpha-Beta Pruning和Upper Confidence Trees(UCT)结合起来,用于完美的信息游戏,每个玩家的合理动作少于10次。您可以使用时间差异学习来创建位置评估功能。游戏AI可能是学习机器学习最有趣的方式。

有关所有这些主题的链接,请单击

http://artent.net/blog/2012/09/26/checkers-and-machine-learning/

(我无法包含更多链接,因为堆栈溢出软件认为我是新手!)

答案 1 :(得分:1)

获取名为"机器学习"由McGraw Hill撰写并阅读第一章。它编写得非常好,第一章将教你足够的程序来制作跳棋。就个人而言,我制作了一个在miniclip.com上连续播放5个的节目,也是在python中。

http://www.amazon.com/Learning-McGraw-Hill-International-Editions-Computer/dp/0071154671

答案 2 :(得分:0)

当玩跳棋时,你会通过拿走自己的棋子并为自己加冕来获得优于对手的优势。丢失你的棋子并允许你的对手为他或她的棋子加冠是不可取的,所以你不要这样做。

棋盘游戏引擎通常围绕位置评估功能。对于跳棋,我的第一个猜测是这样的:

score =       number of allies         -     number of opponents
        + 3 * number of crowned allies - 3 * number of crowned opponents

鉴于董事会,此功能将返回董事会的分数。得分越高,你的位置越好。分数越低,你的位置越差。

要制作一个天真的棋子“引擎”,你需要做的就是找到一个最佳的棋盘位置,这只是搜索所有直接的法律动作并找到最大化你的分数。

你的引擎不会提前思考一次,但它可以在某种程度上与你对抗。

下一步是让你的引擎能够提前计划,这实际上是预测对手的反应。要做到这一点,只需找到你的对手的最佳动作(这里是递归)并从你的分数中减去它。