LMR dynamic reduction
authorMarco Costalba <mcostalba@gmail.com>
Fri, 20 Mar 2009 11:33:30 +0000 (12:33 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 22 Mar 2009 22:53:22 +0000 (23:53 +0100)
Reduce of two plies near the leafs and when we still
have enough depth to go so to limit horizon effects.

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

index d9fe8d2..6a7fd4e 100644 (file)
@@ -141,8 +141,8 @@ Move MovePicker::get_next_move() {
             assert(move_is_ok(mateKiller));
             if (move_is_legal(pos, mateKiller, pinned))
                 return mateKiller;
-       }
-       break;
+        }
+        break;
 
     case PH_GOOD_CAPTURES:
         numOfMoves = generate_captures(pos, moves);
index 8d6ddb8..295ef63 100644 (file)
@@ -1332,8 +1332,11 @@ namespace {
           && !move_is_castle(move)
           && !move_is_killer(move, ss[ply]))
       {
-          ss[ply].reduction = OnePly;
-          value = -search(pos, ss, -(beta-1), newDepth-OnePly, ply+1, true, threadID);
+          // LMR dynamic reduction
+          Depth R = (moveCount >= 3 * LMRNonPVMoves && depth >= 7*OnePly ? 2*OnePly : OnePly);
+
+          ss[ply].reduction = R;
+          value = -search(pos, ss, -(beta-1), newDepth-R, ply+1, true, threadID);
       }
       else
         value = beta; // Just to trigger next condition