Movecount pruning reduction logic

This patch refines search reduction logic in case the position is not a former PV node and is pruned based on move count.

passed STC
https://tests.stockfishchess.org/tests/view/5e8092bde42a5c3b3ca2ed35
LLR: 2.94 (-2.94,2.94) {-0.50,1.50}
Total: 78848 W: 15480 L: 15170 D: 48198
Ptnml(0-2): 1406, 9310, 17773, 9438, 1497

passed LTC
https://tests.stockfishchess.org/tests/view/5e80bb13e42a5c3b3ca2ed4b
LLR: 2.94 (-2.94,2.94) {0.25,1.75}
Total: 86596 W: 11451 L: 11033 D: 64112
Ptnml(0-2): 624, 7993, 25687, 8329, 665

closes https://github.com/official-stockfish/Stockfish/pull/2605

Bench: 5138771
This commit is contained in:
Praveen tummala
2020-03-30 10:22:42 +05:30
committed by Joost VandeVondele
parent f2430bf034
commit b7ecdaada7
2 changed files with 9 additions and 4 deletions

View File

@@ -1,4 +1,4 @@
# List of authors for Stockfish, as of January 7, 2020
# List of authors for Stockfish, as of March 30, 2020
Tord Romstad (romstad)
Marco Costalba (mcostalba)
@@ -123,6 +123,7 @@ Pasquale Pigazzini (ppigazzini)
Patrick Jansen (mibere)
pellanda
Peter Zsifkovits (CoffeeOne)
Praveen Kumar Tummala (praveentml)
Rahul Dsilva (silversolver1)
Ralph Stößer (Ralph Stoesser)
Raminder Singh

View File

@@ -962,6 +962,7 @@ moves_loop: // When in check, search starts from here
value = bestValue;
singularLMR = moveCountPruning = false;
ttCapture = ttMove && pos.capture_or_promotion(ttMove);
bool formerPv = ttPv && !PvNode;
// Mark this node as being searched
ThreadHolding th(thisThread, posKey, ss->ply);
@@ -1054,8 +1055,8 @@ moves_loop: // When in check, search starts from here
&& tte->depth() >= depth - 3
&& pos.legal(move))
{
Value singularBeta = ttValue - (((ttPv && !PvNode) + 4) * depth) / 2;
Depth singularDepth = (depth - 1 + 3 * (ttPv && !PvNode)) / 2;
Value singularBeta = ttValue - ((formerPv + 4) * depth) / 2;
Depth singularDepth = (depth - 1 + 3 * formerPv) / 2;
ss->excludedMove = move;
value = search<NonPV>(pos, ss, singularBeta - 1, singularBeta, singularDepth, cutNode);
ss->excludedMove = MOVE_NONE;
@@ -1143,13 +1144,16 @@ moves_loop: // When in check, search starts from here
if (ttPv)
r -= 2;
if (moveCountPruning && !formerPv)
r++;
// Decrease reduction if opponent's move count is high (~5 Elo)
if ((ss-1)->moveCount > 14)
r--;
// Decrease reduction if ttMove has been singularly extended (~3 Elo)
if (singularLMR)
r -= 1 + (ttPv && !PvNode);
r -= 1 + formerPv;
if (!captureOrPromotion)
{