]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Increase LMR limit by one ply
[stockfish] / src / search.cpp
index 6e440702c9d69fc4ff26efa8fa982b2a565ecc1f..3862e27b74a1c4d6123441616cbcefa428a0f201 100644 (file)
@@ -903,8 +903,9 @@ namespace {
     }
 
     // Step 9. ProbCut (is omitted in PV nodes)
-    // If we have a good capture that raises the score well above beta and a reduced
-    // search confirms the score then we can (almost) safely prune the previous move.
+    // If we have a very good capture (i.e. SEE > seeValues[captured_piece_type])
+    // and a reduced search returns a value much above beta, we can (almost) safely
+    // prune the previous move.
     if (   !PvNode
         &&  depth >= RazorDepth + ONE_PLY
         && !inCheck
@@ -917,7 +918,7 @@ namespace {
 
         assert(rdepth >= ONE_PLY);
 
-        MovePicker mp(pos, ttMove, H, Max(rbeta - refinedValue, VALUE_ZERO));
+        MovePicker mp(pos, ttMove, H, Position::see_value(pos.captured_piece_type()));
         pinned = pos.pinned_pieces(pos.side_to_move());
 
         while ((move = mp.get_next_move()) != MOVE_NONE)
@@ -1133,7 +1134,7 @@ split_point_start: // At split points actual search starts from here
           bool doFullDepthSearch = true;
           alpha = SpNode ? sp->alpha : alpha;
 
-          if (    depth >= 3 * ONE_PLY
+          if (    depth > 3 * ONE_PLY
               && !captureOrPromotion
               && !dangerous
               && !move_is_castle(move)
@@ -1371,8 +1372,6 @@ split_point_start: // At split points actual search starts from here
         else
             ss->eval = bestValue = evaluate(pos, evalMargin);
 
-        update_gains(pos, (ss-1)->currentMove, (ss-1)->eval, ss->eval);
-
         // Stand pat. Return immediately if static value is at least beta
         if (bestValue >= beta)
         {