X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=cd874ff816156bfcfd036c65de3443a917325341;hp=7b4ba28618c537eb5804a67107008a150bb4d3a0;hb=06a350f1aee97f05c3416853fb54385b23030ebc;hpb=a5a8830e97cbf8005d559029d273bdb13a341278 diff --git a/src/search.cpp b/src/search.cpp index 7b4ba286..cd874ff8 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -87,7 +87,7 @@ namespace { Depth depth, bool mateThreat, int* moves, MovePicker* mp, int master, bool pvNode); private: - friend void poll(SearchStack ss[], int ply); + friend void poll(); int ActiveThreads; volatile bool AllThreadsShouldExit, AllThreadsShouldSleep; @@ -232,7 +232,7 @@ namespace { const Value EasyMoveMargin = Value(0x200); // Last seconds noise filtering (LSN) - const bool UseLSNFiltering = true; + const bool UseLSNFiltering = false; const int LSNTime = 4000; // In milliseconds const Value LSNValue = value_from_centipawns(200); bool loseOnTime = false; @@ -302,7 +302,7 @@ namespace { int current_search_time(); int nps(); - void poll(SearchStack ss[], int ply); + void poll(); void ponderhit(); void wait_for_stop_or_ponderhit(); void init_ss_array(SearchStack ss[]); @@ -1379,13 +1379,18 @@ namespace { if (nullValue >= value_mate_in(PLY_MAX)) nullValue = beta; - if (depth < 6 * OnePly) - return nullValue; + // Do zugzwang verification search for high depths, don't store in TT + // if search was stopped. + if ( ( depth < 6 * OnePly + || search(pos, ss, beta, depth-5*OnePly, ply, false, threadID) >= beta) + && !AbortSearch + && !TM.thread_should_stop(threadID)) + { + assert(value_to_tt(nullValue, ply) == nullValue); - // Do zugzwang verification search - Value v = search(pos, ss, beta, depth-5*OnePly, ply, false, threadID); - if (v >= beta) + TT.store(posKey, nullValue, VALUE_TYPE_NS_LO, depth, MOVE_NONE); return nullValue; + } } else { // The null move failed low, which means that we may be faced with // some kind of threat. If the previous move was reduced, check if @@ -1661,7 +1666,7 @@ namespace { alpha = bestValue; // If we are near beta then try to get a cutoff pushing checks a bit further - bool deepChecks = depth == -OnePly && staticValue >= beta - PawnValueMidgame / 8; + bool deepChecks = (depth == -OnePly && staticValue >= beta - PawnValueMidgame / 8); // Initialize a MovePicker object for the current position, and prepare // to search the moves. Because the depth is <= 0 here, only captures, @@ -2046,7 +2051,7 @@ namespace { NodesSincePoll++; if (NodesSincePoll >= NodesBetweenPolls) { - poll(ss, ply); + poll(); NodesSincePoll = 0; } } @@ -2409,7 +2414,7 @@ namespace { // looks at the time consumed so far and decides if it's time to abort the // search. - void poll(SearchStack ss[], int ply) { + void poll() { static int lastInfoTime; int t = current_search_time();