Introduce TimeManager class
Firt step in unifying all time management under a single umbrella. Just introduced the class without even member data. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>sf_2.3.1_base
parent
977f6349a9
commit
dda53e831d
|
@ -255,6 +255,7 @@ namespace {
|
|||
int MaximumSearchTime, ExtraSearchTime, ExactMaxTime;
|
||||
bool UseTimeManagement, InfiniteSearch, PonderSearch, StopOnPonderhit;
|
||||
bool FirstRootMove, AbortSearch, Quit, AspirationFailLow;
|
||||
TimeManager TimeMgr;
|
||||
|
||||
// Log file
|
||||
bool UseLogFile;
|
||||
|
@ -473,16 +474,8 @@ bool think(const Position& pos, bool infinite, bool ponder, int time[], int incr
|
|||
int myTime = time[pos.side_to_move()];
|
||||
int myIncrement = increment[pos.side_to_move()];
|
||||
if (UseTimeManagement)
|
||||
{
|
||||
get_search_times(myTime, myIncrement, movesToGo, pos.startpos_ply_counter(),
|
||||
&OptimumSearchTime, &MaximumSearchTime);
|
||||
|
||||
if (get_option_value_bool("Ponder"))
|
||||
{
|
||||
OptimumSearchTime += OptimumSearchTime / 4;
|
||||
OptimumSearchTime = Min(OptimumSearchTime, MaximumSearchTime);
|
||||
}
|
||||
}
|
||||
TimeMgr.update(myTime, myIncrement, movesToGo, pos.startpos_ply_counter(),
|
||||
&OptimumSearchTime, &MaximumSearchTime);
|
||||
|
||||
// Set best NodesBetweenPolls interval to avoid lagging under
|
||||
// heavy time pressure.
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <cmath>
|
||||
|
||||
#include "misc.h"
|
||||
#include "timeman.h"
|
||||
#include "ucioption.h"
|
||||
|
||||
////
|
||||
|
@ -87,8 +88,8 @@ namespace {
|
|||
//// Functions
|
||||
////
|
||||
|
||||
void get_search_times(int myTime, int myInc, int movesToGo, int currentPly,
|
||||
int* optimumSearchTime, int* maximumSearchTime)
|
||||
void TimeManager::update(int myTime, int myInc, int movesToGo, int currentPly,
|
||||
int* optimumSearchTime, int* maximumSearchTime)
|
||||
{
|
||||
/* We support four different kind of time controls:
|
||||
|
||||
|
@ -130,6 +131,9 @@ void get_search_times(int myTime, int myInc, int movesToGo, int currentPly,
|
|||
*maximumSearchTime = Min(*maximumSearchTime, aTime);
|
||||
}
|
||||
|
||||
if (get_option_value_bool("Ponder"))
|
||||
*optimumSearchTime += *optimumSearchTime / 4;
|
||||
|
||||
// Make sure that maxSearchTime is not over absoluteMaxSearchTime
|
||||
*optimumSearchTime = Min(*optimumSearchTime, *maximumSearchTime);
|
||||
}
|
||||
|
|
|
@ -25,7 +25,11 @@
|
|||
//// Prototypes
|
||||
////
|
||||
|
||||
void get_search_times(int myTime, int myInc, int movesToGo, int currentPly,
|
||||
int* optimumSearchTime, int* maximumSearchTime);
|
||||
class TimeManager {
|
||||
public:
|
||||
|
||||
void update(int myTime, int myInc, int movesToGo, int currentPly,
|
||||
int* optimumSearchTime, int* maximumSearchTime);
|
||||
};
|
||||
|
||||
#endif // !defined(TIMEMAN_H_INCLUDED)
|
||||
|
|
Loading…
Reference in New Issue