Tweak first picked move (ttMove) reduction rule:
Instead of always resetting the reduction to 0, we now only do so if the current reduction is less than 2.
If the current reduction is 2 or more, we decrease it by 2 instead.
Passed STC:
LLR: 2.93 (-2.94,2.94) <0.00,2.00>
Total: 109504 W: 28340 L: 27919 D: 53245
Ptnml(0-2): 305, 12848, 28028, 13263, 308
https://tests.stockfishchess.org/tests/view/
6658c2fa6b0e318cefa900c2
Passed LTC:
LLR: 2.96 (-2.94,2.94) <0.50,2.50>
Total: 130410 W: 33248 L: 32738 D: 64424
Ptnml(0-2): 53, 14139, 36328, 14615, 70
https://tests.stockfishchess.org/tests/view/
6658dd8a6b0e318cefa90173
closes https://github.com/official-stockfish/Stockfish/pull/5321
bench:
1224588
if ((ss + 1)->cutoffCnt > 3)
r++;
- // Set reduction to 0 for first picked move (ttMove) (~2 Elo)
- // Nullifies all previous reduction adjustments to ttMove and leaves only history to do them
+ // For first picked move (ttMove) reduce reduction
+ // but never allow it to go below 0 (~3 Elo)
else if (move == ttMove)
- r = 0;
+ r = std::max(0, r - 2);
ss->statScore = 2 * thisThread->mainHistory[us][move.from_to()]
+ (*contHist[0])[movedPiece][move.to_sq()]