Introduction to Craft (Chinese Version) - patwonder/craft-othello GitHub Wiki
简介
Craft 是一款具有较高AI的黑白棋游戏程序。目前发布的最新版本是2.0.0。
功能
- 下棋:提供人机对战、双人对战以及机器对战三种模式,共有8种不同难度的AI玩家供选择。下棋过程中可以通过悔棋、提示、终局求解等方式获取帮助。
- 统计信息:主要统计玩家与各个AI玩家间的胜负情况。
- 打开和保存棋局:下棋过程中可随时保存棋局,以便将来继续进行游戏。
- 预设棋局:允许玩家排兵布阵,以任意棋型开始游戏。
- 自我学习:可以通过对已下过棋局的分析,更新棋谱,不断提高自身棋力。
- 棋局分析:可以对已下完的棋局进行分析,对有问题的走法,给出建议的走法。
- 残局模式:从对局库中提取残局进行对弈,可用来练习残局阶段的下棋技巧。
- 其他功能:包括音效、延迟响应、搜索过程动态显示、终局求解、界面主题等功能。
关于 AI 引擎
棋谱:完全自学生成,对每一遇到过的局面搜索9~10层(终局20层),找出估值大于等于-12的节点并排序,更新已有节点估值,并记入棋谱。
搜索:使用 NegaScout 搜索和迭代加深,使用 Multi-Prob Cut 进行前期剪枝,使用浅层搜索、优先序列及置换表启发,在 Intel Core 2 Quad Q8200(2.33GHz) 上中局搜索速度(叶节点)为 1500~2000 Kn/s,深度1620步;终局搜索使用End-Cut进行迭代加宽(iterative widening)搜索,使用奇偶性、Fastest-first、浅层搜索、优先序列及置换表进行启发,速度(叶节点)为 2000~3000 Kn/s,深度可达2426步。1.3版本,终局搜索加入稳定子剪枝。
搜索速度为32位版本的数据,64位版本的数据:中局20002500 Kn/s,终局25006000 Kn/s。
置换表:使用双表置换法,新表存放最新节点,旧表存放较深节点,在d(新节点层数)不小于d'(旧节点层数)-1时将节点存入旧表,否则存入新表。实践证明利用率较高,在总大小为8MB的时候即可达到比较好的加速效果。
估值:使用模板估值技术,每3步为一个阶段,每一
- 行
- 列
- 长度为4~8的对角线
- 边和相邻的X-格
- 3*3的角落
- 5*2的角落
在各个阶段都有相应的估值与之对应。将所有46个模板的值与相应阶段的奇偶性修正值相加来估计最终棋子数之差。所有大约100万个模板参数通过对1980年~2003年的 Thor 对局库以及 Logistello 自我对弈的数据库(总共约10万个对局)进行统计逼近,经4天4夜的计算而得。