Cap evaluation based null move extra reduction to three plies
authorJoona Kiiski <joona.kiiski@gmail.com>
Thu, 25 Sep 2014 19:42:25 +0000 (20:42 +0100)
committerJoona Kiiski <joona.kiiski@gmail.com>
Thu, 25 Sep 2014 19:42:25 +0000 (20:42 +0100)
It's a zero elo patch, and a reasonable safeguard against uncontrolled extreme reductions.

STC:
ELO: -0.08 +-2.0 (95%) LOS: 46.9%
Total: 40000 W: 6728 L: 6737 D: 26535

LTC:
ELO: -0.14 +-1.8 (95%) LOS: 44.0%
Total: 40000 W: 5557 L: 5573 D: 28870

Bench: 7201830

src/search.cpp

index 05e3de5..6215b08 100644 (file)
@@ -567,8 +567,7 @@ namespace {
         // Null move dynamic reduction based on depth and value
         Depth R =  3 * ONE_PLY
                  + depth / 4
-                 + (abs(beta) < VALUE_KNOWN_WIN ? int(eval - beta) / PawnValueMg * ONE_PLY
-                                                : DEPTH_ZERO);
+                 + std::min(int(eval - beta) / PawnValueMg, 3) * ONE_PLY;
 
         pos.do_null_move(st);
         (ss+1)->skipNullMove = true;