From 919da65d70f0041abbb0102133ed0abbf25b1af0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ste=CC=81phane=20Nicolet?= Date: Sat, 25 Sep 2021 19:37:47 +0200 Subject: [PATCH] Reduction instead of cutoff In master, during singular move analysis, when both the transposition value and a reduced search for the other moves seem to indicate a fail high, we heuristically prune the whole subtree and return an fail high score. This patch is a little bit more cautious in this case, and instead of the risky cutoff, we now search the ttMove with a reduced depth (by two plies). STC: https://tests.stockfishchess.org/tests/view/614dafe07bdc23e77ceb8a89 LLR: 2.94 (-2.94,2.94) <-0.50,2.50> Total: 46728 W: 11909 L: 11666 D: 23153 Ptnml(0-2): 181, 5288, 12168, 5561, 166 LTC: https://tests.stockfishchess.org/tests/view/614dc84abe4c07e0ecac3c95 LLR: 2.94 (-2.94,2.94) <0.50,3.50> Total: 74520 W: 18809 L: 18450 D: 37261 Ptnml(0-2): 45, 7735, 21346, 8084, 50 closes https://github.com/official-stockfish/Stockfish/pull/3718 Bench: 5499262 --- src/search.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index ffeb5110..8db295f1 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1125,7 +1125,8 @@ moves_loop: // When in check, search starts here return singularBeta; // If the eval of ttMove is greater than beta we try also if there is another - // move that pushes it over beta, if so also produce a cutoff. + // move that pushes it over beta, if so the position also has probably multiple + // moves giving fail highs. We will then reduce the ttMove (negative extension). else if (ttValue >= beta) { ss->excludedMove = move; @@ -1133,7 +1134,7 @@ moves_loop: // When in check, search starts here ss->excludedMove = MOVE_NONE; if (value >= beta) - return beta; + extension = -2; } } -- 2.39.2