X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftimeman.cpp;h=702f0f31eafb8f7d751552078bf12b18a889e6f9;hp=9accfbb346a6e2ca77b960378a29a496c3ceeb4f;hb=77341f67f30456dc456177062309ad5e73e2e1a4;hpb=c9dcda6ac488c0058ebd567e1f52e30b8cd0db20 diff --git a/src/timeman.cpp b/src/timeman.cpp index 9accfbb3..702f0f31 100644 --- a/src/timeman.cpp +++ b/src/timeman.cpp @@ -18,6 +18,7 @@ */ #include +#include #include #include "search.h" @@ -44,7 +45,7 @@ namespace { double move_importance(int ply) { - return pow((1 + exp((ply - xshift) / xscale)), -skewfactor); + return pow((1 + exp((ply - xshift) / xscale)), -skewfactor) + DBL_MIN; // Ensure non-zero } @@ -65,7 +66,7 @@ void TimeManager::pv_instability(double bestMoveChanges) { void TimeManager::init(const Search::LimitsType& limits, int currentPly, Color us) { - /* We support four different kind of time controls: + /* We support four different kinds of time controls: increment == 0 && movesToGo == 0 means: x basetime [sudden death!] increment == 0 && movesToGo != 0 means: x moves in y minutes @@ -91,7 +92,7 @@ void TimeManager::init(const Search::LimitsType& limits, int currentPly, Color u // Initialize all to maximum values but unstablePVExtraTime that is reset unstablePVExtraTime = 0; - optimumSearchTime = maximumSearchTime = limits.time[us]; + optimumSearchTime = maximumSearchTime = std::max(limits.time[us], minThinkingTime); // We calculate optimum time usage for different hypothetical "moves to go"-values and choose the // minimum of calculated search time values. Usually the greatest hypMTG gives the minimum values.