mirror of
https://github.com/sockspls/badfish
synced 2025-07-12 03:59:15 +00:00
Rename of TimeMgr and friends
More natural naming IMO. No functional change.
This commit is contained in:
parent
5d1b92e8f9
commit
df722521ba
3 changed files with 21 additions and 21 deletions
|
@ -129,7 +129,7 @@ namespace {
|
||||||
};
|
};
|
||||||
|
|
||||||
size_t PVIdx;
|
size_t PVIdx;
|
||||||
TimeManager TimeMgr;
|
TimeManagement Time;
|
||||||
EasyMoveManager EasyMove;
|
EasyMoveManager EasyMove;
|
||||||
double BestMoveChanges;
|
double BestMoveChanges;
|
||||||
Value DrawValue[COLOR_NB];
|
Value DrawValue[COLOR_NB];
|
||||||
|
@ -218,7 +218,7 @@ template uint64_t Search::perft<true>(Position& pos, Depth depth);
|
||||||
|
|
||||||
void Search::think() {
|
void Search::think() {
|
||||||
|
|
||||||
TimeMgr.init(Limits, RootPos.side_to_move(), RootPos.game_ply(), now());
|
Time.init(Limits, RootPos.side_to_move(), RootPos.game_ply(), now());
|
||||||
|
|
||||||
int contempt = Options["Contempt"] * PawnValueEg / 100; // From centipawns
|
int contempt = Options["Contempt"] * PawnValueEg / 100; // From centipawns
|
||||||
DrawValue[ RootPos.side_to_move()] = VALUE_DRAW - Value(contempt);
|
DrawValue[ RootPos.side_to_move()] = VALUE_DRAW - Value(contempt);
|
||||||
|
@ -401,7 +401,7 @@ namespace {
|
||||||
// the UI) before a re-search.
|
// the UI) before a re-search.
|
||||||
if ( multiPV == 1
|
if ( multiPV == 1
|
||||||
&& (bestValue <= alpha || bestValue >= beta)
|
&& (bestValue <= alpha || bestValue >= beta)
|
||||||
&& TimeMgr.elapsed_time() > 3000)
|
&& Time.elapsed() > 3000)
|
||||||
sync_cout << UCI::pv(pos, depth, alpha, beta) << sync_endl;
|
sync_cout << UCI::pv(pos, depth, alpha, beta) << sync_endl;
|
||||||
|
|
||||||
// In case of failing low/high increase aspiration window and
|
// In case of failing low/high increase aspiration window and
|
||||||
|
@ -432,9 +432,9 @@ namespace {
|
||||||
|
|
||||||
if (Signals.stop)
|
if (Signals.stop)
|
||||||
sync_cout << "info nodes " << RootPos.nodes_searched()
|
sync_cout << "info nodes " << RootPos.nodes_searched()
|
||||||
<< " time " << TimeMgr.elapsed_time() << sync_endl;
|
<< " time " << Time.elapsed() << sync_endl;
|
||||||
|
|
||||||
else if (PVIdx + 1 == multiPV || TimeMgr.elapsed_time() > 3000)
|
else if (PVIdx + 1 == multiPV || Time.elapsed() > 3000)
|
||||||
sync_cout << UCI::pv(pos, depth, alpha, beta) << sync_endl;
|
sync_cout << UCI::pv(pos, depth, alpha, beta) << sync_endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -455,16 +455,16 @@ namespace {
|
||||||
{
|
{
|
||||||
// Take some extra time if the best move has changed
|
// Take some extra time if the best move has changed
|
||||||
if (depth > 4 * ONE_PLY && multiPV == 1)
|
if (depth > 4 * ONE_PLY && multiPV == 1)
|
||||||
TimeMgr.pv_instability(BestMoveChanges);
|
Time.pv_instability(BestMoveChanges);
|
||||||
|
|
||||||
// Stop the search if only one legal move is available or all
|
// Stop the search if only one legal move is available or all
|
||||||
// of the available time has been used or we matched an easyMove
|
// of the available time has been used or we matched an easyMove
|
||||||
// from the previous search and just did a fast verification.
|
// from the previous search and just did a fast verification.
|
||||||
if ( RootMoves.size() == 1
|
if ( RootMoves.size() == 1
|
||||||
|| TimeMgr.elapsed_time() > TimeMgr.available_time()
|
|| Time.elapsed() > Time.available()
|
||||||
|| ( RootMoves[0].pv[0] == easyMove
|
|| ( RootMoves[0].pv[0] == easyMove
|
||||||
&& BestMoveChanges < 0.03
|
&& BestMoveChanges < 0.03
|
||||||
&& TimeMgr.elapsed_time() > TimeMgr.available_time() / 10))
|
&& Time.elapsed() > Time.available() / 10))
|
||||||
{
|
{
|
||||||
// If we are allowed to ponder do not stop the search now but
|
// If we are allowed to ponder do not stop the search now but
|
||||||
// keep pondering until the GUI sends "ponderhit" or "stop".
|
// keep pondering until the GUI sends "ponderhit" or "stop".
|
||||||
|
@ -484,7 +484,7 @@ namespace {
|
||||||
|
|
||||||
// Clear any candidate easy move that wasn't stable for the last search
|
// Clear any candidate easy move that wasn't stable for the last search
|
||||||
// iterations; the second condition prevents consecutive fast moves.
|
// iterations; the second condition prevents consecutive fast moves.
|
||||||
if (EasyMove.stableCnt < 6 || TimeMgr.elapsed_time() < TimeMgr.available_time())
|
if (EasyMove.stableCnt < 6 || Time.elapsed() < Time.available())
|
||||||
EasyMove.clear();
|
EasyMove.clear();
|
||||||
|
|
||||||
// If skill level is enabled, swap best PV line with the sub-optimal one
|
// If skill level is enabled, swap best PV line with the sub-optimal one
|
||||||
|
@ -832,7 +832,7 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
{
|
{
|
||||||
Signals.firstRootMove = (moveCount == 1);
|
Signals.firstRootMove = (moveCount == 1);
|
||||||
|
|
||||||
if (thisThread == Threads.main() && TimeMgr.elapsed_time() > 3000)
|
if (thisThread == Threads.main() && Time.elapsed() > 3000)
|
||||||
sync_cout << "info depth " << depth / ONE_PLY
|
sync_cout << "info depth " << depth / ONE_PLY
|
||||||
<< " currmove " << UCI::move(move, pos.is_chess960())
|
<< " currmove " << UCI::move(move, pos.is_chess960())
|
||||||
<< " currmovenumber " << moveCount + PVIdx << sync_endl;
|
<< " currmovenumber " << moveCount + PVIdx << sync_endl;
|
||||||
|
@ -1481,7 +1481,7 @@ moves_loop: // When in check and at SpNode search starts from here
|
||||||
string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) {
|
string UCI::pv(const Position& pos, Depth depth, Value alpha, Value beta) {
|
||||||
|
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
TimePoint elapsed = TimeMgr.elapsed_time() + 1;
|
int elapsed = Time.elapsed() + 1;
|
||||||
size_t multiPV = std::min((size_t)Options["MultiPV"], RootMoves.size());
|
size_t multiPV = std::min((size_t)Options["MultiPV"], RootMoves.size());
|
||||||
int selDepth = 0;
|
int selDepth = 0;
|
||||||
|
|
||||||
|
@ -1725,7 +1725,7 @@ void Thread::idle_loop() {
|
||||||
void check_time() {
|
void check_time() {
|
||||||
|
|
||||||
static TimePoint lastInfoTime = now();
|
static TimePoint lastInfoTime = now();
|
||||||
TimePoint elapsed = TimeMgr.elapsed_time();
|
int elapsed = Time.elapsed();
|
||||||
|
|
||||||
if (now() - lastInfoTime >= 1000)
|
if (now() - lastInfoTime >= 1000)
|
||||||
{
|
{
|
||||||
|
@ -1741,10 +1741,10 @@ void check_time() {
|
||||||
{
|
{
|
||||||
bool stillAtFirstMove = Signals.firstRootMove
|
bool stillAtFirstMove = Signals.firstRootMove
|
||||||
&& !Signals.failedLowAtRoot
|
&& !Signals.failedLowAtRoot
|
||||||
&& elapsed > TimeMgr.available_time() * 75 / 100;
|
&& elapsed > Time.available() * 75 / 100;
|
||||||
|
|
||||||
if ( stillAtFirstMove
|
if ( stillAtFirstMove
|
||||||
|| elapsed > TimeMgr.maximum_time() - 2 * TimerThread::Resolution)
|
|| elapsed > Time.maximum() - 2 * TimerThread::Resolution)
|
||||||
Signals.stop = true;
|
Signals.stop = true;
|
||||||
}
|
}
|
||||||
else if (Limits.movetime && elapsed >= Limits.movetime)
|
else if (Limits.movetime && elapsed >= Limits.movetime)
|
||||||
|
|
|
@ -78,7 +78,7 @@ namespace {
|
||||||
/// inc > 0 && movestogo == 0 means: x basetime + z increment
|
/// inc > 0 && movestogo == 0 means: x basetime + z increment
|
||||||
/// inc > 0 && movestogo != 0 means: x moves in y minutes + 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, TimePoint now)
|
void TimeManagement::init(const Search::LimitsType& limits, Color us, int ply, TimePoint now)
|
||||||
{
|
{
|
||||||
int minThinkingTime = Options["Minimum Thinking Time"];
|
int minThinkingTime = Options["Minimum Thinking Time"];
|
||||||
int moveOverhead = Options["Move Overhead"];
|
int moveOverhead = Options["Move Overhead"];
|
||||||
|
|
|
@ -22,16 +22,16 @@
|
||||||
|
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
/// The TimeManager class computes the optimal time to think depending on the
|
/// The TimeManagement class computes the optimal time to think depending on
|
||||||
/// maximum available time, the game move number and other parameters.
|
/// the maximum available time, the game move number and other parameters.
|
||||||
|
|
||||||
class TimeManager {
|
class TimeManagement {
|
||||||
public:
|
public:
|
||||||
void init(const Search::LimitsType& limits, Color us, int ply, TimePoint now);
|
void init(const Search::LimitsType& limits, Color us, int ply, TimePoint now);
|
||||||
void pv_instability(double bestMoveChanges) { unstablePvFactor = 1 + bestMoveChanges; }
|
void pv_instability(double bestMoveChanges) { unstablePvFactor = 1 + bestMoveChanges; }
|
||||||
int available_time() const { return int(optimumTime * unstablePvFactor * 0.76); }
|
int available() const { return int(optimumTime * unstablePvFactor * 0.76); }
|
||||||
int maximum_time() const { return maximumTime; }
|
int maximum() const { return maximumTime; }
|
||||||
int elapsed_time() const { return now() - start; }
|
int elapsed() const { return now() - start; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TimePoint start;
|
TimePoint start;
|
||||||
|
|
Loading…
Add table
Reference in a new issue