X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsearch.cpp;h=4507460a5b639e40573e6af83e35b6f70eaa6767;hb=39af98c807d236b6511b6e399caf40102398900c;hp=343c098a587dbb6cf3d8b8eb6aae946d178d733b;hpb=98965c139df1483a3d684ee8bc7a60dc4b95efa1;p=stockfish diff --git a/src/search.cpp b/src/search.cpp index 343c098a..4507460a 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1066,8 +1066,11 @@ moves_loop: // When in check, search starts here // Avoid search explosion by limiting the number of double extensions if ( !PvNode && value < singularBeta - 25 - && ss->doubleExtensions <= 9) + && ss->doubleExtensions <= 10) + { extension = 2; + depth += depth < 12; + } } // Multi-cut pruning @@ -1187,9 +1190,11 @@ moves_loop: // When in check, search starts here // Adjust full depth search based on LMR results - if result // was good enough search deeper, if it was bad enough search shallower const bool doDeeperSearch = value > (alpha + 64 + 11 * (newDepth - d)); - const bool doEvenDeeperSearch = value > alpha + 582; + const bool doEvenDeeperSearch = value > alpha + 582 && ss->doubleExtensions <= 5; const bool doShallowerSearch = value < bestValue + newDepth; + ss->doubleExtensions = ss->doubleExtensions + doEvenDeeperSearch; + newDepth += doDeeperSearch - doShallowerSearch + doEvenDeeperSearch; if (newDepth > d) @@ -1245,10 +1250,18 @@ moves_loop: // When in check, search starts here // PV move or new best move? if (moveCount == 1 || value > alpha) { - rm.score = value; + rm.score = rm.uciScore = value; rm.selDepth = thisThread->selDepth; - rm.scoreLowerbound = value >= beta; - rm.scoreUpperbound = value <= alpha; + rm.scoreLowerbound = rm.scoreUpperbound = false; + + if (value >= beta) { + rm.scoreLowerbound = true; + rm.uciScore = beta; + } + else if (value <= alpha) { + rm.scoreUpperbound = true; + rm.uciScore = alpha; + } rm.pv.resize(1); assert((ss+1)->pv); @@ -1290,7 +1303,7 @@ moves_loop: // When in check, search starts here && depth < 6 && beta < VALUE_KNOWN_WIN && alpha > -VALUE_KNOWN_WIN) - depth -= 1; + depth -= 1; assert(depth > 0); } @@ -1515,7 +1528,6 @@ moves_loop: // When in check, search starts here && futilityBase > -VALUE_KNOWN_WIN && type_of(move) != PROMOTION) { - if (moveCount > 2) continue; @@ -1841,7 +1853,7 @@ string UCI::pv(const Position& pos, Depth depth) { continue; Depth d = updated ? depth : std::max(1, depth - 1); - Value v = updated ? rootMoves[i].score : rootMoves[i].previousScore; + Value v = updated ? rootMoves[i].uciScore : rootMoves[i].previousScore; if (v == -VALUE_INFINITE) v = VALUE_ZERO;