X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fsearch.cpp;h=8a6105711aae2720c112371c7f6ca3b2cf9a9532;hp=897121fdc63570925ca02515c135fd8dd4e47bc1;hb=d4cb80b2106efb58db87495090a3898d902075d6;hpb=82f7d507eaf83e27a33bf0b433be08d23320b6fe diff --git a/src/search.cpp b/src/search.cpp index 897121fd..8a610571 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -92,7 +92,7 @@ namespace { // History and stats update bonus, based on depth int stat_bonus(Depth depth) { int d = depth / ONE_PLY; - return d > 17 ? 0 : d * d + 2 * d - 2; + return d > 17 ? 0 : 32 * d * d + 64 * d - 64; } // Skill structure is used to implement strength limit @@ -379,7 +379,7 @@ void Thread::search() { beta = std::min(previousScore + delta, VALUE_INFINITE); // Adjust contempt based on root move's previousScore (dynamic contempt) - int dct = ct + int(std::round(48 * atan(float(previousScore) / 128))); + int dct = ct + 88 * previousScore / (abs(previousScore) + 200); contempt = (us == WHITE ? make_score(dct, dct / 2) : -make_score(dct, dct / 2)); @@ -818,9 +818,8 @@ namespace { } // Step 11. Internal iterative deepening (skipped when in check, ~2 Elo) - if ( depth >= 6 * ONE_PLY - && !ttMove - && (PvNode || ss->staticEval + 128 >= beta)) + if ( depth >= 8 * ONE_PLY + && !ttMove) { Depth d = 3 * depth / 4 - 2 * ONE_PLY; search(pos, ss, alpha, beta, d, cutNode, true); @@ -835,7 +834,11 @@ moves_loop: // When in check, search starts from here const PieceToHistory* contHist[] = { (ss-1)->contHistory, (ss-2)->contHistory, nullptr, (ss-4)->contHistory }; Move countermove = thisThread->counterMoves[pos.piece_on(prevSq)][prevSq]; - MovePicker mp(pos, ttMove, depth, &thisThread->mainHistory, &thisThread->captureHistory, contHist, countermove, ss->killers); + MovePicker mp(pos, ttMove, depth, &thisThread->mainHistory, + &thisThread->captureHistory, + contHist, + countermove, + ss->killers); value = bestValue; // Workaround a bogus 'uninitialized' warning under gcc skipQuiets = false; @@ -1275,7 +1278,9 @@ moves_loop: // When in check, search starts from here // to search the moves. Because the depth is <= 0 here, only captures, // queen promotions and checks (only if depth >= DEPTH_QS_CHECKS) will // be generated. - MovePicker mp(pos, ttMove, depth, &pos.this_thread()->mainHistory, &pos.this_thread()->captureHistory, to_sq((ss-1)->currentMove)); + MovePicker mp(pos, ttMove, depth, &pos.this_thread()->mainHistory, + &pos.this_thread()->captureHistory, + to_sq((ss-1)->currentMove)); // Loop through the moves until no moves remain or a beta cutoff occurs while ((move = mp.next_move()) != MOVE_NONE)