应用机器学习与跳棋游戏

时间:2017-10-24 03:30:10

标签: python machine-learning alpha-beta-pruning

我正在为跳棋计算机游戏进行机器学习的最后一年项目。

在这个游戏中,我已经自动化一个玩家(随机移动),我希望第二个玩家学习随机性 通过更多游戏和试验变得聪明。

正如我所说,第一个玩家是自动化的,所以它工作得很好,但谈到第二个玩家,我的动作有一些问题。

我正在使用目标函数

  1. v(b)= w0 + w1x1 + w2x2 + w3x3 + w4x4 + w5x5 + w6x6

    ,其中    x1 =白色件数    x2 =黑色的数量    x3 =白王的数量    x4 =黑王的数量    x5 =受到威胁的白色碎片数量    x6 =受到威胁的黑色碎片数量

    和w0到w6是算法要学习的权重。

  2. 现在,如果我采取初始板状态并随机放置权重。 我们得到随机权重(12,-15,6,19,-5,3) v(b)= -36 最初 x1 = 12 x2 = 12 x3 = 0 x4 = 0 x5 = 0 x6 = 0

    所以v(b)= -36

  3. 但-36不能给我一个有效的位置来移动和进一步学习。
  4. 如何获得要移动的预测值?

    如果你能为我的问题做出贡献并努力解决它,那将是一个很大的帮助。

2 个答案:

答案 0 :(得分:0)

这不是一个线性问题。尝试使用此资源,让我知道它是否有帮助: https://kartikkukreja.wordpress.com/2015/07/12/creating-a-bot-for-checkers/

答案 1 :(得分:0)

我得到了答案。我的导师告诉我,我们必须在给定的运动中找出每个可能的移动的目标函数(v(b))并将它们全部进行比较....无论哪个是最大值,我们将继续该移动并相应地更新权重值例如,这是第一次转弯的情况:

+ - + - + - + - + - + - + - + - +
|   |w32|   |w31|   |w30|   |w29|
+ - + - + - + - + - + - + - + - +
|w28|   |w27|   |w26|   |w25|   |
+ - + - + - + - + - + - + - + - +
|   |w24|   |w23|   |w22|   |w21|
+ - + - + - + - + - + - + - + - +
| 20|   | 19|   | 18|   | 17|   |
+ - + - + - + - + - + - + - + - +
|   | 16|   | 15|   | 14|   | 13|
+ - + - + - + - + - + - + - + - +
|b12|   |b11|   |b10|   |b9 |   |
+ - + - + - + - + - + - + - + - +
|   |b8 |   |b7 |   |b6 |   |b5 |
+ - + - + - + - + - + - + - + - +
|b4 |   |b3 |   |b2 |   |b1 |   |
+ - + - + - + - + - + - + - + - +

我们是黑方:转1

这可能是此运动的可用举措:

Move 0: 9 to 13
Move 1: 10 to 14
Move 2: 11 to 15
Move 3: 12 to 16
Move 4: 9 to 14
Move 5: 10 to 15
Move 6: 11 to 16

所以我们制作一个移动编号字典及其各自的v(b):

sample_dict = {0: 15.944312287271288, 1: 6.444167413927058, 2: 17.771995708404148, 3: 8.847647756243374, 4: 9.420835807993932, 5: 13.057118996697053,6: 18.71362388578158}

在这种情况下,您的系统将根据最大值v(b)移动,即移动[6]。

所以采取的行动是“将6:11移动到16”。

这就是系统如何学习如何采取更好的行动。

对于两个初始转弯,我们将取0到1之间的w0到w6的随机值。但是在第二次移动之后我们将定期更新w0到w6值,因为那时我们将有vtrain(b)和v(b)

最后一点,在任何给定的运动中,为每次移动计算的所有v(b)将彼此相差两个值x5和x6。所以要小心。

感谢大家快速回复。

下面显示的是每场比赛后w0到w6的所有值,同时让它玩10次:enter image description here