Skip to content

Commit

Permalink
Minimal thinking time, even if only one rootMove.
Browse files Browse the repository at this point in the history
without search, the eval returned can be misleading (e.g. mate instead of draw),
leading to wrong adjudication. With a minimal search, this is avoided.
This patch leads to 1ms long searches if there is only 1 move,
similar patches all indicate a small Elo gain.

Fixes #2707

Passed non-regression STC:
LLR: 2.93 (-2.94,2.94) {-1.50,0.50}
Total: 22312 W: 4350 L: 4204 D: 13758
Ptnml(0-2): 323, 2488, 5437, 2536, 372
https://tests.stockfishchess.org/tests/view/5ed562b0f29b40b0fc95a7d0

closes #2709

Bench: 4733799
  • Loading branch information
MJZ1977 authored and vondele committed Jun 6, 2020
1 parent 16566a8 commit 7842635
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions src/search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -556,9 +556,11 @@ void Thread::search() {
}
double bestMoveInstability = 1 + totBestMoveChanges / Threads.size();

// Stop the search if we have only one legal move, or if available time elapsed
if ( rootMoves.size() == 1
|| Time.elapsed() > Time.optimum() * fallingEval * reduction * bestMoveInstability)
double totalTime = rootMoves.size() == 1 ? 0 :
Time.optimum() * fallingEval * reduction * bestMoveInstability;

// Stop the search if we have exceeded the totalTime, at least 1ms search.
if (Time.elapsed() > totalTime)
{
// If we are allowed to ponder do not stop the search now but
// keep pondering until the GUI sends "ponderhit" or "stop".
Expand All @@ -569,7 +571,7 @@ void Thread::search() {
}
else if ( Threads.increaseDepth
&& !mainThread->ponder
&& Time.elapsed() > Time.optimum() * fallingEval * reduction * bestMoveInstability * 0.6)
&& Time.elapsed() > totalTime * 0.6)
Threads.increaseDepth = false;
else
Threads.increaseDepth = true;
Expand Down

0 comments on commit 7842635

Please sign in to comment.