From: Joona Kiiski Date: Sun, 21 Apr 2013 13:53:27 +0000 (+0100) Subject: More aggressive post-futility pruning X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=8df17204f4469977604695e4ae5d63ae47a575ff More aggressive post-futility pruning --- diff --git a/src/search.cpp b/src/search.cpp index 1fe895d3..80ac9b20 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -643,10 +643,10 @@ namespace { && !ss->skipNullMove && depth < 4 * ONE_PLY && !inCheck - && eval - FutilityMargins[depth][0] >= beta + && eval - FutilityMargins[depth][(ss-1)->futMc] >= beta && abs(beta) < VALUE_MATE_IN_MAX_PLY && pos.non_pawn_material(pos.side_to_move())) - return eval - FutilityMargins[depth][0]; + return eval - FutilityMargins[depth][(ss-1)->futMc]; // Step 8. Null move search with verification search (is omitted in PV nodes) if ( !PvNode @@ -852,6 +852,8 @@ split_point_start: // At split points actual search starts from here // Update current move (this must be done after singular extension search) newDepth = depth - ONE_PLY + ext; + ss->futMc = 0; + // Step 13. Futility pruning (is omitted in PV nodes) if ( !PvNode && !captureOrPromotion @@ -874,6 +876,8 @@ split_point_start: // At split points actual search starts from here // Value based pruning // We illogically ignore reduction condition depth >= 3*ONE_PLY for predicted depth, // but fixing this made program slightly weaker. + ss->futMc = moveCount; + Depth predictedDepth = newDepth - reduction(depth, moveCount); futilityValue = ss->staticEval + ss->evalMargin + futility_margin(predictedDepth, moveCount) + Gain[pos.piece_moved(move)][to_sq(move)]; diff --git a/src/search.h b/src/search.h index bd210237..2300c762 100644 --- a/src/search.h +++ b/src/search.h @@ -47,6 +47,7 @@ struct Stack { Value staticEval; Value evalMargin; int skipNullMove; + int futMc; };