From: MJZ1977 <37274752+MJZ1977@users.noreply.github.com> Date: Wed, 10 Apr 2019 10:56:05 +0000 (+0200) Subject: Shuffle detection #2108 X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=e89bc30fdc93f739869d0d4b285a2cfc3e7a74ee Shuffle detection #2108 Bench: 3402947 --- diff --git a/src/search.cpp b/src/search.cpp index f9fdc261..517499b5 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -606,6 +606,15 @@ namespace { : ttHit ? tte->move() : MOVE_NONE; ttPv = (ttHit && tte->is_pv()) || (PvNode && depth > 4 * ONE_PLY); + // If position has been searched at higher depths and we are shuffling, + // return value_draw. + if ( pos.rule50_count() > 36 - 6 * (pos.count() > 14) + && ss->ply > 36 - 6 * (pos.count() > 14) + && ttHit + && tte->depth() > depth + && pos.count() > 0) + return VALUE_DRAW; + // At non-PV nodes we check for an early TT cutoff if ( !PvNode && ttHit @@ -927,6 +936,14 @@ moves_loop: // When in check, search starts from here else if (type_of(move) == CASTLING) extension = ONE_PLY; + // Shuffle extension + else if ( PvNode + && pos.rule50_count() > 18 + && ss->ply > 18 + && depth < 3 * ONE_PLY + && ss->ply < 3 * thisThread->rootDepth / ONE_PLY) // To avoid infinite loops + extension = ONE_PLY; + // Passed pawn extension else if ( move == ss->killers[0] && pos.advanced_pawn_push(move)