From: Joona Kiiski Date: Sun, 12 Apr 2009 20:30:40 +0000 (+0300) Subject: Revert "Implement a fallback system when aspiration search fails low and we are out... X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=3e7e1a7c53c251c244d8271082b602e6b9a9b208;hp=0ea716463bf2722931c160edcc9b68e9a800a93a Revert "Implement a fallback system when aspiration search fails low and we are out of time." This reverts commit 55dd98f7c717b94a659931cd20e088334b1cf7a6. Revert fallback-system for root_search Signed-off-by: Marco Costalba --- diff --git a/src/search.cpp b/src/search.cpp index 76b79dda..b8d6a3a5 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -259,7 +259,7 @@ namespace { // Time managment variables int SearchStartTime; int MaxNodes, MaxDepth; - int MaxSearchTime, AbsoluteMaxSearchTime, EmergencyMaxSearchTime, ExtraSearchTime; + int MaxSearchTime, AbsoluteMaxSearchTime, ExtraSearchTime; Move EasyMove; int RootMoveNumber; bool InfiniteSearch; @@ -520,11 +520,9 @@ void think(const Position &pos, bool infinite, bool ponder, int side_to_move, { MaxSearchTime = myTime / 30 + myIncrement; AbsoluteMaxSearchTime = Max(myTime / 4, myIncrement - 100); - EmergencyMaxSearchTime = Max(myTime / 2, myIncrement - 100); } else { // Blitz game without increment MaxSearchTime = myTime / 30; AbsoluteMaxSearchTime = myTime / 8; - EmergencyMaxSearchTime = myTime / 4; } } else // (x moves) / (y minutes) @@ -533,11 +531,9 @@ void think(const Position &pos, bool infinite, bool ponder, int side_to_move, { MaxSearchTime = myTime / 2; AbsoluteMaxSearchTime = Min(myTime / 2, myTime - 500); - EmergencyMaxSearchTime = myTime - 500; } else { MaxSearchTime = myTime / Min(movesToGo, 20); AbsoluteMaxSearchTime = Min((4 * myTime) / movesToGo, myTime / 3); - EmergencyMaxSearchTime = Min((8 * myTime) / movesToGo, myTime / 2); } } @@ -704,9 +700,6 @@ namespace { Position p(pos); SearchStack ss[PLY_MAX_PLUS_2]; - Value alpha; - Value beta; - // searchMoves are verified, copied, scored and sorted RootMoveList rml(p, searchMoves); @@ -736,6 +729,9 @@ namespace { std::cout << "info depth " << Iteration << std::endl; //Calculate dynamic search window based on previous iterations. + Value alpha; + Value beta; + if (MultiPV == 1 && Iteration >= 6) { Value prevDelta1 = IterationInfo[Iteration - 1].speculated_value() - IterationInfo[Iteration - 2].speculated_value(); Value prevDelta2 = IterationInfo[Iteration - 2].speculated_value() - IterationInfo[Iteration - 3].speculated_value(); @@ -754,14 +750,13 @@ namespace { // Search to the current depth Value value = root_search(p, ss, rml, alpha, beta); + if (AbortSearch) + break; //Value cannot be trusted. Break out immediately! // Write PV to transposition table, in case the relevant entries have // been overwritten during the search: TT.insert_pv(p, ss[0].pv); - if (AbortSearch) - break; //Value cannot be trusted. Break out immediately! - //Save info about search result Value speculated_value = value; bool fHigh = false; @@ -831,6 +826,7 @@ namespace { if (stopSearch) { + //FIXME: Implement fail-low emergency measures if (!PonderSearch) break; else @@ -842,34 +838,6 @@ namespace { break; } - if (FailLow) - { - //Here we face the rare, but extremely difficult case: - //Our aspiration search has failed low and we've run out of time! - //So we have no move to play! - //Now use the emergency time and try as quickly as possible to - //find even one playable move. - - //FIXME: this is only for grepping logs purpose. Remove me when we are sure that this stuff really works!! - if (AbortSearch) - std::cout << "info depth " << 999 << std::endl; - else - std::cout << "info depth " << 998 << std::endl; - - //Prepare variables for emergency search - AbortSearch = false; - FailLow = false; - AbsoluteMaxSearchTime = EmergencyMaxSearchTime; - MaxSearchTime = EmergencyMaxSearchTime; - ExtraSearchTime = 0; - rml.sort(); - - std::cout << "info depth " << Iteration << std::endl; - - //Cause we failed low, it's _likely_ that we couldn't get over alpha anyway. - root_search(p, ss, rml, -VALUE_INFINITE, alpha); - } - rml.sort(); // If we are pondering, we shouldn't print the best move before we @@ -923,6 +891,7 @@ namespace { Value root_search(Position &pos, SearchStack ss[], RootMoveList &rml, Value alpha, Value beta) { + //FIXME: Implement bestValue Value oldAlpha = alpha; Value value; Bitboard dcCandidates = pos.discovered_check_candidates(pos.side_to_move());