/*
Stockfish, a UCI chess playing engine derived from Glaurung 2.1
Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
- Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad
+ Copyright (C) 2008-2012 Marco Costalba, Joona Kiiski, Tord Romstad
Stockfish is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <cmath>
#include <algorithm>
-#include "misc.h"
#include "search.h"
#include "timeman.h"
#include "ucioption.h"
enum TimeType { OptimumTime, MaxTime };
template<TimeType>
- int remaining(int myTime, int movesToGo, int fullMoveNumber);
+ int remaining(int myTime, int movesToGo, int fullMoveNumber, int slowMover);
}
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;
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);
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++)