dlshogiを千日手に対応させました。
対応方法は以下の通り。
- value networkで評価中に千日手チェックを行い、value networkの評価が終わったら、value networkの値を使わずに千日手チェックの結果を使うようにする。
- 同じ局面でも経路によって千日手チェックの結果は異なるため、ハッシュのvalue networkの評価値を上書きしない。
- 同じ局面を探索したときに、以前に千日手になった局面は、再度千日手チェックを行い、千日手の場合、探索を打ち切る。
経路が異なると千日手チェックの結果が変わることに注意が必要です。
千日手チェックは、AperyのPosition::isDrawが使えたので楽に実装できました。
千日手チェックを自分で実装すると大変なので、ライブラリはありがたいです。