TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

将棋AIの進捗 その9(千日手対応)

dlshogiを千日手に対応させました。

対応方法は以下の通り。

  • value networkで評価中に千日手チェックを行い、value networkの評価が終わったら、value networkの値を使わずに千日手チェックの結果を使うようにする。
  • 同じ局面でも経路によって千日手チェックの結果は異なるため、ハッシュのvalue networkの評価値を上書きしない。
  • 同じ局面を探索したときに、以前に千日手になった局面は、再度千日手チェックを行い、千日手の場合、探索を打ち切る。

経路が異なると千日手チェックの結果が変わることに注意が必要です。
千日手チェックは、AperyのPosition::isDrawが使えたので楽に実装できました。
千日手チェックを自分で実装すると大変なので、ライブラリはありがたいです。

効果

対応前は、GPSfishと50回対局で8回千日手になりましたが、対応後は1回も千日手にはならないようになりました。
ループする無駄な局面を探索しなくなるので、強さも上がるかと思いましたが、勝率が上がることはなかったです。