1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-05-02 09:39:36 +00:00

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
This commit is contained in:
protonspring 2019-04-11 08:38:53 -06:00 committed by Marco Costalba
parent 5928cb2b30
commit a2cdb6e5d2

View file

@ -36,7 +36,7 @@ namespace {
constexpr Score Isolated = S( 5, 15); constexpr Score Isolated = S( 5, 15);
// Connected pawn bonus // 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]. // 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. // 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)); assert(pos.piece_on(s) == make_piece(Us, PAWN));
File f = file_of(s); File f = file_of(s);
Rank r = relative_rank(Us, s);
e->semiopenFiles[Us] &= ~(1 << f); e->semiopenFiles[Us] &= ~(1 << f);
e->pawnAttacksSpan[Us] |= pawn_attack_span(Us, s); e->pawnAttacksSpan[Us] |= pawn_attack_span(Us, s);
@ -117,8 +118,7 @@ namespace {
&& popcount(phalanx) >= popcount(leverPush)) && popcount(phalanx) >= popcount(leverPush))
e->passedPawns[Us] |= s; e->passedPawns[Us] |= s;
else if ( stoppers == square_bb(s + Up) else if (stoppers == square_bb(s + Up) && r >= RANK_5)
&& relative_rank(Us, s) >= RANK_5)
{ {
b = shift<Up>(support) & ~theirPawns; b = shift<Up>(support) & ~theirPawns;
while (b) while (b)
@ -129,8 +129,7 @@ namespace {
// Score this pawn // Score this pawn
if (support | phalanx) if (support | phalanx)
{ {
int r = relative_rank(Us, s); int v = (phalanx ? 3 : 2) * Connected[r];
int v = phalanx ? Connected[r] + Connected[r + 1] : 2 * Connected[r];
v = 17 * popcount(support) + (v >> (opposed + 1)); v = 17 * popcount(support) + (v >> (opposed + 1));
score += make_score(v, v * (r - 2) / 4); score += make_score(v, v * (r - 2) / 4);
} }