用Python机器学习跳棋?

2024-04-23 11:21:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这些游戏很容易储存,规则比国际象棋简单得多,但玩的人不多。如果我能把这个想法付诸实践,那将是一个很好的尝试Combinatorial Game Theory看看一台电脑是否能找到最佳的移动方式。

我在IBM的一个家伙的1960's上发现了一张关于跳棋的旧纸。最初我问过neural networks,但他们说这是错误的工具。

编辑:可能机器学习不是正确的策略。那样的话,出什么问题了?还有什么更好的方法?


Tags: 机器语言game游戏规则方式国际象棋hex
3条回答

当你玩跳棋的时候,你试图通过拿下对手的棋子并加冕来获得比对手更大的优势。失去你的棋子,让对手为他或她的棋子加冕是不可取的,所以你要避免这样做。

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

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

给定一个棋盘,此函数将返回棋盘的分数。分数越高,你的位置就越好。分数越低,你的位置就越差。

要做一个幼稚的跳棋“引擎”,你所需要做的就是找到一个最佳的棋盘位置,这只是搜索所有即时的法律动作,并找到一个最大化你的得分。

你的引擎不会提前考虑超过一步,但它将能够在一定程度上与你对抗。

下一步将给你的引擎提前计划的能力,这实质上是预测对手的反应。要做到这一点,只要找到对手的最佳移动(这里是递归),然后从你的分数中减去它。

您可能想看看以下内容:Chinook、上置信树、强化学习和Alpha-Beta剪枝。我个人喜欢结合α-β修剪和上信任树(UCT)完美的信息游戏,每个玩家有少于10个合理的举动。可以使用时差学习来创建位置评估函数。游戏人工智能可能是学习机器学习最有趣的方式。

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

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

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

读麦格劳·希尔的《机器学习》一书,读第一章。它写得非常好,第一章将教你足够多的程序,玩跳棋。就我个人而言,我在miniclip.com上制作了一个连续播放5次的程序,也是用python编写的。

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

相关问题 更多 >