首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将alpha-zero-general应用于鲍鱼(一种六边形棋盘游戏)

将alpha-zero-general应用于鲍鱼(一种六边形棋盘游戏)
EN

Stack Overflow用户
提问于 2020-07-21 16:27:29
回答 1查看 77关注 0票数 0

我正试着用阿尔法零号来处理鲍鱼。下面是alpha zero general的原始代码:https://github.com/suragnair/alpha-zero-general

有一些矩形棋盘游戏的实现,如connect4,五子棋,奥赛罗,tictactoe和tictactoe_3d。然而,鲍鱼,它有一个六边形的电路板,让我感到困惑,如何在一个二维数组中描述它的电路板,这应该是网络的输入。

在我找到alpha 0通用代码之前,我已经实现了另一个代码。这是我使用的原始板列表:

代码语言:javascript
复制
       [  2, 2, 0, 1, 1  ], 
      [  2, 2, 2, 1, 1, 1  ],
     [  0, 2, 2, 0, 1, 1, 0  ],
   [  0, 0, 0, 0, 0, 0, 0, 0  ],
  [  0, 0, 0, 0, 0, 0, 0, 0, 0 ],
   [  0, 0, 0, 0, 0, 0, 0, 0  ],
    [  0, 1, 1, 0, 2, 2, 0  ],
      [  1, 1, 1, 2, 2, 2  ],
       [  1, 1, 0, 2, 2  ]

其中1代表黑人,2代表白人。然而,我发现它不能输入到CNN。

我有一个想法是将它映射到一个二维numpy数组上,但不知道是否可以使用它。

代码语言:javascript
复制
[  2, 2, -1, -1, 0, 1, 1, 2, 2  ], 
[  2, 2, -1, -1, -1, 1, 1, 1, 2  ],
[  2, 0, -1, -1, 0, 1, 1, 0, 2  ],
[  2, 0, 0, 0, 0, 0, 0, 0, 0  ],
[  0, 0, 0, 0, 0, 0, 0, 0, 0  ],
[  0, 0, 0, 0, 0, 0, 0, 0, 2  ],
[  2, 0, 1, 1, 0, -1, -1, 0, 2  ],
[  2, 1, 1, 1, -1, -1, -1, 2, 2  ],
[  2, 2, 1, 1, 0, -1, -1, 2, 2  ]

其中1代表黑色,-1代表白色,2代表无效的正方形。

这个想法可以吗?

有没有推荐的方法将它应用到六边形棋盘游戏中,或者有什么我可以参考的exists示例?

EN

回答 1

Stack Overflow用户

发布于 2021-01-06 22:25:26

如果你仍然对这个话题感兴趣:我一直在使用这个9x9字符数组,它类似于官方的鲍鱼棋盘游戏符号:

https://en.wikipedia.org/wiki/Abalone_(board_game)但是维基百科上的数字是令人困惑的,如果你这样排列数组,它会变得更清晰

'a‘和'b’是经典棋盘游戏设置中的黑白弹珠,破折号区域'-‘不是六边形网格的一部分,而空格在网格上。你可以只使用行和列的方向来写下3个方向的轴。

如果您向上或向下移动一行大理石,移动发生对角(从左上角到右下角)

axis 1 -> positionrow+1 or positionrow 1(轴1行或位置行-1

axis 2 ->位置行或位置行

axis 3 -> positionrow+1 or positionrow 1(轴3行或位置行-1

轴3是另一个对角方向,下面的移位数组表应该更容易识别

代码语言:javascript
复制
char globalBoard[9][9]{ // ( classic setup)

-4, -3, -2, -1,  0,  1,  2,  3,  4  centered notation
//0   1   2   3   4   5   6   7   8  indexed notation
//-----------------------------------------------
 {'-','-','-','-','a','a','a','a','a'},      //-4       0
   {'-','-','-','a','a','a','a','a','a'},      //-3       1
     {'-','-',' ',' ','a','a','a',' ',' '},      //-2       2
       {'-',' ',' ',' ',' ',' ',' ',' ',' '},      //-1       3
         {' ',' ',' ',' ',' ',' ',' ',' ',' '},      // 0       4
           {' ',' ',' ',' ',' ',' ',' ',' ','-'},      // 1       5
             {' ',' ','b','b','b',' ',' ','-','-'},      // 2       6
               {'b','b','b','b','b','b','-','-','-'},      // 3       7
                 {'b','b','b','b','b','-','-','-','-'}       // 4       8
};//                                                         centered  indexed
                                                            notation  notation

我目前正在做一些和你类似的事情。我正试图让我的桌面机械臂遵循一些游戏算法,如min/max,Alpha-beta剪枝和蒙特卡洛树搜索,与我玩棋盘游戏。

我偶然发现了这篇文章,因为我一直在寻找使用机器学习玩游戏的人,特别是在alpahZero网络上。

我很想听听您的项目到目前为止是如何发展的:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63010463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档