mirror of
https://github.com/sockspls/badfish
synced 2025-07-11 19:49:14 +00:00
Add "Slow Mover" UCI parameter to adjust time management
With default value of 100 no change in regard of current behaviour. Increasing the value makes SF to think a longer time for each move. Decreasing the value makes SF to move faster. No functional change. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
parent
b1cf1acb93
commit
40e939421f
2 changed files with 7 additions and 5 deletions
|
@ -72,7 +72,7 @@ namespace {
|
|||
enum TimeType { OptimumTime, MaxTime };
|
||||
|
||||
template<TimeType>
|
||||
int remaining(int myTime, int movesToGo, int fullMoveNumber);
|
||||
int remaining(int myTime, int movesToGo, int fullMoveNumber, int slowMover);
|
||||
}
|
||||
|
||||
|
||||
|
@ -107,6 +107,7 @@ void TimeManager::init(const Search::LimitsType& limits, int currentPly)
|
|||
int emergencyBaseTime = Options["Emergency Base Time"];
|
||||
int emergencyMoveTime = Options["Emergency Move Time"];
|
||||
int minThinkingTime = Options["Minimum Thinking Time"];
|
||||
int slowMover = Options["Slow Mover"];
|
||||
|
||||
// Initialize to maximum values but unstablePVExtraTime that is reset
|
||||
unstablePVExtraTime = 0;
|
||||
|
@ -124,8 +125,8 @@ void TimeManager::init(const Search::LimitsType& limits, int currentPly)
|
|||
|
||||
hypMyTime = std::max(hypMyTime, 0);
|
||||
|
||||
t1 = minThinkingTime + remaining<OptimumTime>(hypMyTime, hypMTG, currentPly);
|
||||
t2 = minThinkingTime + remaining<MaxTime>(hypMyTime, hypMTG, currentPly);
|
||||
t1 = minThinkingTime + remaining<OptimumTime>(hypMyTime, hypMTG, currentPly, slowMover);
|
||||
t2 = minThinkingTime + remaining<MaxTime>(hypMyTime, hypMTG, currentPly, slowMover);
|
||||
|
||||
optimumSearchTime = std::min(optimumSearchTime, t1);
|
||||
maximumSearchTime = std::min(maximumSearchTime, t2);
|
||||
|
@ -142,12 +143,12 @@ void TimeManager::init(const Search::LimitsType& limits, int currentPly)
|
|||
namespace {
|
||||
|
||||
template<TimeType T>
|
||||
int remaining(int myTime, int movesToGo, int currentPly)
|
||||
int remaining(int myTime, int movesToGo, int currentPly, int slowMover)
|
||||
{
|
||||
const float TMaxRatio = (T == OptimumTime ? 1 : MaxRatio);
|
||||
const float TStealRatio = (T == OptimumTime ? 0 : StealRatio);
|
||||
|
||||
int thisMoveImportance = move_importance(currentPly);
|
||||
int thisMoveImportance = move_importance(currentPly) * slowMover / 100;
|
||||
int otherMovesImportance = 0;
|
||||
|
||||
for (int i = 1; i < movesToGo; i++)
|
||||
|
|
|
@ -72,6 +72,7 @@ OptionsMap::OptionsMap() {
|
|||
o["Emergency Base Time"] = UCIOption(200, 0, 30000);
|
||||
o["Emergency Move Time"] = UCIOption(70, 0, 5000);
|
||||
o["Minimum Thinking Time"] = UCIOption(20, 0, 5000);
|
||||
o["Slow Mover"] = UCIOption(100, 10, 1000);
|
||||
o["UCI_Chess960"] = UCIOption(false);
|
||||
o["UCI_AnalyseMode"] = UCIOption(false);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue