Stockfish DD – movepick 指し手オーダリング

今回はmove pickerと言って、指し手を段階的に生成して、生成した指し手のなかから1つ一番よさげな指し手を取り出す部分(いわゆる指し手オーダリング)について見ていきます。

killerが2本あったり、なるべくソートが要らないように工夫してあったり、なかなか興味深いです。

killerが2本ある理由は、1本だけだと局所解みたいなのが出てきて現在のkillerと入れ替わったときにそのあとの枝刈り性能がしばらく落ちるからで、逆に3本以上はあまり意味なくて…みたいな理由です。

その他、

  • gain。指し手単体による評価値の増加を調べたテーブル。
  • history。beta cutを起こした指し手に加点してそれ以外を減点したテーブル。
  • counter move。反駁手(?)。ある指し手に対してbeta cutを起こしたことのある相手の指し手をペアにしたもの。

という考え方は、他のこの手のゲーム木探索でも使えるアイデアで、かなり参考になるかと思います。

関連記事 : 将棋プログラムに何故coroutineが必要なのか

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です