Skip to content

Commit 8bf21a7

Browse files
miguel-lsnicolet
authored andcommitted
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
1 parent 297c402 commit 8bf21a7

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/search.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -913,10 +913,11 @@ namespace {
913913
// Multi-cut pruning
914914
// Our ttMove is assumed to fail high, and now we failed high also on a reduced
915915
// search without the ttMove. So we assume this expected Cut-node is not singular,
916-
// that is multiple moves fail high, and we can prune the whole subtree by returning
917-
// the hard beta bound.
918-
else if (cutNode && singularBeta > beta)
919-
return beta;
916+
// that multiple moves fail high, and we can prune the whole subtree by returning
917+
// a soft bound.
918+
else if ( eval >= beta
919+
&& singularBeta >= beta)
920+
return singularBeta;
920921
}
921922

922923
// Check extension (~2 Elo)

0 commit comments

Comments
 (0)