Skip to content

Commit

Permalink
Movecount pruning reduction logic
Browse files Browse the repository at this point in the history
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 #2605

Bench: 5138771
  • Loading branch information
Praveen tummala authored and vondele committed Mar 30, 2020
1 parent f2430bf commit b7ecdaa
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 4 deletions.
3 changes: 2 additions & 1 deletion AUTHORS
@@ -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)
Expand Down Expand Up @@ -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
Expand Down
10 changes: 7 additions & 3 deletions src/search.cpp
Expand Up @@ -962,6 +962,7 @@ namespace {
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);
Expand Down Expand Up @@ -1054,8 +1055,8 @@ namespace {
&& 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;
Expand Down Expand Up @@ -1143,13 +1144,16 @@ namespace {
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)
{
Expand Down

0 comments on commit b7ecdaa

Please sign in to comment.