From 77342126d8417469bd6a398cfc6c0594b1f02f82 Mon Sep 17 00:00:00 2001 From: VoyagerOne Date: Wed, 21 Jun 2017 14:05:14 -0700 Subject: [PATCH 1/1] Increase reduction if tt-move is a capture The idea is that chances are the tt-move is best and will be difficult to raise alpha when playing a quiet move. STC: LLR: 2.95 (-2.94,2.94) [0.00,5.00] Total: 7582 W: 1415 L: 1259 D: 4908 LTC: LLR: 2.97 (-2.94,2.94) [0.00,5.00] Total: 59553 W: 7885 L: 7573 D: 44095 Bench: 5725676 Closes #1147 --- src/search.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/search.cpp b/src/search.cpp index 9f4ba00d..12cbffe0 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -554,7 +554,7 @@ namespace { Depth extension, newDepth; Value bestValue, value, ttValue, eval; bool ttHit, inCheck, givesCheck, singularExtensionNode, improving; - bool captureOrPromotion, doFullDepthSearch, moveCountPruning, skipQuiets; + bool captureOrPromotion, doFullDepthSearch, moveCountPruning, skipQuiets, ttCapture; Piece moved_piece; int moveCount, quietCount; @@ -842,6 +842,7 @@ moves_loop: // When in check search starts from here && (tte->bound() & BOUND_LOWER) && tte->depth() >= depth - 3 * ONE_PLY; skipQuiets = false; + ttCapture = false; // Step 11. Loop through moves // Loop through all pseudo-legal moves until no moves remain or a beta cutoff occurs @@ -959,6 +960,9 @@ moves_loop: // When in check search starts from here ss->moveCount = --moveCount; continue; } + + if (move == ttMove && captureOrPromotion) + ttCapture = true; // Update the current move (this must be done after singular extension search) ss->currentMove = move; @@ -979,6 +983,11 @@ moves_loop: // When in check search starts from here r -= r ? ONE_PLY : DEPTH_ZERO; else { + + // Increase reduction if ttMove is a capture + if (ttCapture) + r += ONE_PLY; + // Increase reduction for cut nodes if (cutNode) r += 2 * ONE_PLY; -- 2.39.2