Hint Score Wrong Bug
Closed this issue · 25 comments
20マス空きを過ぎたあたりだけで起こるという報告をもらった。20マス空きあたりで何か変なことをしていないかを見ると良さそう
このバグは「以前の探索結果が残っている場合にヒント計算で起こる」という性質がある気がする。そうすると、深さd-99%とd-1-100%(などなど)での探索を考える場合
- d-99%を計算し、間違ったスコアを得る
- d-1-100%を計算する
- 再度d-99%を計算するが、すでにd-99%の値はTTに登録されているので計算せずにTT参照だけで間違ったスコアを提示してしまう
というのが起こりそうな気がする
いや、これはなんか違いそう
TTでdepthをmpc_levelよりも優先しているのは、良くないかもしれない。
first_negascoutでのTT登録をなくしたらぱっと見バグが直ったように見える
GUI側の問題な可能性もあるので、チェックすべき。
TTを全消去するとバグは起きない(TTを根近くの数手分だけ消すと起きる)ので、普通にどこか探索をミスるバグがありそう。
nega_alpha_end_nwsを使わずに探索しても同様のバグが発生するので、中盤探索に問題がありそう
nega_scoutからlast4を呼ぶときになぜか-last4(-beta,-alpha)と呼んでいたので修正
NegascoutでのNWSをなくし(つまりαβとして実行する)、YBWCを外した(つまり、純粋αβになる)らバグが再現しなかった(たまたまかも?)
NWSの扱いで何かバグっている可能性がある。とりあえずNegascoutでのNWSをなくしたまま、YBWCでのNWSをNegascout(というかαβ)に置き換えて実験してみると良さそう
c4e3f5e6f6c5c3c6d3d2e2b3e1f4f3f2f1c2b1g3g4d6g5h4h5h3h2h6h7g6b4a3b5g2f7f8c7a5b6d7e8c8g8a6e7b2h1g1d1c1a1a2d8h8a4
も再現する
このバグはlast4の呼び方に依存するものだった。
#276 (comment)
NegascoutのYBWCを切るとこのケースがバグらないので、やはりNegascoutでのYBWCかなぁ
#276 (comment)
lll3.txt
これはこの問題に関係していますか?
level 20にしてhintを2回打つと必ずf8からe7に変わります
level 22以上だと起きないかもしれません
複数スレッドで起動すると一回目からe7になるときがあります
これは7.1.0でやってますが最新のでも同じようです
@acepck ごめんなさい、これは違う原因のようです。
コンソール版のhintコマンドでは、指定されたヒント数が少ないときは良さそうな手にあたりをつけて探索するので、それが外れるとこのような挙動になります。
これはこれで良くないような気がするので、改善しようと思います。
#276 (comment)
分かりました
nega_scout内でeldest moveを無条件にvとして扱うのがだめらしい。
g=nega_scout(eldest move)
if (v < g) ...
としないとだめみたい(こうしたらバグが消えたように見える)
バグ修正完了!!