From 7f300a769848c695fb28da444b0c3f4c1d919945 Mon Sep 17 00:00:00 2001 From: Joona Kiiski Date: Tue, 25 Aug 2015 20:52:44 +0100 Subject: [PATCH] History gravity Instead of using hard coded Min and Max values for history, always adjust the old value slightly downwards before adding a new value. The adjustment acts like gravity that prevents the value escaping too far from zero. Bench: 8020484 Resolves #407 --- src/movepick.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/movepick.h b/src/movepick.h index b281bd42..412c08e2 100644 --- a/src/movepick.h +++ b/src/movepick.h @@ -39,7 +39,7 @@ template struct Stats { - static const Value Max = Value(250); + static const Value Max = Value(1<<28); const T* operator[](Piece pc) const { return table[pc]; } T* operator[](Piece pc) { return table[pc]; } @@ -53,8 +53,8 @@ struct Stats { void update(Piece pc, Square to, Value v) { - if (abs(table[pc][to] + v) < Max) - table[pc][to] += v; + table[pc][to] -= table[pc][to] * std::min(abs(int(v)), 512) / 512; + table[pc][to] += int(v) * 64; } private: -- 2.39.2