From 4f5680950a4e4c55da2877e1be91efd2be1c76ba Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sun, 17 Jun 2012 09:18:18 +0100 Subject: [PATCH 1/1] Add min pawn-king distance to endgame evaluation At endgame time push the king near his pawns (actually one of them). Original idea is from Critter (although slightly different), implementation is mine and is completely different from the original, in particular it is different the algorithm to compute the minimum distance from pawns. After 19895 games at 15"+0.05 Mod vs Orig 3638 - 3248 - 13009 ELO +7 Signed-off-by: Marco Costalba --- src/pawns.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pawns.cpp b/src/pawns.cpp index f71e2a39..73a9b904 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -268,7 +268,7 @@ Score PawnEntry::update_safety(const Position& pos, Square ksq) { while (!(DistanceRingsBB[ksq][minKPdistance[Us]++] & pawns)) {} if (relative_rank(Us, ksq) > RANK_4) - return kingSafety[Us] = SCORE_ZERO; + return kingSafety[Us] = make_score(0, -16 * minKPdistance[Us]); Value bonus = shelter_storm(pos, ksq); @@ -279,7 +279,7 @@ Score PawnEntry::update_safety(const Position& pos, Square ksq) { if (pos.can_castle(make_castle_right(Us, QUEEN_SIDE))) bonus = std::max(bonus, shelter_storm(pos, relative_square(Us, SQ_C1))); - return kingSafety[Us] = make_score(bonus, 0); + return kingSafety[Us] = make_score(bonus, -16 * minKPdistance[Us]); } // Explicit template instantiation -- 2.39.2