Skip to content

Commit

Permalink
Enhanced verify search (official-stockfish#1338)
Browse files Browse the repository at this point in the history
by disabling null-move-pruning for the side to move for first part of
the remaining search tree. This helps to better recognize zugzwang.

STC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 18220 W: 3379 L: 3253 D: 11588
http://tests.stockfishchess.org/tests/view/5a2fa6460ebc590ccbb8bc2f

LTC:
LLR: 2.96 (-2.94,2.94) [-3.00,1.00]
Total: 41899 W: 5359 L: 5265 D: 31275
http://tests.stockfishchess.org/tests/view/5a2fcf440ebc590ccbb8bc47

For further detail see commit notes and discussion at 
pb00068@6401a80

bench: 5776193
  • Loading branch information
pb00068 authored and mcostalba committed Dec 18, 2017
1 parent 83e829c commit b53239d
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 2 deletions.
12 changes: 11 additions & 1 deletion src/search.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -681,7 +681,8 @@ namespace {
// Step 8. Null move search with verification search (is omitted in PV nodes)
if ( !PvNode
&& eval >= beta
&& ss->staticEval >= beta - 36 * depth / ONE_PLY + 225)
&& ss->staticEval >= beta - 36 * depth / ONE_PLY + 225
&& (ss->ply >= thisThread->nmp_ply || ss->ply % 2 == thisThread->pair))
{

assert(eval - beta >= 0);
Expand All @@ -707,8 +708,17 @@ namespace {
return nullValue;

// Do verification search at high depths
R += ONE_PLY;
// disable null move pruning for side to move for the first part of the remaining search tree
int nmp_ply = thisThread->nmp_ply;
int pair = thisThread->pair;
thisThread->nmp_ply = ss->ply + 3 * (depth-R) / 4;
thisThread->pair = (ss->ply % 2) == 0;

Value v = depth-R < ONE_PLY ? qsearch<NonPV, false>(pos, ss, beta-1, beta)
: search<NonPV>(pos, ss, beta-1, beta, depth-R, false, true);
thisThread->pair = pair;
thisThread->nmp_ply = nmp_ply;

if (v >= beta)
return nullValue;
Expand Down
2 changes: 2 additions & 0 deletions src/thread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,8 @@ void ThreadPool::start_thinking(Position& pos, StateListPtr& states,
th->rootDepth = th->completedDepth = DEPTH_ZERO;
th->rootMoves = rootMoves;
th->rootPos.set(pos.fen(), pos.is_chess960(), &setupStates->back(), th);
th->nmp_ply = 0;
th->pair = -1;
}

setupStates->back() = tmp;
Expand Down
2 changes: 1 addition & 1 deletion src/thread.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ class Thread {
Material::Table materialTable;
Endgames endgames;
size_t PVIdx;
int selDepth;
int selDepth, nmp_ply, pair;
std::atomic<uint64_t> nodes, tbHits;

Position rootPos;
Expand Down

0 comments on commit b53239d

Please sign in to comment.