mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
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 <mcostalba@gmail.com>
This commit is contained in:
parent
0ea716463b
commit
3e7e1a7c53
1 changed files with 8 additions and 39 deletions
|
@ -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());
|
||||
|
|
Loading…
Add table
Reference in a new issue