From: Marco Costalba Date: Wed, 14 Dec 2011 05:18:33 +0000 (+0100) Subject: Further simplify aspiration code X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=852d45a60004bc5a0a39a94e5a340af00dc317c1 Further simplify aspiration code Actually after last patch it happens that delta starts always with the fixed value of 16. So further remove useless code. No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/search.cpp b/src/search.cpp index 651478c7..b160145e 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -426,8 +426,8 @@ namespace { Stack ss[PLY_MAX_PLUS_2]; int bestMoveChanges[PLY_MAX_PLUS_2]; - int depth, delta; - Value bestValue, alpha, beta; + int depth; + Value bestValue, alpha, beta, delta; Move bestMove, skillBest, skillPonder; bool bestMoveNeverChanged = true; @@ -436,8 +436,8 @@ namespace { H.clear(); RootMoves.clear(); *ponderMove = bestMove = skillBest = skillPonder = MOVE_NONE; - depth = delta = 0; - bestValue = alpha = -VALUE_INFINITE, beta = VALUE_INFINITE; + depth = 0; + bestValue = alpha = -VALUE_INFINITE, beta = delta = VALUE_INFINITE; ss->currentMove = MOVE_NULL; // Hack to skip update gains for (MoveList ml(pos); !ml.end(); ++ml) @@ -467,16 +467,11 @@ namespace { for (MultiPVIdx = 0; MultiPVIdx < std::min(MultiPV, RootMoves.size()); MultiPVIdx++) { // Calculate dynamic aspiration window based on previous iteration - if (depth >= 5 && abs(RootMoves[MultiPVIdx].score) < VALUE_KNOWN_WIN) + if (depth >= 5 && abs(RootMoves[MultiPVIdx].prevScore) < VALUE_KNOWN_WIN) { - delta = abs(RootMoves[MultiPVIdx].score - RootMoves[MultiPVIdx].prevScore); - delta = std::min(std::max(delta, 16), 24); - delta = (delta + 7) / 8 * 8; // Round to match grainSize - - alpha = RootMoves[MultiPVIdx].score - delta; - beta = RootMoves[MultiPVIdx].score + delta; - - assert(alpha > -VALUE_INFINITE && beta < VALUE_INFINITE); + delta = Value(16); + alpha = RootMoves[MultiPVIdx].prevScore - delta; + beta = RootMoves[MultiPVIdx].prevScore + delta; } else { @@ -544,7 +539,7 @@ namespace { // research, otherwise exit the fail high/low loop. if (bestValue >= beta) { - beta = std::min(beta + delta, VALUE_INFINITE); + beta += delta; delta += delta / 2; } else if (bestValue <= alpha) @@ -552,12 +547,14 @@ namespace { Signals.failedLowAtRoot = true; Signals.stopOnPonderhit = false; - alpha = std::max(alpha - delta, -VALUE_INFINITE); + alpha -= delta; delta += delta / 2; } else break; + assert(alpha >= -VALUE_INFINITE && beta <= VALUE_INFINITE); + } while (abs(bestValue) < VALUE_KNOWN_WIN); }