探索ルーチンをちょっといじってみようかな
ちょっと前にブログでムーブオーダリングや探索の延長・短縮・枝刈りについての話題が流行っていたんで、遅ればせながら参加。
まず、現状の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個。まぁ悪くない値かと。
最後のは取った駒は余分かな?とも思いますが、まずは粗いテーブルの構成を色々変えて実験してみます。