]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Fix (zugzwang) verification to be shallower then null search
[stockfish] / src / search.cpp
index 8313381a4ccaec06ef891e2631d07b85fdc43f68..0ef2f600e1fd3b3a96db1402e52576309dd5de64 100644 (file)
@@ -738,8 +738,7 @@ namespace {
         // Print final search statistics
         cout << "info nodes " << TM.nodes_searched()
              << " nps " << nps()
-             << " time " << current_search_time()
-             << " hashfull " << TT.full() << endl;
+             << " time " << current_search_time() << endl;
 
     // Print the best move and the ponder move to the standard output
     if (pv[0] == MOVE_NONE)
@@ -1204,12 +1203,12 @@ namespace {
             if (nullValue >= value_mate_in(PLY_MAX))
                 nullValue = beta;
 
-            // Do zugzwang verification search at high depths
             if (depth < 6 * OnePly)
                 return nullValue;
 
+            // Do verification search at high depths
             ss->skipNullMove = true;
-            Value v = search<NonPV>(pos, ss, alpha, beta, depth-5*OnePly, ply);
+            Value v = search<NonPV>(pos, ss, alpha, beta, depth-R*OnePly, ply);
             ss->skipNullMove = false;
 
             if (v >= beta)
@@ -1280,9 +1279,10 @@ namespace {
       // Step 11. Decide the new search depth
       ext = extension<PvNode>(pos, move, captureOrPromotion, moveIsCheck, singleEvasion, mateThreat, &dangerous);
 
-      // Singular extension search. We extend the TT move if its value is much better than
-      // its siblings. To verify this we do a reduced search on all the other moves but the
-      // ttMove, if result is lower then ttValue minus a margin then we extend ttMove.
+      // Singular extension search. If all moves but one fail low on a search of (alpha-s, beta-s),
+      // and just one fails high on (alpha, beta), then that move is singular and should be extended.
+      // To verify this we do a reduced search on all the other moves but the ttMove, if result is
+      // lower then ttValue minus a margin then we extend ttMove.
       if (   singularExtensionNode
           && move == tte->move()
           && ext < OnePly)
@@ -1297,7 +1297,7 @@ namespace {
               Value v = search<NonPV>(pos, ss, b - 1, b, depth / 2, ply);
               ss->skipNullMove = false;
               ss->excludedMove = MOVE_NONE;
-              if (v < ttValue - SingularExtensionMargin)
+              if (v < b)
                   ext = OnePly;
           }
       }
@@ -2153,7 +2153,7 @@ namespace {
             dbg_print_hit_rate();
 
         cout << "info nodes " << TM.nodes_searched() << " nps " << nps()
-             << " time " << t << " hashfull " << TT.full() << endl;
+             << " time " << t << endl;
     }
 
     // Should we stop the search?