From 198418ee67895817f2fad63f4935540e17cd7117 Mon Sep 17 00:00:00 2001 From: Stefan Geschwentner Date: Wed, 8 Aug 2018 09:45:58 +0200 Subject: [PATCH] LMR simplification Unify the "quiet" and "non-quiet" reduction rules for use at any kind of moves. The idea behind it was that both rules reduce at similiar cases in master: one directly for late previous moves and the other indirectly by using a bad stat score which is used for most move sorting and so approximates the late move condition. For captures/promotions the old rule was triggered in 25% but the new rule only for 3% of all cases (so now more reductions are done, whereas for quiet moves reductions keep the same level). STC: LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 162327 W: 35976 L: 36134 D: 90217 http://tests.stockfishchess.org/tests/view/5b6a9a430ebc5902bdb9d5c1 LTC: LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 29570 W: 5083 L: 4976 D: 19511 http://tests.stockfishchess.org/tests/view/5b6bc5d00ebc5902bdb9e9d6 Bench: 4526980 --- src/search.cpp | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index 28fbf254..8f7d263a 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -998,18 +998,12 @@ moves_loop: // When in check, search starts from here { Depth r = reduction(improving, depth, moveCount); - if (captureOrPromotion) // (~5 Elo) - { - // Decrease reduction by comparing opponent's stat score - if ((ss-1)->statScore < 0) - r -= ONE_PLY; - } - else - { - // Decrease reduction if opponent's move count is high (~5 Elo) - if ((ss-1)->moveCount > 15) - r -= ONE_PLY; + // Decrease reduction if opponent's move count is high (~10 Elo) + if ((ss-1)->moveCount > 15) + r -= ONE_PLY; + if (!captureOrPromotion) + { // Decrease reduction for exact PV nodes (~0 Elo) if (pvExact) r -= ONE_PLY; -- 2.39.2