遅いのはバグのせい
うちの将棋は、
西村さんのマイムーブと比べても格段に探索が遅いので、
やり方がおかしいのかな? とずーっと悩んでましたが、
手法がダメというのもありますが、いかにも読み筋がおかしいので、
まずはバグをなくすべきと思います(当然だ……)
あと大きいのが、
ハッシュの手でbetaカットが起きると凄い効率が良いはずですが(手の生成しないでいいし、オーダリングも不要)
その手が無効な手じゃないかのチェックがうまく行かず、これまで使用を断念してきましたが、
(キラームーブも手を生成して、そこに含まれるかを確認していた)
なんとか動きました。
手が異常かどうか?は、たとえば、
- 移動先が味方
- 移動元に自分がいない
- 持ってない駒を打っている
- 歩を打った先が二歩
- 打った先が空白じゃない
なんてのは簡単に分かります。
- 打ったら王手になってないか?
遅くなりそうですが、これもやってました。
それでも異常な手を打ってます。
やっと分かりました。
大駒で飛び駒の時に、移動元と移動先の間に駒がいるのに飛び越えてたんです(#゚Д゚)聞いてないぞゴルァ!!
違う読み筋が混入してるのか?と悩んでましたが、
うさぴょんさんの本の交換値の計算のページにある異常手判断関数で解決しました(゚Д゚ )ウマー
教訓:自分だけで考える前に、先見の知恵に力を借りよう
あと、Bonanzaの保木さんが、
ハッシュの手の後は、SEEで駒得する手を読んで、次にキラー、ヒストリーを読んで、最後に残りの手(カス)
という順番を推奨されてたんですが、
SEE駒得する手を調べるには手の生成もいるんで、
ハッシュの手、キラー手をまず調べている。実際どっちがいいかは自己対戦するなり、探索の効率を調べるなど調査がいるんだろう。