X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fmaterial.cpp;h=9a120661eb249306d1a52994a4485ea1b6bf60f9;hp=9e46d05d4e74ffc237cc081458e628ffef9ba265;hb=ad937d0b2d2a9450686b9f3412c891a68ff19310;hpb=299afcd88653739b80691991f7e5072a0505f542 diff --git a/src/material.cpp b/src/material.cpp index 9e46d05d..9a120661 100644 --- a/src/material.cpp +++ b/src/material.cpp @@ -27,26 +27,23 @@ using namespace std; namespace { - // Values modified by Joona Kiiski - const Value MidgameLimit = Value(15581); - const Value EndgameLimit = Value(3998); - // Polynomial material balance parameters // pair pawn knight bishop rook queen - const int LinearCoefficients[6] = { 1852, -162, -1122, -183, 249, -52 }; + const int LinearCoefficients[6] = { 1852, -162, -1122, -183, 249, -154 }; - const int QuadraticCoefficientsSameColor[][PIECE_TYPE_NB] = { + const int QuadraticCoefficientsSameSide[][PIECE_TYPE_NB] = { + // OUR PIECES // pair pawn knight bishop rook queen { 0 }, // Bishop pair { 39, 2 }, // Pawn - { 35, 271, -4 }, // Knight + { 35, 271, -4 }, // knight OUR PIECES { 0, 105, 4, 0 }, // Bishop { -27, -2, 46, 100, -141 }, // Rook - { 58, 29, 83, 148, -163, 0 } // Queen + {-177, 25, 129, 142, -137, 0 } // Queen }; - const int QuadraticCoefficientsOppositeColor[][PIECE_TYPE_NB] = { + const int QuadraticCoefficientsOppositeSide[][PIECE_TYPE_NB] = { // THEIR PIECES // pair pawn knight bishop rook queen { 0 }, // Bishop pair @@ -54,7 +51,7 @@ namespace { { 10, 62, 0 }, // Knight OUR PIECES { 57, 64, 39, 0 }, // Bishop { 50, 40, 23, -22, 0 }, // Rook - { 106, 101, 3, 151, 171, 0 } // Queen + { 98, 105, -39, 141, 274, 0 } // Queen }; // Endgame evaluation and scaling functions are accessed directly and not through @@ -110,22 +107,12 @@ namespace { v = LinearCoefficients[pt1]; for (pt2 = NO_PIECE_TYPE; pt2 <= pt1; ++pt2) - v += QuadraticCoefficientsSameColor[pt1][pt2] * pieceCount[Us][pt2] - + QuadraticCoefficientsOppositeColor[pt1][pt2] * pieceCount[Them][pt2]; + v += QuadraticCoefficientsSameSide[pt1][pt2] * pieceCount[Us][pt2] + + QuadraticCoefficientsOppositeSide[pt1][pt2] * pieceCount[Them][pt2]; value += pc * v; } - // Queen vs. 3 minors slightly favours the minors - if (pieceCount[Us][QUEEN] == 1 && pieceCount[Them][QUEEN] == 0) - { - int n = pieceCount[Them][KNIGHT] - pieceCount[Us][KNIGHT]; - int b = pieceCount[Them][BISHOP] - pieceCount[Us][BISHOP]; - - if ((n == 2 && b == 1) || (n == 1 && b == 2)) - value -= 66 * 16; - } - return value; }