1
0
Fork 0

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
Marco Costalba 2010-08-03 11:10:16 +02:00
parent 977f6349a9
commit dda53e831d
3 changed files with 15 additions and 14 deletions

View File

@ -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.

View File

@ -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);
}

View File

@ -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)