X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fsearch.cpp;h=3136046d2f52f6e82ec9cc70ced94eb70b73edb1;hb=38a80c0b47397dbdd9167ec1476dfd3c033020d6;hp=2fcbc7df2a524d1e33617814f45bbc75696c957b;hpb=66bf45b99e2061c1ba74f9975bc5059ac0121dfd;p=stockfish diff --git a/src/search.cpp b/src/search.cpp index 2fcbc7df..3136046d 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -293,6 +293,15 @@ void Thread::search() { if (mainThread) { + + int rootComplexity; + if (Eval::useNNUE) + Eval::NNUE::evaluate(rootPos, true, &rootComplexity); + else + Eval::evaluate(rootPos, &rootComplexity); + + mainThread->complexity = std::min(1.03 + (rootComplexity - 241) / 1552.0, 1.45); + if (mainThread->bestPreviousScore == VALUE_INFINITE) for (int i = 0; i < 4; ++i) mainThread->iterValue[i] = VALUE_ZERO; @@ -311,8 +320,6 @@ void Thread::search() { multiPV = std::min(multiPV, rootMoves.size()); - complexityAverage.set(153, 1); - optimism[us] = optimism[~us] = VALUE_ZERO; int searchAgainCounter = 0; @@ -472,10 +479,8 @@ void Thread::search() { timeReduction = lastBestMoveDepth + 8 < completedDepth ? 1.57 : 0.65; double reduction = (1.4 + mainThread->previousTimeReduction) / (2.08 * timeReduction); double bestMoveInstability = 1 + 1.8 * totBestMoveChanges / Threads.size(); - int complexity = mainThread->complexityAverage.value(); - double complexPosition = std::min(1.03 + (complexity - 241) / 1552.0, 1.45); - double totalTime = Time.optimum() * fallingEval * reduction * bestMoveInstability * complexPosition; + double totalTime = Time.optimum() * fallingEval * reduction * bestMoveInstability * mainThread->complexity; // Cap used time in case of a single legal move for a better viewer experience in tournaments // yielding correct scores and sufficiently fast moves. @@ -755,8 +760,6 @@ namespace { tte->save(posKey, VALUE_NONE, ss->ttPv, BOUND_NONE, DEPTH_NONE, MOVE_NONE, eval); } - thisThread->complexityAverage.update(complexity); - // Use static evaluation difference to improve quiet move ordering (~4 Elo) if (is_ok((ss-1)->currentMove) && !(ss-1)->inCheck && !priorCapture) {