GA将?開発日記~王理のその先へ~

ネタ勢最強を目指して絶賛開発中。

探索ルーチンをちょっといじってみようかな

 ちょっと前にブログでムーブオーダリングや探索の延長・短縮・枝刈りについての話題が流行っていたんで、遅ればせながら参加。

 まず、現状のGA将!!!!!!はこんな感じです。

  • 全幅αβ探索ベース
  • ムーブオーダリング
    • ハッシュの手(もしあれば)を先頭に
    • 残りの手はHistory Heuristicで
  • 延長・短縮
    • LMR
    • 王手0.5手延長
    • recapture0.5手延長
  • 前向き枝刈り
    • 無し!

 んで、History Heuristic*1をいじってみようかと。

 現状のHistoryは、以下の要素を考慮して手の良し悪しを評価しています。

  • 移動元の位置(81マス+駒台)
  • 移動先の位置(81マス)
  • 移動後の駒の種類(14種類)
  • 成る手かどうか(2種類)
  • 駒を取ったかどうか・取った場合はその種類(14+1種類)

 これで、合計約2.8M個のテーブルになります。

 んで、これでそこそこの性能はあるんですが、テーブルが細かすぎて指し手のデータが少ない場合(浅い探索で学習する時とか)はちゃんとオーダリング出来ていない可能性があります。

 という訳で、上記の「細かいテーブル」以外に、「粗いテーブル」も用意して、その2つの評価値を足してオーダリングに使おうかと。これもどっかで聞いた様な話ですが。

 現状だと下記の構成で考えていますが、実際にベンチマークをしてみて性能いいのに決めようかと思います。

  • 移動先の位置(81マス)
  • 移動後の駒の種類(14種類)
  • 駒を取ったかどうか・取った場合はその種類(13+1種類)

 これだとテーブルサイズは約16K個。まぁ悪くない値かと。

 最後のは取った駒は余分かな?とも思いますが、まずは粗いテーブルの構成を色々変えて実験してみます。

*1:実際には少し修正したアルゴリズムです