Skip to content

Commit

Permalink
Simplify "easy move" detection
Browse files Browse the repository at this point in the history
Detect a move as easy only if it is the only one ;-)
or if is much better than remaining ones after we
have spent 20% of search time.

Tests are ongoing, but it seems this semplification
stands. Anyhow it is experimental for now and could
be reverted/improved with further work Gary is
testing right now.

No functional change.
  • Loading branch information
mcostalba committed Mar 4, 2013
1 parent ccad601 commit 45dba12
Showing 1 changed file with 2 additions and 13 deletions.
15 changes: 2 additions & 13 deletions src/search.cpp
Expand Up @@ -294,7 +294,6 @@ namespace {
Stack ss[MAX_PLY_PLUS_2];
int depth, prevBestMoveChanges;
Value bestValue, alpha, beta, delta;
bool bestMoveNeverChanged = true;

memset(ss, 0, 4 * sizeof(Stack));
depth = BestMoveChanges = 0;
Expand Down Expand Up @@ -417,10 +416,6 @@ namespace {
<< std::endl;
}

// Filter out startup noise when monitoring best move stability
if (depth > 2 && BestMoveChanges)
bestMoveNeverChanged = false;

// Do we have found a "mate in x"?
if ( Limits.mate
&& bestValue >= VALUE_MATE_IN_MAX_PLY
Expand All @@ -442,18 +437,12 @@ namespace {
if (Time::now() - SearchTime > (TimeMgr.available_time() * 62) / 100)
stop = true;

bool recapture = pos.is_capture(RootMoves[0].pv[0])
&& pos.captured_piece_type()
&& SetupMoves->size()
&& to_sq(SetupMoves->back()) == to_sq(RootMoves[0].pv[0]);

// Stop search early if one move seems to be much better than others
if ( depth >= 12
&& !stop
&& PVSize == 1
&& ( (bestMoveNeverChanged && recapture)
|| RootMoves.size() == 1
|| Time::now() - SearchTime > (TimeMgr.available_time() * 40) / 100))
&& ( RootMoves.size() == 1
|| Time::now() - SearchTime > (TimeMgr.available_time() * 20) / 100))
{
Value rBeta = bestValue - 2 * PawnValueMg;
(ss+1)->excludedMove = RootMoves[0].pv[0];
Expand Down

0 comments on commit 45dba12

Please sign in to comment.