From fc0a1f37cf2029af3d35221423da7ac512afbf88 Mon Sep 17 00:00:00 2001 From: candirufish Date: Wed, 9 May 2018 09:18:22 +0200 Subject: [PATCH 1/1] Tuned some pawns and evaluation constants MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Tuned values in pawns.cpp and evaluate.cpp after a SPSA session: 419k games 60sec 600nodetime. We have adjusted the PassedRank[] output of the SPSA session to keep increasing values with rank, and PassedFile[] output to keep the West <–> East symmetry of the evaluation. STC: LLR: 2.95 (-2.94,2.94) [0.00,4.00] Total: 58948 W: 12431 L: 12046 D: 34471 http://tests.stockfishchess.org/tests/view/5af2302f0ebc5968e6523f0a LTC: LLR: 2.96 (-2.94,2.94) [0.00,4.00] Total: 22211 W: 3468 L: 3251 D: 15492 http://tests.stockfishchess.org/tests/view/5af264c80ebc5968e6523f1a See https://github.com/official-stockfish/Stockfish/pull/1587 and https://github.com/official-stockfish/Stockfish/pull/1590 bench: 4437531 --- src/evaluate.cpp | 8 ++++---- src/pawns.cpp | 38 +++++++++++++++++++------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index 275d7ae1..d2aab71d 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -146,17 +146,17 @@ namespace { // PassedRank[Rank] contains a bonus according to the rank of a passed pawn constexpr Score PassedRank[RANK_NB] = { - S(0, 0), S(5, 7), S(5, 13), S(32, 42), S(70, 70), S(172, 170), S(217, 269) + S(0, 0), S(5, 7), S(5, 13), S(18, 23), S(74, 58), S(164, 166), S(268, 243) }; // PassedFile[File] contains a bonus according to the file of a passed pawn constexpr Score PassedFile[FILE_NB] = { - S( 9, 10), S(2, 10), S(1, -8), S(-20,-12), - S(-20,-12), S(1, -8), S(2, 10), S( 9, 10) + S( 15, 7), S(-5, 14), S( 1, -5), S(-22,-11), + S(-22,-11), S( 1, -5), S(-5, 14), S( 15, 7) }; // PassedDanger[Rank] contains a term to weight the passed score - constexpr int PassedDanger[RANK_NB] = { 0, 0, 0, 2, 7, 12, 19 }; + constexpr int PassedDanger[RANK_NB] = { 0, 0, 0, 3, 6, 12, 21 }; // KingProtector[PieceType-2] contains a penalty according to distance from king constexpr Score KingProtector[] = { S(3, 5), S(4, 3), S(3, 0), S(1, -1) }; diff --git a/src/pawns.cpp b/src/pawns.cpp index 8b997b60..b8a00242 100644 --- a/src/pawns.cpp +++ b/src/pawns.cpp @@ -32,42 +32,42 @@ namespace { #define S(mg, eg) make_score(mg, eg) // Isolated pawn penalty - constexpr Score Isolated = S(13, 18); + constexpr Score Isolated = S(13, 16); // Backward pawn penalty - constexpr Score Backward = S(24, 12); + constexpr Score Backward = S(17, 11); // Connected pawn bonus by opposed, phalanx, #support and rank Score Connected[2][2][3][RANK_NB]; // Doubled pawn penalty - constexpr Score Doubled = S(18, 38); + constexpr Score Doubled = S(13, 40); // 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. constexpr Value ShelterStrength[int(FILE_NB) / 2][RANK_NB] = { - { V( -9), V(64), V(77), V( 44), V( 4), V( -1), V(-11) }, - { V(-15), V(83), V(51), V(-10), V( 1), V(-10), V(-28) }, - { V(-18), V(84), V(27), V(-12), V(21), V( -7), V(-36) }, - { V( 12), V(79), V(25), V( 19), V( 9), V( -6), V(-33) } + { V( 7), V(76), V(84), V( 38), V( 7), V( 30), V(-19) }, + { V(-3), V(93), V(52), V(-17), V(12), V(-22), V(-35) }, + { V(-6), V(83), V(25), V(-24), V(15), V( 22), V(-39) }, + { V(11), V(83), V(19), V( 8), V(18), V(-21), V(-30) } }; // Danger of enemy pawns moving toward our king by [type][distance from edge][rank]. // For the unopposed and unblocked cases, RANK_1 = 0 is used when opponent has // no pawn on the given file, or their pawn is behind our king. constexpr Value StormDanger[][4][RANK_NB] = { - { { V( 4), V( 73), V( 132), V(46), V(31) }, // Unopposed - { V( 1), V( 64), V( 143), V(26), V(13) }, - { V( 1), V( 47), V( 110), V(44), V(24) }, - { V( 0), V( 72), V( 127), V(50), V(31) } }, - { { V( 0), V( 0), V( 19), V(23), V( 1) }, // BlockedByPawn - { V( 0), V( 0), V( 88), V(27), V( 2) }, - { V( 0), V( 0), V( 101), V(16), V( 1) }, - { V( 0), V( 0), V( 111), V(22), V(15) } }, - { { V(22), V( 45), V( 104), V(62), V( 6) }, // Unblocked - { V(31), V( 30), V( 99), V(39), V(19) }, - { V(23), V( 29), V( 96), V(41), V(15) }, - { V(21), V( 23), V( 116), V(41), V(15) } } + { { V(11), V( 79), V(132), V( 68), V( 33) }, // Unopposed + { V( 4), V(104), V(155), V( 4), V( 21) }, + { V(-7), V( 59), V(142), V( 45), V( 30) }, + { V( 0), V( 62), V(113), V( 43), V( 13) } }, + { { V( 0), V( 0), V( 37), V( 5), V(-48) }, // BlockedByPawn + { V( 0), V( 0), V( 68), V(-12), V( 13) }, + { V( 0), V( 0), V(111), V(-25), V( -3) }, + { V( 0), V( 0), V(108), V( 14), V( 21) } }, + { { V(38), V( 78), V( 83), V( 35), V( 22) }, // Unblocked + { V(33), V(-15), V(108), V( 12), V( 28) }, + { V( 8), V( 25), V( 94), V( 68), V( 25) }, + { V( 6), V( 48), V(120), V( 68), V( 40) } } }; #undef S -- 2.39.2