Change multi-cut pruning condition
authorMiguel Lahoz <miguel_lahoz@protonmail.com>
Sat, 15 Jun 2019 06:01:02 +0000 (14:01 +0800)
committerStephane Nicolet <cassio@free.fr>
Thu, 20 Jun 2019 14:39:22 +0000 (16:39 +0200)
commit8bf21a723e77399382f05c75e45201882772684a
tree0e8dd5dad8ec9b41c16fe7e597f103e540f0e04e
parent297c40291a1cc0ca27fecef342501ba1c359f9cd
Change multi-cut pruning condition

Use comparison of eval with beta to predict potential cutNodes. This
allows multi-cut pruning to also prune possibly mislabeled Pv and NonPv
nodes.

STC:
LLR: 2.95 (-2.94,2.94) [0.50,4.50]
Total: 54305 W: 12302 L: 11867 D: 30136
http://tests.stockfishchess.org/tests/view/5d048ba50ebc5925cf0a15e8

LTC:
LLR: 2.95 (-2.94,2.94) [0.00,3.50]
Total: 189512 W: 32620 L: 31904 D: 124988
http://tests.stockfishchess.org/tests/view/5d04bf740ebc5925cf0a17f0

Normally I would think such changes are risky, specially for PvNodes,
but after trying a few other versions, it seems this version is more
sound than I initially thought.

Aside from this, a small funtional change is made to return
singularBeta instead of beta to be more consistent with the fail-soft
logic used in other parts of search.

=============================

How to continue from there ?

We could try to audit other parts of the search where the "cutNode"
variable is used, and try to use dynamic info based on heuristic
eval rather than on this variable, to check if the idea behind this
patch could also be applied successfuly.

Bench: 3503788
src/search.cpp