106 float phase,
float evalCp,
int moveNumber)
const;
118 bool shouldStop(int64_t elapsed,
int depth,
int bestMoveChanges,
119 int scoreDrops,
const TimeAllocation &allocation)
const;
TimeControl detectTimeControl(int baseTimeMs, int incrementMs) const
Definition TimeManager.cpp:12
TimeManager(const Config &cfg)
Definition TimeManager.h:93
float getEvalMultiplier(float evalCp) const
Definition TimeManager.cpp:67
TimeAllocation calculate(const SearchParams ¶ms, chess::Color side, float phase, float evalCp, int moveNumber) const
Calculates time allocation for a position.
Definition TimeManager.cpp:150
bool shouldStop(int64_t elapsed, int depth, int bestMoveChanges, int scoreDrops, const TimeAllocation &allocation) const
Checks if search should stop based on elapsed time and stability.
Definition TimeManager.cpp:389
TimeControl
Categorization of time controls based on base time.
Definition TimeManager.h:34
@ CLASSICAL
Definition TimeManager.h:38
@ BLITZ
2-5 minutes base
Definition TimeManager.h:36
@ BULLET
< 2 minutes base
Definition TimeManager.h:35
@ RAPID
5-15 minutes base
Definition TimeManager.h:37
@ CORRESPONDENCE
Definition TimeManager.h:39
void setConfig(const Config &cfg)
Definition TimeManager.h:133
int estimateMovesRemaining(int moveNumber, float phase, int movestogo) const
Definition TimeManager.cpp:116
float getPhaseMultiplier(float phase) const
Definition TimeManager.cpp:43
const Config & config() const
Definition TimeManager.h:132
float getExtensionFactor(int bestMoveChanges, int scoreDrops) const
Gets the extension factor based on search instability.
Definition TimeManager.cpp:364
float getControlMultiplier(TimeControl control) const
Definition TimeManager.cpp:100
Config config_
Definition TimeManager.h:136
Parameters defining the constraints for a search operation.
Definition ISearch.h:125
Tunable configuration for time management heuristics.
Definition TimeManager.h:58
float incrementUsage
Use 70% of increment per move.
Definition TimeManager.h:81
int instabilityThreshold
Changes before extending.
Definition TimeManager.h:78
int ultraPanicMs
Emergency mode.
Definition TimeManager.h:89
float bulletMultiplier
Very aggressive time saving.
Definition TimeManager.h:65
float classicalMultiplier
Can think deeper.
Definition TimeManager.h:68
float winningMultiplier
Clear advantage (>200cp).
Definition TimeManager.h:73
float maxInstabilityExtension
Max extension factor.
Definition TimeManager.h:77
float criticalMultiplier
Unclear position (±50cp).
Definition TimeManager.h:71
int minTimeMs
Absolute minimum thinking time.
Definition TimeManager.h:87
int minMovesForIncrement
Don't rely on inc for first moves.
Definition TimeManager.h:83
int panicThresholdMs
Enter panic below this.
Definition TimeManager.h:88
float openingMultiplier
Quick in opening (book/theory).
Definition TimeManager.h:60
float incrementReserve
Keep 30% as buffer.
Definition TimeManager.h:82
int moveOverheadMs
Network latency buffer.
Definition TimeManager.h:86
float edgeMultiplier
Slight edge (50-150cp).
Definition TimeManager.h:72
float blitzMultiplier
Balanced.
Definition TimeManager.h:66
float middlegameMultiplier
Think hard in complex positions.
Definition TimeManager.h:61
float endgameMultiplier
Simpler, fewer variations.
Definition TimeManager.h:62
float rapidMultiplier
Normal.
Definition TimeManager.h:67
float losingMultiplier
Swindle mode (<-150cp).
Definition TimeManager.h:74
Recommended time limits for the current move.
Definition TimeManager.h:46
int64_t hardLimit
Absolute maximum (ms).
Definition TimeManager.h:48
TimeControl control
Detected time control type.
Definition TimeManager.h:51
int64_t panicTime
Below this, enter panic mode.
Definition TimeManager.h:50
int64_t optimalTime
Ideal time to use (ms).
Definition TimeManager.h:49
int64_t softLimit
Normal stopping point (ms).
Definition TimeManager.h:47