From 5ef94eb970bc1e4f95ebc13ec2c31b191ea46f87 Mon Sep 17 00:00:00 2001 From: Joost VandeVondele Date: Wed, 23 Aug 2017 21:00:28 +0200 Subject: [PATCH] Use moveCount history for reduction Use less reduction for moves with larger moveCount if your opponent did an unexpected (== high moveCount) move in the previous ply... unexpected moves might need unexpected answers. passed STC: http://tests.stockfishchess.org/tests/view/599f08cc0ebc5916ff64aace LLR: 2.97 (-2.94,2.94) [0.00,5.00] Total: 9638 W: 1889 L: 1720 D: 6029 passed LTC: http://tests.stockfishchess.org/tests/view/599f1e5c0ebc5916ff64aadc LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 28308 W: 3742 L: 3533 D: 21033 Bench: 5747429 --- src/search.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index 3a54bf01..09e12ed1 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -908,7 +908,8 @@ moves_loop: // When in check search starts from here } // Reduced depth of the next LMR search - int lmrDepth = std::max(newDepth - reduction(improving, depth, moveCount), DEPTH_ZERO) / ONE_PLY; + int mch = std::max(1, moveCount - (ss-1)->moveCount / 16); + int lmrDepth = std::max(newDepth - reduction(improving, depth, mch), DEPTH_ZERO) / ONE_PLY; // Countermoves based pruning if ( lmrDepth < 3 @@ -959,7 +960,8 @@ moves_loop: // When in check search starts from here && moveCount > 1 && (!captureOrPromotion || moveCountPruning)) { - Depth r = reduction(improving, depth, moveCount); + int mch = std::max(1, moveCount - (ss-1)->moveCount / 16); + Depth r = reduction(improving, depth, mch); if (captureOrPromotion) r -= r ? ONE_PLY : DEPTH_ZERO; -- 2.39.2