template<bool SkipRepetition> bool is_draw() const;
// Number of plies from starting position
- int full_moves() const;
+ int startpos_ply_counter() const;
// Other properties of the position
bool opposite_colored_bishops() const;
&& pawn_is_passed(c, move_to(m));
}
-inline int Position::full_moves() const {
- return fullMoves;
+inline int Position::startpos_ply_counter() const {
+ return Max(2 * (fullMoves - 1), 0) + int(sideToMove == BLACK);
}
inline bool Position::opposite_colored_bishops() const {
NodesSincePoll = 0;
current_search_time(get_system_time());
Limits = limits;
- TimeMgr.init(Limits, pos.full_moves());
+ TimeMgr.init(Limits, pos.startpos_ply_counter());
// Set output steram in normal or chess960 mode
cout << set960(pos.is_chess960());
}
-void TimeManager::init(const SearchLimits& limits, int fullMoveNumber)
+void TimeManager::init(const SearchLimits& limits, int currentPly)
{
/* We support four different kind of time controls:
hypMyTime = Max(hypMyTime, 0);
- t1 = minThinkingTime + remaining<OptimumTime>(hypMyTime, hypMTG, fullMoveNumber);
- t2 = minThinkingTime + remaining<MaxTime>(hypMyTime, hypMTG, fullMoveNumber);
+ t1 = minThinkingTime + remaining<OptimumTime>(hypMyTime, hypMTG, currentPly);
+ t2 = minThinkingTime + remaining<MaxTime>(hypMyTime, hypMTG, currentPly);
optimumSearchTime = Min(optimumSearchTime, t1);
maximumSearchTime = Min(maximumSearchTime, t2);
namespace {
template<TimeType T>
- int remaining(int myTime, int movesToGo, int fullMoveNumber)
+ int remaining(int myTime, int movesToGo, int currentPly)
{
const float TMaxRatio = (T == OptimumTime ? 1 : MaxRatio);
const float TStealRatio = (T == OptimumTime ? 0 : StealRatio);
- int currentPly = 2 * fullMoveNumber;
int thisMoveImportance = move_importance(currentPly);
int otherMovesImportance = 0;
class TimeManager {
public:
- void init(const SearchLimits& limits, int fullMoveNumber);
+ void init(const SearchLimits& limits, int currentPly);
void pv_instability(int curChanges, int prevChanges);
int available_time() const { return optimumSearchTime + unstablePVExtraTime; }
int maximum_time() const { return maximumSearchTime; }