我是机器学习初学者。我想通过教电脑玩跳棋来学习基础知识。其实我想学的游戏是霸气和妖术。我选择的语言是 Python
这些游戏很容易存储,规则也比国际象棋简单得多,但玩的人并不多。如果我能把这个想法付诸实践,那将非常适合尝试组合博弈论,看看是否有一台计算机并找到最佳移动。
我在 IBM 的一个人发现了1960 年代关于跳棋的这篇旧论文。最初我曾询问过神经网络,但他们说这是错误的工具。
编辑:机器学习可能不是正确的策略。在这种情况下,出了什么问题?什么是更好的方法?
You might want to take a look at the following: Chinook, Upper Confidence Trees, Reinforcement Learning, and Alpha-Beta pruning. I personally like to combine Alpha-Beta Pruning and Upper Confidence Trees (UCT) for perfect information games where each player has less than 10 reasonable moves. You can use Temporal Difference Learning to create a position evaluation function. Game AI is probably the most fun way to learn machine learning.
For links to all of these topics, click on
http://artent.net/blog/2012/09/26/checkers-and-machine-learning/
(I was not able to include more links because the stack overflow software considers me a newbie!)
获取 McGraw Hill 的《机器学习》一书并阅读第一章。它写得非常好,第一章将教你制作一个跳棋程序。就我个人而言,我在 miniclip.com 上制作了一个连续播放 5 个的程序,也在 python 中。
http://www.amazon.com/Learning-McGraw-Hill-International-Editions-Computer/dp/0071154671
在下跳棋时,您试图通过拿走对手的棋子并为自己的棋子加冕来获得优势。失去你的棋子并让你的对手加冕他或她的棋子是不可取的,所以你避免这样做。
棋盘游戏引擎通常围绕位置评估功能展开。对于跳棋,我的第一个猜测是这样的:
score = number of allies - number of opponents
+ 3 * number of crowned allies - 3 * number of crowned opponents
给定一个棋盘,此函数将返回棋盘的分数。分数越高,你的位置就越好。分数越低,你的位置越差。
要制作一个幼稚的跳棋“引擎”,您需要做的就是在给定棋盘位置的情况下找到最佳移动,这只是搜索所有立即合法的移动并找到最大化您的分数的移动。
你的引擎不会提前考虑超过一步,但它会在某种程度上与你对抗。
下一步将使您的引擎能够提前计划,这实质上是预测对手的反应。要做到这一点,只需找到对手的最佳动作(这里是递归)并将其从您的分数中减去。