用 Rust 和 Stockfish 快速生成国际象棋谜题

主要观点:

  • 介绍一种新的象棋谜题风格,即给出一个棋局和两个移动选项,一个是失误,一个是最佳移动,以训练识别失误的能力。
  • 从 Lichess 游戏数据库中获取真实失误,使用 pgn-reader crate 读取游戏,uciengine crate 用 Stockfish 识别失误。
  • 优化 Stockfish 使用以提高识别失误的速度,如减少节点数、提前准备引擎等,还尝试了使用假阳性和调整哈希大小等方法。
  • 总结从最初每秒 0.7 个失误到最终每秒 89 个失误的优化过程,虽有些过度优化,但能快速找到 10,000 个棋局中的失误。
  • 提出其他潜在优化方法,如放弃优势明显的游戏、根据棋局评估跳过某些移动、使用开局表等。

关键信息和重要细节:

  • Lichess 十二月游戏 PGN 文件未压缩时达 223GB,读取 665565 步用 1.79 秒,速度达 370788 步/秒。
  • 最初用 Stockfish 识别失误每秒 9.2 步,减少节点数到 10k 后仍约 9.2 步/秒,直接在 Stockfish 中运行约 5ms/步,Rust 侧约 100ms/步。
  • 优化后每秒可找到 89 个失误,比最初快 127 倍,还可通过调整哈希大小获得约 15%的提速。
  • 提出其他优化方法如放弃优势游戏、根据评估跳过移动、使用开局表等。
阅读 22
0 条评论