Tuned Futility Equation
authorprotonspring <mike@whiteley.org>
Wed, 21 Aug 2019 01:52:18 +0000 (19:52 -0600)
committerSt├ęphane Nicolet <stephanenicoletsuriphone@gmail.com>
Wed, 21 Aug 2019 07:34:46 +0000 (09:34 +0200)
@Vizvezdenec array suggested that alternate values may be better than current
master (see pull request #2270 ). I tuned some linear equations to more closely
represent his values and it passed. These futility values seem quite sensitive,
so perhaps additional Elo improvements can be found here.

STC
LLR: 2.95 (-2.94,2.94) [0.50,4.50]
Total: 12257 W: 2820 L: 2595 D: 6842
http://tests.stockfishchess.org/tests/view/5d5b2f360ebc5925cf1111ac

LTC
LLR: 2.96 (-2.94,2.94) [0.00,3.50]
Total: 20273 W: 3497 L: 3264 D: 13512
http://tests.stockfishchess.org/tests/view/5d5c0d250ebc5925cf111ac3

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

------------------------------------------
How to continue from there ?

a) we can try a simpler version for the futility margin, this would
   be a simplification :
    margin = 188 * (depth - improving)

b) on the other direction, we can try a complexification by trying
   again to gain Elo with an complete array of futility values.

------------------------------------------

Bench: 4330402

src/search.cpp

index b154c6d9f647bb48cf3eb45d52689f0d0943e0be..69488ad583fb81f1798487c5be2f6422a0db9a10 100644 (file)
@@ -64,7 +64,7 @@ namespace {
   // Razor and futility margins
   constexpr int RazorMargin = 661;
   Value futility_margin(Depth d, bool improving) {
-    return Value((168 - 51 * improving) * d / ONE_PLY);
+    return Value(198 * (d / ONE_PLY) - 178 * improving);
   }
 
   // Reductions lookup table, initialized at startup