]> git.sesse.net Git - stockfish/blobdiff - src/timeman.cpp
Rewrite unstoppable pawns evaluation
[stockfish] / src / timeman.cpp
index bdcaee84c5f4ce10bc75198993ed6c6d315d0d30..8bda4f25abca4b667dbf08cbef6e5832855af632 100644 (file)
@@ -17,8 +17,8 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include <cmath>
 #include <algorithm>
+#include <cmath>
 
 #include "search.h"
 #include "timeman.h"
@@ -110,7 +110,12 @@ void TimeManager::init(const Search::LimitsType& limits, int currentPly, Color u
 
   // Initialize to maximum values but unstablePVExtraTime that is reset
   unstablePVExtraTime = 0;
-  optimumSearchTime = maximumSearchTime = limits.time[us];
+  optimumSearchTime = maximumSearchTime = limits.time[us]; // In msec
+
+  // Scale down emergencyBaseTime if we are under very high time pressure to
+  // avoid moving immediately and so blundering.
+  if (maximumSearchTime)
+      emergencyBaseTime /= std::max(emergencyBaseTime * 100 / maximumSearchTime, 1);
 
   // We calculate optimum time usage for different hypothetic "moves to go"-values and choose the
   // minimum of calculated search time values. Usually the greatest hypMTG gives the minimum values.
@@ -150,7 +155,7 @@ namespace {
     int thisMoveImportance = move_importance(currentPly) * slowMover / 100;
     int otherMovesImportance = 0;
 
-    for (int i = 1; i < movesToGo; i++)
+    for (int i = 1; i < movesToGo; ++i)
         otherMovesImportance += move_importance(currentPly + 2 * i);
 
     float ratio1 = (TMaxRatio * thisMoveImportance) / float(TMaxRatio * thisMoveImportance + otherMovesImportance);