PyTorch1.7发布,支持CUDA11分布式训练
编辑:陈萍
国际象棋是一种在棋盘上玩的双人战略棋盘游戏 , 棋盘格式为 64 格 , 排列在 8×8 网格中 。 有人无聊的时候会找电脑下国际象棋 , 但也有人无聊了会教电脑下棋 。
文章插图
国际象棋可以说是最棒的棋盘游戏之一 , 它是战略战术和纯技术的完美融合 。 每位玩家开局时各有 16 枚棋子:一王、一后、两车、两马、两象和八兵 , 各具不同功能与走法 。 真人对弈可以凭借玩家的经验 , 步步为营 。 那么 , 对于一个机器——计算机 , 你该如何教会它下棋?近日 , 有人在 medium 上发表了一篇文章 , 详细解释了如何教计算机玩国际象棋 。
本文将从 5 个方面进行介绍:
- Board 表示;
- Board 评估;
- 移动选择;
- 测试 AI;
- 接口测试 。
Board 表示
文章插图
首先 , 你需要对棋子背后的逻辑进行编码 , 即为每个棋子分配每一次可能的合法移动 。
python-chess 库为我们提供了棋子的移动生成和验证 , 简化了工作 , 安装方式如下:
!pip install python-chess
python-chess 库安装好后 , 导入 chess 模块并进行初始化:import chessboard = chess.Board()board
在 notebook 中的输出如下所示:文章插图
board 对象是一个完整的 board 表示 , 该对象为我们提供了一些重要的函数 , 例如 , board.is_checkmate() 函数检查是否存在将杀(checkmate) , board.push() 函数附加一个移动 , board.pop() 函数撤销最后一次移动等 。 阅读完整的文档请参阅:
Board 评估
为了对 board 进行初步评估 , 必须考虑一位大师在各自比赛中的想法 。
文章插图
我们应该想到的一些要点是:
- 避免用一个小棋子换三个兵;
- 象总是成对出现;
- 避免用两个小棋子换一辆车和一个兵 。
- 象 > 3 个兵 ">象 > 马;
- 象 + 马 > 车 + 兵 。
文章插图
使用 piece square table 来评估棋子 , 在 8x8 的矩阵中设置值 , 例如在国际象棋中 , 在有利的位置设置较高的值 , 在不利的位置设置较低的值 。
例如 , 白色国王越过中线的概率将小于 20% , 因此我们将在该矩阵中将数值设置为负值 。
再举一个例子 , 假设皇后希望自己被放在中间位置 , 因为这样可以控制更多的位置 , 因此我们将在中心设置更高的值 , 其他棋子也一样 , 因为国际象棋都是为了保卫国王和控制中心 。
理论就讲这些 , 现在我们来初始化 piece square table:
pawntable = [0, 0, 0, 0, 0, 0, 0, 0,5, 10, 10, -20, -20, 10, 10, 5,5, -5, -10, 0, 0, -10, -5, 5,0, 0, 0, 20, 20, 0, 0, 0,5, 5, 10, 25, 25, 10, 5, 5,10, 10, 20, 30, 30, 20, 10, 10,50, 50, 50, 50, 50, 50, 50, 50,0, 0, 0, 0, 0, 0, 0, 0]knightstable = [-50, -40, -30, -30, -30, -30, -40, -50,-40, -20, 0, 5, 5, 0, -20, -40,-30, 5, 10, 15, 15, 10, 5, -30,-30, 0, 15, 20, 20, 15, 0, -30,-30, 5, 15, 20, 20, 15, 5, -30,-30, 0, 10, 15, 15, 10, 0, -30,-40, -20, 0, 0, 0, 0, -20, -40,-50, -40, -30, -30, -30, -30, -40, -50]bishopstable = [-20, -10, -10, -10, -10, -10, -10, -20,-10, 5, 0, 0, 0, 0, 5, -10,-10, 10, 10, 10, 10, 10, 10, -10,-10, 0, 10, 10, 10, 10, 0, -10,-10, 5, 5, 10, 10, 5, 5, -10,-10, 0, 5, 10, 10, 5, 0, -10,-10, 0, 0, 0, 0, 0, 0, -10,-20, -10, -10, -10, -10, -10, -10, -20]rookstable = [0, 0, 0, 5, 5, 0, 0, 0,-5, 0, 0, 0, 0, 0, 0, -5,-5, 0, 0, 0, 0, 0, 0, -5,-5, 0, 0, 0, 0, 0, 0, -5,-5, 0, 0, 0, 0, 0, 0, -5,-5, 0, 0, 0, 0, 0, 0, -5,5, 10, 10, 10, 10, 10, 10, 5,0, 0, 0, 0, 0, 0, 0, 0]queenstable = [-20, -10, -10, -5, -5, -10, -10, -20,-10, 0, 0, 0, 0, 0, 0, -10,-10, 5, 5, 5, 5, 5, 0, -10,0, 0, 5, 5, 5, 5, 0, -5,-5, 0, 5, 5, 5, 5, 0, -5,-10, 0, 5, 5, 5, 5, 0, -10,-10, 0, 0, 0, 0, 0, 0, -10,-20, -10, -10, -5, -5, -10, -10, -20]kingstable = [20, 30, 10, 0, 0, 10, 30, 20,20, 20, 0, 0, 0, 0, 20, 20,-10, -20, -20, -20, -20, -20, -20, -10,-20, -30, -30, -40, -40, -30, -30, -20,-30, -40, -40, -50, -50, -40, -40, -30,-30, -40, -40, -50, -50, -40, -40, -30,-30, -40, -40, -50, -50, -40, -40, -30,-30, -40, -40, -50, -50, -40, -40, -30]
- 光晕|PS插件:Oniric Glow Generator (光晕效果)支持ps 2021
- Blade|售价2798元 中兴Blade 20 Pro 5G手机发布 骁龙765G配四摄
- 无国界|嘴上说着支持华为,却为苹果贡献了2000亿!还真是科技无国界啊?
- 承受|折叠屏iPhone已开始测试?要求能承受10万次折叠,或在2年后发布
- 早报:高通骁龙888正式发布 嫦娥五号传回首张图片
- 建设|《青岛市城市云脑建设指引》发布
- 优化|微软亚洲研究院发布开源平台“群策 MARO” 用于多智能体资源调度优化
- 自动驾驶汽车|海外|自动驾驶无法可依?美国多个团体联合发布自动驾驶立法大纲
- 中国视频|人日评论点赞!OPPO成视频手机先行者,新技术或下月发布
- 全新|首批支持5款机型,vivo开启OriginOS首批体验官招募