Let LMR at root be independent of MultiPV value
authorMarco Costalba <mcostalba@gmail.com>
Sat, 8 Aug 2009 16:04:01 +0000 (17:04 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 8 Aug 2009 16:30:46 +0000 (17:30 +0100)
Current formula enable LMR when

i + MultiPV >= LMRPVMoves

It means that, for instance, if MultiPV == 1 then LMR
will be started to be considered at move i = LMRPVMoves - 1,
while if MultiPV == 3 then it will start before,
at move i = LMRPVMoves - 3.

With this patch the formula becomes

i >= MultiPV + LMRPVMoves - 2

So that LMR will always start after LMRPVMoves - 1 moves
from the last PV move.

No functional change when MultiPV == 1

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/search.cpp

index 359c99c66aba1df979d60c47f4436f02db076a58..dbbfa022a8920f246f42ed417dca591edc621f50 100644 (file)
@@ -894,7 +894,7 @@ namespace {
         // Decide search depth for this move
         bool moveIsCapture = pos.move_is_capture(move);
         bool dangerous;
-        ext = extension(pos, move, true, pos.move_is_capture(move), pos.move_is_check(move), false, false, &dangerous);
+        ext = extension(pos, move, true, moveIsCapture, pos.move_is_check(move), false, false, &dangerous);
         newDepth = (Iteration - 2) * OnePly + ext + InitialDepth;
 
         // Make the move, and search it
@@ -918,8 +918,8 @@ namespace {
         }
         else
         {
-            if (newDepth >= 3*OnePly
-                && i + MultiPV >= LMRPVMoves
+            if (   newDepth >= 3*OnePly
+                && i >= MultiPV + LMRPVMoves - 2 // Remove -2 and decrease LMRPVMoves instead ?
                 && !dangerous
                 && !moveIsCapture
                 && !move_is_promotion(move)
@@ -927,10 +927,10 @@ namespace {
             {
                 ss[0].reduction = OnePly;
                 value = -search(pos, ss, -alpha, newDepth-OnePly, 1, true, 0);
-            }
-            else
+            } else
                 value = alpha + 1; // Just to trigger next condition
-            if(value > alpha)
+
+            if (value > alpha)
             {
                 value = -search(pos, ss, -alpha, newDepth, 1, true, 0);
                 if (value > alpha)