Tweak reductions formula: 0.88 * depth + 0.12
authorStefan Geschwentner <locutus2@users.noreply.github.com>
Mon, 23 Jul 2018 07:16:14 +0000 (09:16 +0200)
committerStéphane Nicolet <cassio@free.fr>
Mon, 23 Jul 2018 07:16:29 +0000 (09:16 +0200)
Replace the depth part in the reduction formula for higher depths
with a slower growing linear function. So for depth > 3 less reductions
are used.

What we can try next:
- move the break point to even higher depths
- tweak the slope for lower and higher depth
- even possibly use a further higher depth threshold for a another
  slower growing function

STC:
LLR: 2.95 (-2.94,2.94) [0.00,5.00]
Total: 25317 W: 5763 L: 5505 D: 14049
http://tests.stockfishchess.org/tests/view/5b54f9f70ebc5902bdb840ed

LTC:
LLR: 2.96 (-2.94,2.94) [0.00,5.00]
Total: 7451 W: 1320 L: 1167 D: 4964
http://tests.stockfishchess.org/tests/view/5b54feeb0ebc5902bdb84244

Closes https://github.com/official-stockfish/Stockfish/pull/1692

Bench: 4617359

src/search.cpp

index af7a5c1..89636f2 100644 (file)
@@ -153,7 +153,8 @@ void Search::init() {
       for (int d = 1; d < 64; ++d)
           for (int mc = 1; mc < 64; ++mc)
           {
-              double r = log(d) * log(mc) / 1.95;
+              double slope = d > 2 ? 0.88 * d + 0.36 : d;
+              double r = log(slope) * log(mc) / 1.95;
 
               Reductions[NonPV][imp][d][mc] = int(std::round(r));
               Reductions[PV][imp][d][mc] = std::max(Reductions[NonPV][imp][d][mc] - 1, 0);