X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=3f89c0400c24d2f54e9aee6fc52eac7a5f5cd56c;hp=e1ca7964922610a7691d9b56543e243ce82d0830;hb=e7cfa5d020efb5a0ad2521afc7b886f3b2d3e6b3;hpb=2af2c67650c4ac2531e6ab2753830f91c0999876 diff --git a/src/search.cpp b/src/search.cpp index e1ca7964..3f89c040 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -71,16 +71,6 @@ namespace { return Value((175 - 50 * improving) * d / ONE_PLY); } - // Margin for pruning capturing moves: almost linear in depth - constexpr int CapturePruneMargin[] = { 0, - 1 * PawnValueEg * 1055 / 1000, - 2 * PawnValueEg * 1042 / 1000, - 3 * PawnValueEg * 963 / 1000, - 4 * PawnValueEg * 1038 / 1000, - 5 * PawnValueEg * 950 / 1000, - 6 * PawnValueEg * 930 / 1000 - }; - // Futility and reductions lookup tables, initialized at startup int FutilityMoveCounts[2][16]; // [improving][depth] int Reductions[2][2][64][64]; // [pv][improving][depth][moveNumber] @@ -680,7 +670,7 @@ namespace { { tte->save(posKey, value_to_tt(value, ss->ply), b, std::min(DEPTH_MAX - ONE_PLY, depth + 6 * ONE_PLY), - MOVE_NONE, VALUE_NONE, TT.generation()); + MOVE_NONE, VALUE_NONE); return value; } @@ -721,7 +711,7 @@ namespace { : -(ss-1)->staticEval + 2 * Eval::Tempo; tte->save(posKey, VALUE_NONE, BOUND_NONE, DEPTH_NONE, MOVE_NONE, - ss->staticEval, TT.generation()); + ss->staticEval); } // Step 7. Razoring (~2 Elo) @@ -957,13 +947,11 @@ moves_loop: // When in check, search starts from here continue; // Prune moves with negative SEE (~10 Elo) - if ( lmrDepth < 8 - && !pos.see_ge(move, Value(-35 * lmrDepth * lmrDepth))) + if (!pos.see_ge(move, Value(-29 * lmrDepth * lmrDepth))) continue; } - else if ( depth < 7 * ONE_PLY // (~20 Elo) - && !extension - && !pos.see_ge(move, -Value(CapturePruneMargin[depth / ONE_PLY]))) + else if ( !extension // (~20 Elo) + && !pos.see_ge(move, -PawnValueEg * (depth / ONE_PLY))) continue; } @@ -1187,7 +1175,7 @@ moves_loop: // When in check, search starts from here tte->save(posKey, value_to_tt(bestValue, ss->ply), bestValue >= beta ? BOUND_LOWER : PvNode && bestMove ? BOUND_EXACT : BOUND_UPPER, - depth, bestMove, ss->staticEval, TT.generation()); + depth, bestMove, ss->staticEval); assert(bestValue > -VALUE_INFINITE && bestValue < VALUE_INFINITE); @@ -1284,7 +1272,7 @@ moves_loop: // When in check, search starts from here { if (!ttHit) tte->save(posKey, value_to_tt(bestValue, ss->ply), BOUND_LOWER, - DEPTH_NONE, MOVE_NONE, ss->staticEval, TT.generation()); + DEPTH_NONE, MOVE_NONE, ss->staticEval); return bestValue; } @@ -1383,7 +1371,7 @@ moves_loop: // When in check, search starts from here else // Fail high { tte->save(posKey, value_to_tt(value, ss->ply), BOUND_LOWER, - ttDepth, move, ss->staticEval, TT.generation()); + ttDepth, move, ss->staticEval); return value; } @@ -1398,7 +1386,7 @@ moves_loop: // When in check, search starts from here tte->save(posKey, value_to_tt(bestValue, ss->ply), PvNode && bestValue > oldAlpha ? BOUND_EXACT : BOUND_UPPER, - ttDepth, bestMove, ss->staticEval, TT.generation()); + ttDepth, bestMove, ss->staticEval); assert(bestValue > -VALUE_INFINITE && bestValue < VALUE_INFINITE);