]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Remove 4*IncrementalFutilityMargin from futilityValue
[stockfish] / src / search.cpp
index b420fb905203770005d92c9725b27ae99c4b938f..faac36ce966727734c0109bf42fda9ef20dac9c1 100644 (file)
@@ -1388,6 +1388,9 @@ namespace {
     if (tte && (tte->type() & VALUE_TYPE_EVAL))
         futilityValue = value_from_tt(tte->value(), ply) + FutilityMargins[int(depth) - 2];
 
+    // Move count pruning limit
+    const int MCLimit = 3 + (1 << (3*int(depth)/8));
+
     // Loop through all legal moves until no moves remain or a beta cutoff
     // occurs.
     while (   bestValue < beta
@@ -1412,8 +1415,55 @@ namespace {
           && !captureOrPromotion
           &&  move != ttMove)
       {
+          //std::cout << std::endl;
+          //for (int d = 2; d < 14; d++)
+          //    std::cout << d << ", " << 64*(1+bitScanReverse32(d*d)) << std::endl;
+
+          //std::cout << std::endl;
+/*
+            64*(1+bitScanReverse32(d*d))
+
+            2 -> 256 -  256
+            3 -> 288 -  320
+            4 -> 512 -  384
+            5 -> 544 -  384
+            6 -> 592 -  448
+            7 -> 624 -  448
+            8 -> 672 -  512
+            9 -> 704 -  512
+           10 -> 832 -  512
+           11 -> 864 -  512
+           12 -> 928 -  576
+           13 -> 960 -  576
+
+            300 + 2*(1 << (3*d/4))
+
+            2 -> 256 -  304
+            3 -> 288 -  308
+            4 -> 512 -  316
+            5 -> 544 -  316
+            6 -> 592 -  332
+            7 -> 624 -  364
+            8 -> 672 -  428
+            9 -> 704 -  428
+           10 -> 832 -  556
+           11 -> 864 -  812
+           12 -> 928 -  1324
+           13 -> 960 -  1324
+
+
+            3 + (1 << (3*int(depth)/8))
+
+            1 * onePly - > moveCount >= 4
+            2 * onePly - > moveCount >= 5
+            3 * onePly - > moveCount >= 7
+            4 * onePly - > moveCount >= 11
+            5 * onePly - > moveCount >= 11
+            6 * onePly - > moveCount >= 19
+            7 * onePly - > moveCount >= 35
+*/
           // History pruning. See ok_to_prune() definition
-          if (   moveCount >= 2 + int(depth)
+          if (   moveCount >= MCLimit
               && ok_to_prune(pos, move, ss[ply].threatMove, depth)
               && bestValue > value_mated_in(PLY_MAX))
               continue;
@@ -1423,8 +1473,7 @@ namespace {
           {
               if (futilityValue == VALUE_NONE)
                   futilityValue =  evaluate(pos, ei, threadID)
-                                 + FutilityMargins[int(depth) - 2]
-                                 + 4*IncrementalFutilityMargin;
+                                 + 64*(1+bitScanReverse32(int(depth) * int(depth)));
 
               futilityValueScaled = futilityValue - moveCount * IncrementalFutilityMargin;