From a2cdb6e5d2b33deedfe09baa43708151c45c802a Mon Sep 17 00:00:00 2001 From: protonspring Date: Thu, 11 Apr 2019 08:38:53 -0600 Subject: [PATCH] Simplify Connected Pawn Scoring #2090 This is a functional simplification that simplifies connected scoring of pawns. STC LLR: 2.95 (-2.94,2.94) [-3.00,1.00] Total: 37472 W: 8318 L: 8228 D: 20926 http://tests.stockfishchess.org/tests/view/5cae74ef0ebc5925cf00f8a5 LTC LLR: 2.96 (-2.94,2.94) [-3.00,1.00] Total: 43035 W: 7366 L: 7281 D: 28388 http://tests.stockfishchess.org/tests/view/5caea3b50ebc5925cf00fe1e Bench: 3470173 --- src/pawns.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/pawns.cpp b/src/pawns.cpp index 7edaa6e1..b034f478 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -36,7 +36,7 @@ namespace { constexpr Score Isolated = S( 5, 15); // Connected pawn bonus - constexpr int Connected[RANK_NB] = { 0, 13, 24, 18, 65, 100, 175, 330 }; + constexpr int Connected[RANK_NB] = { 0, 13, 17, 24, 59, 96, 171 }; // Strength of pawn shelter for our king by [distance from edge][rank]. // RANK_1 = 0 is used for files where we have no pawn, or pawn is behind our king. @@ -89,6 +89,7 @@ namespace { assert(pos.piece_on(s) == make_piece(Us, PAWN)); File f = file_of(s); + Rank r = relative_rank(Us, s); e->semiopenFiles[Us] &= ~(1 << f); e->pawnAttacksSpan[Us] |= pawn_attack_span(Us, s); @@ -117,8 +118,7 @@ namespace { && popcount(phalanx) >= popcount(leverPush)) e->passedPawns[Us] |= s; - else if ( stoppers == square_bb(s + Up) - && relative_rank(Us, s) >= RANK_5) + else if (stoppers == square_bb(s + Up) && r >= RANK_5) { b = shift(support) & ~theirPawns; while (b) @@ -129,8 +129,7 @@ namespace { // Score this pawn if (support | phalanx) { - int r = relative_rank(Us, s); - int v = phalanx ? Connected[r] + Connected[r + 1] : 2 * Connected[r]; + int v = (phalanx ? 3 : 2) * Connected[r]; v = 17 * popcount(support) + (v >> (opposed + 1)); score += make_score(v, v * (r - 2) / 4); } -- 2.39.2