]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Relax time constraints
[stockfish] / src / search.cpp
index c5d6e36bf153649cb788a3c2ea87b435a030029d..f91852cd004d599968b069a2d8065db0976762b5 100644 (file)
@@ -673,7 +673,7 @@ namespace {
         // Stop search if most of MaxSearchTime is consumed at the end of the
         // iteration.  We probably don't have enough time to search the first
         // move at the next iteration anyway.
-        if(current_search_time() > ((MaxSearchTime + ExtraSearchTime)*80) / 128)
+        if(current_search_time() > ((MaxSearchTime + ExtraSearchTime)*90) / 128)
           stopSearch = true;
 
         if(stopSearch) {
@@ -1996,26 +1996,35 @@ namespace {
 
   Depth extension(const Position &pos, Move m, bool pvNode,
                   bool check, bool singleReply, bool mateThreat) {
+
     Depth result = Depth(0);
 
-    if(check)
-      result += CheckExtension[pvNode];
-    if(singleReply)
-      result += SingleReplyExtension[pvNode];
-    if(pos.move_is_pawn_push_to_7th(m))
-      result += PawnPushTo7thExtension[pvNode];
-    if(pos.move_is_passed_pawn_push(m))
-      result += PassedPawnExtension[pvNode];
-    if(mateThreat)
-      result += MateThreatExtension[pvNode];
-    if(pos.midgame_value_of_piece_on(move_to(m)) >= RookValueMidgame
-       && (pos.non_pawn_material(WHITE) + pos.non_pawn_material(BLACK)
-           - pos.midgame_value_of_piece_on(move_to(m)) == Value(0))
-       && !move_promotion(m))
-      result += PawnEndgameExtension[pvNode];
-    if(pvNode && pos.move_is_capture(m)
-       && pos.type_of_piece_on(move_to(m)) != PAWN && pos.see(m) >= 0)
-      result += OnePly/2;
+    if (check)
+        result += CheckExtension[pvNode];
+
+    if (singleReply)
+        result += SingleReplyExtension[pvNode];
+
+    if (pos.move_is_pawn_push_to_7th(m))
+        result += PawnPushTo7thExtension[pvNode];
+
+    if (pos.move_is_passed_pawn_push(m))
+        result += PassedPawnExtension[pvNode];
+
+    if (mateThreat)
+        result += MateThreatExtension[pvNode];
+
+    if (   pos.midgame_value_of_piece_on(move_to(m)) >= RookValueMidgame\r
+        && (  pos.non_pawn_material(WHITE) + pos.non_pawn_material(BLACK)\r
+            - pos.midgame_value_of_piece_on(move_to(m)) == Value(0))\r
+        && !move_promotion(m))
+        result += PawnEndgameExtension[pvNode];
+    
+    if (   pvNode
+        && pos.move_is_capture(m)
+        && pos.type_of_piece_on(move_to(m)) != PAWN
+        && pos.see(m) >= 0)
+        result += OnePly/2;
 
     return Min(result, OnePly);
   }
@@ -2218,7 +2227,7 @@ namespace {
     bool overTime =     t > AbsoluteMaxSearchTime
                      || (RootMoveNumber == 1 && t > MaxSearchTime + ExtraSearchTime)
                      || (  !FailHigh && !fail_high_ply_1() && !Problem
-                         && t > 6*(MaxSearchTime + ExtraSearchTime));
+                         && t > 10*(MaxSearchTime + ExtraSearchTime));
 
     if (   (Iteration >= 2 && (!InfiniteSearch && overTime))
         || (ExactMaxTime && t >= ExactMaxTime)