Simplify time management reduction logic

Simplify the time management reduction logic by replacing the previous sigmoid
function with the linear interpolate function introduced in #6729 , resulting
in a cleaner and more efficient calculation of move stability that avoids
unnecessary exponential operations.

Passed STC non-reg:
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 161856 W: 41933 L: 41852 D: 78071
Ptnml(0-2): 418, 18137, 43792, 18108, 473
https://tests.stockfishchess.org/tests/view/69e117a46f344a1917600148

Passed LTC non-reg:
LLR: 2.95 (-2.94,2.94) <-1.75,0.25>
Total: 108726 W: 27819 L: 27692 D: 53215
Ptnml(0-2): 59, 11084, 31942, 11227, 51
https://tests.stockfishchess.org/tests/view/69e563c00e9667dd5a7652ac

This is a follow-up for #6091  #6729

closes https://github.com/official-stockfish/Stockfish/pull/6765

No functional change
This commit is contained in:
FauziAkram
2026-04-26 09:35:37 +02:00
committed by Joost VandeVondele
parent 767dcfe48d
commit c787509663
+3 -4
View File
@@ -524,10 +524,9 @@ bool Search::Worker::iterative_deepening() {
fallingEval = std::clamp(fallingEval, 0.581, 1.655);
// If the bestMove is stable over several iterations, reduce time accordingly
double k = 0.476;
double center = lastBestMoveDepth + 11.565;
timeReduction = 0.64 + 0.93 / (0.953 + std::exp(-k * (completedDepth - center)));
timeReduction = std::clamp(
interpolate(double(completedDepth - lastBestMoveDepth), 5.0, 18.0, 0.65, 1.55), 0.65,
1.55);
double reduction = (1.5 + mainThread->previousTimeReduction) / (2.255 * timeReduction);