Skip to content

Commit

Permalink
Another set of tuned values after one million games
Browse files Browse the repository at this point in the history
Another set of tuned values, obtained by a long session of one million games.

STC:
LLR: 2.95 (-2.94,2.94) [0.00,4.00]
Total: 15810 W: 3687 L: 3458 D: 8665
http://tests.stockfishchess.org/tests/view/5b2d32f60ebc5902b2e55d9e

LTC:
LLR: 2.95 (-2.94,2.94) [0.00,4.00]
Total: 102118 W: 18146 L: 17651 D: 66321
http://tests.stockfishchess.org/tests/view/5b2d372c0ebc5902b2e55e0a

Closes #1658

Bench: 4557946
  • Loading branch information
candirufish authored and snicolet committed Jun 23, 2018
1 parent 34321fc commit efd4ca2
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 26 deletions.
29 changes: 15 additions & 14 deletions src/evaluate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -142,32 +142,32 @@ namespace {

// ThreatByKing[on one/on many] contains bonuses for king attacks on
// pawns or pieces which are not pawn-defended.
constexpr Score ThreatByKing[] = { S(25, 57), S(4, 139) };
constexpr Score ThreatByKing[] = { S(30, 62), S(-9, 160) };

// PassedRank[Rank] contains a bonus according to the rank of a passed pawn
constexpr Score PassedRank[RANK_NB] = {
S(0, 0), S(7, 10), S(7, 26), S(14, 31), S(42, 63), S(178, 167), S(279, 244)
S(0, 0), S(4, 17), S(7, 20), S(14, 36), S(42, 62), S(165, 171), S(279, 252)
};

// PassedFile[File] contains a bonus according to the file of a passed pawn
constexpr Score PassedFile[FILE_NB] = {
S( 17, 6), S(-4, 7), S( 2,-12), S(-17,-14),
S(-17,-14), S( 2,-12), S(-4, 7), S( 17, 6)
S( 11, 14), S( 0, -5), S(-2, -8), S(-25,-13),
S(-25,-13), S(-2, -8), S( 0, -5), S( 11, 14)
};

// PassedDanger[Rank] contains a term to weight the passed score
constexpr int PassedDanger[RANK_NB] = { 0, 0, 0, 3, 6, 12, 21 };
constexpr int PassedDanger[RANK_NB] = { 0, 0, 0, 2, 7, 12, 19 };

// KingProtector[PieceType-2] contains a penalty according to distance from king
constexpr Score KingProtector[] = { S(3, 5), S(5, 3), S(3, 0), S(0, -2) };
constexpr Score KingProtector[] = { S(4, 6), S(6, 3), S(1, 0), S(0, -2) };

// Assorted bonuses and penalties
constexpr Score BishopPawns = S( 3, 5);
constexpr Score CloseEnemies = S( 8, 0);
constexpr Score Connectivity = S( 3, 1);
constexpr Score CorneredBishop = S( 50, 50);
constexpr Score Hanging = S( 52, 30);
constexpr Score HinderPassedPawn = S( 5, 2);
constexpr Score HinderPassedPawn = S( 5, -1);
constexpr Score KnightOnQueen = S( 21, 11);
constexpr Score LongDiagonalBishop = S( 22, 0);
constexpr Score MinorBehindPawn = S( 16, 0);
Expand All @@ -177,10 +177,10 @@ namespace {
constexpr Score SliderOnQueen = S( 42, 21);
constexpr Score ThreatByPawnPush = S( 49, 30);
constexpr Score ThreatByRank = S( 16, 3);
constexpr Score ThreatBySafePawn = S(186,140);
constexpr Score ThreatBySafePawn = S(165,133);
constexpr Score TrappedRook = S( 92, 0);
constexpr Score WeakQueen = S( 50, 10);
constexpr Score WeakUnopposedPawn = S( 14, 19);
constexpr Score WeakUnopposedPawn = S( 5, 26);

#undef S

Expand Down Expand Up @@ -428,7 +428,7 @@ namespace {
// Main king safety evaluation
if (kingAttackersCount[Them] > 1 - pos.count<QUEEN>(Them))
{
int kingDanger = -mg_value(score);
int kingDanger = 0;
unsafeChecks = 0;

// Attacked squares defended at most once by our queen or king
Expand Down Expand Up @@ -475,10 +475,11 @@ namespace {

kingDanger += kingAttackersCount[Them] * kingAttackersWeight[Them]
+ 64 * kingAttacksCount[Them]
+ 182 * popcount(kingRing[Us] & weak)
+ 128 * popcount(pos.blockers_for_king(Us) | unsafeChecks)
- 857 * !pos.count<QUEEN>(Them)
+ 31 ;
+ 183 * popcount(kingRing[Us] & weak)
+ 122 * popcount(pos.blockers_for_king(Us) | unsafeChecks)
- 860 * !pos.count<QUEEN>(Them)
- 7 * mg_value(score) / 8
+ 17 ;

// Transform the kingDanger units into a Score, and subtract it from the evaluation
if (kingDanger > 0)
Expand Down
24 changes: 12 additions & 12 deletions src/pawns.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,35 +32,35 @@ namespace {
#define S(mg, eg) make_score(mg, eg)

// Pawn penalties
constexpr Score Isolated = S( 6, 16);
constexpr Score Backward = S(15, 21);
constexpr Score Doubled = S( 8, 44);
constexpr Score Isolated = S( 4, 20);
constexpr Score Backward = S(21, 22);
constexpr Score Doubled = S(12, 54);

// Connected pawn bonus by opposed, phalanx, #support and rank
Score Connected[2][2][3][RANK_NB];

// 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( 28), V(79), V( 75), V( 46), V( 14), V( 31), V(-14) },
{ V(-48), V(50), V( 29), V(-21), V(-41), V(-23), V(-45) },
{ V(-25), V(50), V( 17), V(-33), V( -5), V( 9), V(-35) },
{ V(-29), V(57), V(-25), V(-48), V( -4), V(-46), V(-64) }
{ V( 16), V(82), V( 83), V( 47), V( 19), V( 44), V( 4) },
{ V(-51), V(56), V( 33), V(-58), V(-57), V(-50), V(-39) },
{ V(-20), V(71), V( 16), V(-10), V( 13), V( 19), V(-30) },
{ V(-29), V(12), V(-21), V(-40), V(-15), V(-77), V(-91) }
};

// Danger of enemy pawns moving toward our king by [distance from edge][rank].
// RANK_1 = 0 is used for files where the enemy has no pawn, or their pawn
// is behind our king.
constexpr Value UnblockedStorm[int(FILE_NB) / 2][RANK_NB] = {
{ V( 34), V( 58), V(113), V( 61), V(37), V( 24), V( 21) },
{ V( 23), V( 46), V( 93), V( 10), V( 2), V(-20), V( 6) },
{ V( -6), V( 22), V(106), V( 28), V( 6), V(-33), V( -1) },
{ V(-17), V( 33), V( 71), V( 14), V(-9), V(-21), V(-16) }
{ V(54), V( 48), V( 99), V(91), V(42), V( 32), V( 31) },
{ V(34), V( 27), V(105), V(38), V(32), V(-19), V( 3) },
{ V(-4), V( 28), V( 87), V(18), V(-3), V(-14), V(-11) },
{ V(-5), V( 22), V( 75), V(14), V( 2), V( -5), V(-19) }
};

// Danger of blocked enemy pawns storming our king, by rank
constexpr Value BlockedStorm[RANK_NB] =
{ V(0), V(0), V( 58), V(-13), V(-22), V(-3), V(-5) };
{ V(0), V(0), V( 81), V(-9), V(-5), V(-1), V(26) };

#undef S
#undef V
Expand Down

1 comment on commit efd4ca2

@candirufish
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe the threat by king -9 and hinder pass pawn -1 can still be tuned? It feels unnatural but my current test is failing so maybe it is compensated somewhere?

Please sign in to comment.