Skip to content

Commit

Permalink
Don't exit earlier from aspiration window loop
Browse files Browse the repository at this point in the history
Currently we exit the loop when

abs(bestValue) >= VALUE_KNOWN_WIN

but there is no logical reason for this. It seems more
natural to re-search again with full open window.

This has practically no impact in most cases, we have a
'no functional change' running 'bench' command.
  • Loading branch information
mcostalba committed Sep 14, 2012
1 parent afcee1e commit 6008f65
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions src/search.cpp
Expand Up @@ -365,7 +365,8 @@ namespace {

// Start with a small aspiration window and, in case of fail high/low,
// research with bigger window until not failing high/low anymore.
do {
while (true)
{
// Search starts from ss+1 to allow referencing (ss-1). This is
// needed by update gains and ss copy when splitting at Root.
bestValue = search<Root>(pos, ss+1, alpha, beta, depth * ONE_PLY);
Expand Down Expand Up @@ -419,9 +420,15 @@ namespace {
else
break;

assert(alpha >= -VALUE_INFINITE && beta <= VALUE_INFINITE);
// Search with full window in case we have a win/mate score
if (abs(bestValue) >= VALUE_KNOWN_WIN)
{
alpha = -VALUE_INFINITE;
beta = VALUE_INFINITE;
}

} while (abs(bestValue) < VALUE_KNOWN_WIN);
assert(alpha >= -VALUE_INFINITE && beta <= VALUE_INFINITE);
}
}

// Skills: Do we need to pick now the best move ?
Expand Down

0 comments on commit 6008f65

Please sign in to comment.