DarkThought:计算机国际象棋的卓越之选
1. 搜索参数配置
DarkThought在设计上遵循可配置且不损失效率的原则,拥有大量源代码开关,能快速生成多样的搜索“个性”。以下是一些关键参数及其影响:
- 搜索算法 :除了标准的PVS / NEGASCOUT,还支持纯失败软α - β(FAB)算法,以及一种混合模式,即先使用PVS,达到可配置深度(1 - 4)后切换到FAB。
- 空步搜索 :空步剪枝在微机国际象棋程序中是一把双刃剑,但也提供了很多改进机会。在DarkThought中,空步可以分层(在搜索树的上部或下部禁用至预定义深度)、设为非递归或完全关闭。最初,DarkThought在深度达到5步及以上时才进行空步搜索,并且使用固定的深度缩减因子R = 2,不过现在也在不断尝试其他值,尤其是与残局中禁用空步的各种物质阈值相结合的深度自适应值。
- 置换表访问 :DarkThought在置换表中进行多次探测,因为1993年的实验表明,这种方式优于多个表。每次访问的探测次数是可定义的参数,通常设置为4。读写操作访问置换表的深度可以独立配置,目前将两者都设置为静止地平线以下一步效果最佳。
- 扩展启发式 :所有扩展都可以单独分层或完全关闭。如果将军方的棋子材料低于某个阈值(如少于两个棋子),则可以禁用将军扩展。无条件跟随将军移动的深度也是可修改的,通常设置为前沿,这与无用性剪枝和仅吃子静止搜索配合良好。
- 数据结构 :由于大多数计算机在内存性能和缓存敏感性方面表现不同,Dar