前から自己対戦学習がアサーションエラーでたまに止まると思ってたら、置換表のバグでした。
原因としては、まず千日手に至る途中の局面(3回目の同一局面とか)の評価値が、3.5とかの普通に評価関数で計算した値で置換表に保存されています。
で、4回目の同一局面の探索前に置換表を参照すると、本当は「千日手」を表す評価値が返らないといけないのに、保存されていた「3.5」が返される、と。
う〜ん、簡単には対処出来そうにないなぁ。
- 探索前に置換表をクリアする。
- 置換表のエントリに対局開始からの手数を保存しておいて、それを現局面と比較してエントリの使用・未使用を決定する。
このどっちかかなぁ、対処方法は。