From 439aea9ab79373f4520d157ef5feac6cff0ded56 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Tue, 2 Feb 2010 09:10:15 +0100 Subject: [PATCH 1/1] Convert gains to use a piece-to mapping Instead of piece-from-to, in this way it is similar to what we already do for history. Almost no change, but seems a bit simpler in this way. After 995 games at 1+0 Mod vs Orig +207 =596 -192 +5 ELO Signed-off-by: Marco Costalba --- src/history.cpp | 14 +++++++------- src/history.h | 6 +++--- src/search.cpp | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/history.cpp b/src/history.cpp index 8c20f7e0..2bb34510 100644 --- a/src/history.cpp +++ b/src/history.cpp @@ -42,7 +42,7 @@ History::History() { clear(); } void History::clear() { memset(history, 0, 2 * 8 * 64 * sizeof(int)); - memset(maxStaticValueDelta, 0, 16 * 64 * 64 * sizeof(int)); + memset(maxStaticValueDelta, 0, 2 * 8 * 64 * sizeof(int)); } @@ -101,15 +101,15 @@ int History::move_ordering_score(Piece p, Square to) const { /// gain of a move given the delta of the static position evaluations /// before and after the move. -void History::set_gain(Piece p, Square from, Square to, Value delta) +void History::set_gain(Piece p, Square to, Value delta) { - if (delta >= maxStaticValueDelta[p][from][to]) - maxStaticValueDelta[p][from][to] = delta; + if (delta >= maxStaticValueDelta[p][to]) + maxStaticValueDelta[p][to] = delta; else - maxStaticValueDelta[p][from][to]--; + maxStaticValueDelta[p][to]--; } -Value History::gain(Piece p, Square from, Square to) const +Value History::gain(Piece p, Square to) const { - return Value(maxStaticValueDelta[p][from][to]); + return Value(maxStaticValueDelta[p][to]); } diff --git a/src/history.h b/src/history.h index b1216947..b1121d85 100644 --- a/src/history.h +++ b/src/history.h @@ -50,12 +50,12 @@ public: void success(Piece p, Square to, Depth d); void failure(Piece p, Square to, Depth d); int move_ordering_score(Piece p, Square to) const; - void set_gain(Piece p, Square from, Square to, Value delta); - Value gain(Piece p, Square from, Square to) const; + void set_gain(Piece p, Square to, Value delta); + Value gain(Piece p, Square to) const; private: int history[16][64]; // [piece][square] - int maxStaticValueDelta[16][64][64]; // [piece][from_square][to_square] + int maxStaticValueDelta[16][64]; // [piece][from_square][to_square] }; diff --git a/src/search.cpp b/src/search.cpp index 987b954a..9d4c6d24 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -1607,7 +1607,7 @@ namespace { if (predictedDepth >= OnePly) preFutilityValueMargin = FutilityMargins[int(predictedDepth)]; - preFutilityValueMargin += H.gain(pos.piece_on(move_from(move)), move_from(move), move_to(move)) + 45; + preFutilityValueMargin += H.gain(pos.piece_on(move_from(move)), move_to(move)) + 45; futilityValueScaled = ss[ply].eval + preFutilityValueMargin - moveCount * IncrementalFutilityMargin; @@ -2704,7 +2704,7 @@ namespace { && pos.captured_piece() == NO_PIECE_TYPE && !move_is_castle(m) && !move_is_promotion(m)) - H.set_gain(pos.piece_on(move_to(m)), move_from(m), move_to(m), -(before + after)); + H.set_gain(pos.piece_on(move_to(m)), move_to(m), -(before + after)); } -- 2.39.2