]> git.sesse.net Git - stockfish/blobdiff - src/timeman.cpp
Introduce elapsed_time()
[stockfish] / src / timeman.cpp
index c3f66d6cadbfe10f70f93ef3f4ce7148d066c625..46ef75f4221335de0b7d2e0ebd9c66c651ec3f24 100644 (file)
@@ -1,7 +1,7 @@
 /*
   Stockfish, a UCI chess playing engine derived from Glaurung 2.1
   Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
-  Copyright (C) 2008-2014 Marco Costalba, Joona Kiiski, Tord Romstad
+  Copyright (C) 2008-2015 Marco Costalba, Joona Kiiski, Tord Romstad
 
   Stockfish is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -63,7 +63,7 @@ namespace {
     double ratio1 = (TMaxRatio * moveImportance) / (TMaxRatio * moveImportance + otherMovesImportance);
     double ratio2 = (moveImportance + TStealRatio * otherMovesImportance) / (moveImportance + otherMovesImportance);
 
-    return myTime * std::min(ratio1, ratio2);
+    return int(myTime * std::min(ratio1, ratio2)); // Intel C++ asks an explicit cast
   }
 
 } // namespace
@@ -78,15 +78,15 @@ namespace {
 ///  inc >  0 && movestogo == 0 means: x basetime + z increment
 ///  inc >  0 && movestogo != 0 means: x moves in y minutes + z increment
 
-void TimeManager::init(const Search::LimitsType& limits, Color us, int ply)
+void TimeManager::init(const Search::LimitsType& limits, Color us, int ply, TimePoint now)
 {
   int minThinkingTime = Options["Minimum Thinking Time"];
   int moveOverhead    = Options["Move Overhead"];
   int slowMover       = Options["Slow Mover"];
 
-  // Initialize unstablePvFactor to 1 and search times to maximum values
+  start = now;
   unstablePvFactor = 1;
-  optimumSearchTime = maximumSearchTime = std::max(limits.time[us], minThinkingTime);
+  optimumTime = maximumTime = std::max(limits.time[us], minThinkingTime);
 
   const int MaxMTG = limits.movestogo ? std::min(limits.movestogo, MoveHorizon) : MoveHorizon;
 
@@ -105,12 +105,12 @@ void TimeManager::init(const Search::LimitsType& limits, Color us, int ply)
       int t1 = minThinkingTime + remaining<OptimumTime>(hypMyTime, hypMTG, ply, slowMover);
       int t2 = minThinkingTime + remaining<MaxTime    >(hypMyTime, hypMTG, ply, slowMover);
 
-      optimumSearchTime = std::min(t1, optimumSearchTime);
-      maximumSearchTime = std::min(t2, maximumSearchTime);
+      optimumTime = std::min(t1, optimumTime);
+      maximumTime = std::min(t2, maximumTime);
   }
 
   if (Options["Ponder"])
-      optimumSearchTime += optimumSearchTime / 4;
+      optimumTime += optimumTime / 4;
 
-  optimumSearchTime = std::min(optimumSearchTime, maximumSearchTime);
+  optimumTime = std::min(optimumTime, maximumTime);
 }