Tuning of pawns, for classical evaluation:
Passed STC:
https://tests.stockfishchess.org/tests/view/
5f771f0e52560f5fc78559ec
LLR: 2.96 (-2.94,2.94) {-0.25,1.25}
Total: 252696 W: 50321 L: 49692 D: 152683
Ptnml(0-2): 4614, 29845, 57049, 29978, 4862
Passed LTC:
https://tests.stockfishchess.org/tests/view/
5f77cfef090dcf9aaa16d38b
LLR: 2.94 (-2.94,2.94) {0.25,1.25}
Total: 48184 W: 6556 L: 6193 D: 35435
Ptnml(0-2): 335, 4516, 14100, 4733, 408
closes https://github.com/official-stockfish/Stockfish/pull/3169
bench:
4016121
#define S(mg, eg) make_score(mg, eg)
// Pawn penalties
#define S(mg, eg) make_score(mg, eg)
// Pawn penalties
- constexpr Score Backward = S( 8, 27);
- constexpr Score Doubled = S(11, 55);
- constexpr Score Isolated = S( 5, 17);
- constexpr Score WeakLever = S( 2, 54);
- constexpr Score WeakUnopposed = S(15, 25);
+ constexpr Score Backward = S( 8, 25);
+ constexpr Score Doubled = S(10, 55);
+ constexpr Score Isolated = S( 3, 15);
+ constexpr Score WeakLever = S( 3, 55);
+ constexpr Score WeakUnopposed = S(13, 25);
// Bonus for blocked pawns at 5th or 6th rank
// Bonus for blocked pawns at 5th or 6th rank
- constexpr Score BlockedPawn[2] = { S(-13, -4), S(-4, 3) };
+ constexpr Score BlockedPawn[2] = { S(-13, -4), S(-5, 2) };
constexpr Score BlockedStorm[RANK_NB] = {
S(0, 0), S(0, 0), S(76, 78), S(-10, 15), S(-7, 10), S(-4, 6), S(-1, 2)
};
// Connected pawn bonus
constexpr Score BlockedStorm[RANK_NB] = {
S(0, 0), S(0, 0), S(76, 78), S(-10, 15), S(-7, 10), S(-4, 6), S(-1, 2)
};
// Connected pawn bonus
- constexpr int Connected[RANK_NB] = { 0, 7, 8, 11, 24, 45, 85 };
+ constexpr int Connected[RANK_NB] = { 0, 5, 7, 11, 24, 48, 86 };
// 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.
// 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.
if (support | phalanx)
{
int v = Connected[r] * (2 + bool(phalanx) - bool(opposed))
if (support | phalanx)
{
int v = Connected[r] * (2 + bool(phalanx) - bool(opposed))
- + 21 * popcount(support);
+ + 22 * popcount(support);
score += make_score(v, v * (r - 2) / 4);
}
score += make_score(v, v * (r - 2) / 4);
}