diff --git a/src/Lynx.Cli/appsettings.json b/src/Lynx.Cli/appsettings.json index ac64e3ec0..ab8f701f1 100644 --- a/src/Lynx.Cli/appsettings.json +++ b/src/Lynx.Cli/appsettings.json @@ -46,44 +46,44 @@ // Evaluation "DoubledPawnPenalty": { - "MG": -5, - "EG": -14 + "MG": -6, + "EG": -13 }, "IsolatedPawnPenalty": { - "MG": -17, + "MG": -16, "EG": -14 }, "OpenFileRookBonus": { "MG": 60, - "EG": 28 + "EG": 25 }, "SemiOpenFileRookBonus": { - "MG": 25, - "EG": 23 + "MG": 26, + "EG": 22 }, "BishopMobilityBonus": { - "MG": 10, - "EG": 10 + "MG": 9, + "EG": 11 }, "QueenMobilityBonus": { "MG": 3, "EG": 9 }, "SemiOpenFileKingPenalty": { - "MG": -38, - "EG": 25 + "MG": -35, + "EG": 24 }, "OpenFileKingPenalty": { - "MG": -107, - "EG": 4 + "MG": -101, + "EG": 5 }, "KingShieldBonus": { - "MG": 19, - "EG": -6 + "MG": 17, + "EG": -5 }, "BishopPairBonus": { - "MG": 30, - "EG": 88 + "MG": 29, + "EG": 87 }, "PassedPawnBonus": { "Rank0": { @@ -91,28 +91,28 @@ "EG": 0 }, "Rank1": { - "MG": -2, - "EG": 7 + "MG": -1, + "EG": 5 }, "Rank2": { "MG": -16, "EG": 13 }, "Rank3": { - "MG": -16, - "EG": 44 + "MG": -14, + "EG": 42 }, "Rank4": { - "MG": 20, - "EG": 83 + "MG": 23, + "EG": 80 }, "Rank5": { - "MG": 61, - "EG": 175 + "MG": 72, + "EG": 162 }, "Rank6": { - "MG": 92, - "EG": 257 + "MG": 112, + "EG": 245 }, "Rank7": { "MG": 0, diff --git a/src/Lynx/EvaluationConstants.cs b/src/Lynx/EvaluationConstants.cs index 1bce6c76e..59ed991d9 100644 --- a/src/Lynx/EvaluationConstants.cs +++ b/src/Lynx/EvaluationConstants.cs @@ -26,158 +26,158 @@ public static class EvaluationConstants public static readonly int[] MiddleGamePieceValues = [ - +102, +382, +352, +500, +1102, 0, - -102, -382, -352, -500, -1102, 0 + +102, +381, +357, +502, +1118, 0, + -102, -381, -357, -502, -1118, 0 ]; public static readonly int[] EndGamePieceValues = [ - +149, +484, +435, +892, +1531, 0, - -149, -484, -435, -892, -1531, 0 + +145, +465, +412, +861, +1467, 0, + -145, -465, -412, -861, -1467, 0 ]; public static readonly int[] MiddleGamePawnTable = [ 0, 0, 0, 0, 0, 0, 0, 0, - -31, -22, -15, -11, -4, 25, 31, -18, - -29, -24, -5, 11, 19, 27, 26, 7, - -23, -14, 5, 20, 29, 34, 5, -3, - -23, -10, 3, 21, 30, 30, 4, -4, - -26, -18, -3, 4, 15, 22, 18, 1, - -31, -20, -20, -15, -7, 19, 20, -25, + -28, -22, -19, -11, -7, 25, 32, -15, + -25, -22, -6, 7, 16, 27, 27, 8, + -19, -11, 6, 19, 27, 34, 9, -3, + -20, -8, 2, 19, 26, 30, 7, -5, + -22, -19, -5, 2, 14, 23, 18, 3, + -28, -21, -20, -16, -8, 20, 21, -20, 0, 0, 0, 0, 0, 0, 0, 0, ]; public static readonly int[] EndGamePawnTable = [ 0, 0, 0, 0, 0, 0, 0, 0, - 15, 12, 7, -15, 6, 3, -4, -11, - 12, 12, 0, -14, -7, -6, -3, -11, - 28, 20, 0, -22, -18, -13, 8, -1, - 24, 19, -2, -17, -16, -10, 5, -4, - 13, 10, -4, -13, -3, -3, -2, -11, - 17, 12, 9, -15, 17, 7, -1, -7, + 14, 11, 9, -16, 6, 4, -4, -12, + 11, 10, -2, -14, -7, -5, -5, -12, + 27, 19, -1, -22, -16, -12, 5, -3, + 24, 18, -2, -16, -14, -10, 4, -5, + 13, 9, -4, -13, -4, -4, -4, -13, + 16, 11, 9, -11, 12, 8, -1, -9, 0, 0, 0, 0, 0, 0, 0, 0, ]; public static readonly int[] MiddleGameKnightTable = [ - -155, -30, -62, -43, -21, -26, -16, -97, - -46, -25, -2, 16, 18, 23, -13, -17, - -27, 4, 22, 60, 62, 43, 38, -1, - -8, 28, 45, 62, 63, 63, 50, 22, - -4, 27, 48, 50, 60, 61, 51, 21, - -25, 6, 21, 51, 61, 36, 31, -2, - -48, -16, 1, 15, 17, 17, -10, -18, - -170, -33, -59, -33, -19, -17, -24, -91, + -160, -23, -60, -42, -22, -28, -10, -96, + -47, -26, -2, 15, 16, 19, -13, -15, + -17, 4, 20, 58, 58, 41, 35, 1, + -6, 28, 45, 58, 59, 61, 51, 23, + -5, 30, 45, 49, 56, 56, 53, 22, + -23, 9, 19, 49, 59, 36, 32, -4, + -43, -21, 1, 14, 15, 12, -10, -16, + -167, -26, -60, -36, -17, -18, -14, -82, ]; public static readonly int[] EndGameKnightTable = [ - -73, -70, -11, -12, -9, -27, -63, -93, - -21, -1, 15, 9, 12, 10, -12, -20, - -13, 17, 40, 39, 38, 20, 11, -14, - 8, 21, 52, 53, 57, 51, 26, -5, - 5, 28, 51, 55, 59, 47, 32, 0, - -17, 20, 29, 46, 36, 22, 7, -10, - -27, 2, 5, 13, 6, 2, -14, -24, - -79, -70, -7, -14, -10, -25, -60, -93, + -63, -79, -13, -13, -9, -24, -70, -83, + -22, 3, 15, 11, 13, 8, -11, -19, + -20, 16, 42, 40, 40, 21, 14, -17, + 2, 22, 50, 53, 58, 52, 30, -2, + 3, 25, 48, 55, 61, 51, 35, 4, + -19, 19, 31, 45, 37, 21, 9, -10, + -29, 3, 6, 12, 6, 1, -14, -22, + -66, -78, -5, -13, -11, -26, -73, -94, ]; public static readonly int[] MiddleGameBishopTable = [ - -13, 12, -10, -26, -20, -21, -27, 3, - 8, 5, 8, -18, 1, -2, 30, -11, - -5, 8, -3, 4, -6, 14, 8, 32, - -4, -4, -4, 25, 21, -16, 5, 2, - -13, 1, -12, 19, 7, -10, -3, 8, - 6, 8, 8, -5, 6, 7, 10, 27, - 9, 16, 13, -7, -4, 1, 22, -2, - 12, 15, 3, -42, -23, -27, -5, -12, + -14, 7, -9, -28, -25, -20, -40, -2, + 6, 4, 10, -19, 1, -6, 28, -11, + -4, 10, -3, 6, -5, 14, 8, 30, + -5, 1, -1, 27, 22, -15, 7, 1, + -10, 2, -10, 21, 12, -9, 0, 10, + 2, 9, 6, -2, 6, 8, 11, 23, + 8, 12, 12, -8, -3, -3, 23, -5, + 9, 14, 1, -47, -27, -25, -5, -11, ]; public static readonly int[] EndGameBishopTable = [ - -14, 19, -24, 5, -2, 2, 2, -31, - -4, -7, -3, 6, 5, -9, -1, -15, - 15, 16, 9, 4, 14, 5, 8, 10, - 13, 9, 8, -1, -5, 8, 5, 5, - 8, 10, 8, 5, -9, 6, 4, 5, - 13, 4, 1, 2, 7, 1, 4, 7, - -14, -10, -16, 3, 2, -1, 0, -10, - -8, -11, -17, 8, 9, 6, 0, -21, + -9, 17, -25, 3, 2, -3, 8, -30, + -1, -6, -3, 6, 3, -6, -1, -12, + 15, 16, 7, 2, 12, 4, 8, 9, + 11, 7, 6, -1, -9, 9, 8, 5, + 6, 11, 7, 1, -7, 5, 5, 6, + 14, 6, 4, 2, 7, -1, 5, 10, + -11, -9, -12, 4, -1, -1, -2, -11, + -9, -9, -17, 8, 8, 2, 5, -16, ]; public static readonly int[] MiddleGameRookTable = [ - -8, -16, -13, -9, 6, -6, 2, -6, - -30, -13, -14, -15, -3, 0, 19, -6, - -31, -15, -18, -7, 8, 11, 60, 31, - -24, -18, -12, -3, 3, 13, 50, 26, - -18, -12, -5, 4, -1, 14, 40, 23, - -24, -11, -12, 1, 6, 23, 56, 33, - -28, -24, -8, -8, -2, -2, 25, 0, - -5, -8, -8, 2, 15, -1, 11, 7, + -10, -16, -14, -8, 5, -7, 2, -5, + -33, -16, -16, -15, -6, 0, 17, -7, + -32, -14, -18, -5, 7, 12, 57, 29, + -28, -16, -10, 2, 4, 15, 53, 27, + -19, -12, -8, 9, 3, 18, 51, 26, + -26, -8, -13, 2, 6, 20, 55, 33, + -26, -21, -7, -8, -3, -2, 23, 0, + -6, -10, -9, 0, 12, -1, 9, 7, ]; public static readonly int[] EndGameRookTable = [ - 6, 8, 13, 4, -6, 6, 6, -4, - 16, 20, 20, 9, -1, 2, -4, 4, - 9, 7, 10, 3, -9, -9, -23, -21, - 12, 10, 11, 5, -4, -1, -17, -20, - 12, 8, 12, 2, -1, -7, -14, -15, - 12, 13, 2, -6, -11, -13, -21, -15, - 21, 23, 16, 5, -3, 1, -5, 5, - 0, 1, 8, -1, -13, -1, -4, -14, + 4, 4, 10, 1, -8, 4, 3, -7, + 17, 20, 20, 9, -1, 0, -6, 3, + 11, 7, 9, 0, -8, -6, -21, -19, + 12, 12, 11, 4, -3, 2, -18, -19, + 10, 9, 12, 1, 0, -5, -19, -15, + 12, 10, 5, -4, -10, -10, -23, -13, + 19, 21, 13, 5, -4, 0, -5, 3, + -3, 0, 6, -2, -13, -2, -5, -17, ]; public static readonly int[] MiddleGameQueenTable = [ - -16, -20, -20, -2, -11, -41, 5, 0, - 0, -8, 9, -1, 3, 3, 23, 49, - -5, -1, -5, -5, -8, 10, 39, 62, - -9, -14, -13, -3, -4, 2, 17, 29, - -9, -9, -13, -14, -4, 1, 15, 26, - -2, 0, -12, -9, -3, 7, 24, 42, - -15, -18, 5, 9, 7, 0, 7, 36, - -12, -22, -10, 0, -9, -49, -20, 27, + -14, -22, -16, -1, -9, -47, -2, -3, + -4, -11, 8, 1, 4, 2, 21, 47, + -6, -2, -8, -5, -5, 9, 36, 58, + -7, -13, -13, -4, -2, 6, 19, 31, + -11, -12, -12, -13, 1, 3, 17, 29, + -6, -2, -10, -9, -4, 6, 24, 45, + -16, -16, 4, 7, 6, 1, 6, 37, + -9, -23, -8, -2, -10, -53, -22, 31, ]; public static readonly int[] EndGameQueenTable = [ - -24, -15, -1, -13, -8, -3, -36, 12, - -19, -14, -28, -1, -1, -14, -47, 0, - -17, -7, 0, -5, 18, 21, -10, 4, - -11, 4, 0, 5, 22, 35, 45, 35, - -1, -1, 9, 21, 19, 28, 23, 48, - -19, -15, 11, 9, 14, 21, 21, 19, - -12, -8, -25, -17, -11, -7, -32, 10, - -11, -8, -8, -6, 2, 29, 21, -6, + -20, -11, -12, -21, -10, 2, -24, 26, + -19, -8, -30, -9, -10, -21, -50, 2, + -12, -7, 4, -4, 11, 20, -4, 12, + -15, 6, 0, 10, 19, 32, 42, 37, + -1, 2, 5, 25, 15, 31, 27, 46, + -16, -12, 10, 7, 10, 21, 22, 15, + -11, -6, -25, -15, -14, -18, -40, 8, + -11, -5, -9, -10, -3, 24, 22, 3, ]; public static readonly int[] MiddleGameKingTable = [ - 44, 57, 27, -83, 6, -66, 45, 65, - 1, -8, -29, -70, -83, -58, -3, 28, - -81, -68, -113, -117, -129, -135, -86, -99, - -119, -121, -139, -181, -171, -160, -159, -190, - -82, -86, -129, -160, -174, -144, -162, -181, - -76, -40, -106, -116, -100, -114, -77, -90, - 89, 2, -30, -60, -64, -45, 12, 37, - 59, 85, 40, -67, 17, -55, 60, 79, + 27, 51, 20, -86, 5, -72, 42, 57, + -3, -12, -33, -69, -80, -57, -2, 26, + -83, -70, -105, -102, -110, -124, -79, -96, + -96, -93, -116, -140, -141, -132, -130, -172, + -75, -69, -101, -133, -138, -124, -135, -170, + -74, -37, -92, -97, -91, -106, -77, -97, + 73, -6, -31, -62, -65, -47, 10, 33, + 44, 75, 35, -76, 12, -62, 54, 70, ]; public static readonly int[] EndGameKingTable = [ - -87, -50, -24, 4, -43, -2, -40, -96, - -22, 16, 29, 43, 51, 36, 14, -24, - 6, 43, 64, 76, 80, 71, 47, 25, - 16, 60, 84, 102, 98, 89, 75, 47, - 3, 49, 82, 98, 103, 88, 78, 45, - 5, 39, 63, 77, 73, 66, 47, 20, - -47, 9, 30, 40, 43, 32, 9, -28, - -100, -62, -30, -3, -35, -6, -44, -101, + -81, -45, -22, 3, -47, -3, -37, -92, + -23, 15, 27, 40, 45, 33, 13, -26, + 5, 41, 59, 69, 73, 67, 44, 23, + 12, 53, 76, 88, 87, 81, 66, 42, + 1, 46, 73, 87, 89, 79, 69, 40, + 5, 37, 58, 68, 66, 61, 45, 22, + -43, 10, 28, 37, 39, 31, 8, -29, + -93, -59, -29, -2, -40, -7, -42, -99, ]; public static readonly int[] MiddleGamePawnTableBlack = MiddleGamePawnTable.Select((_, index) => -MiddleGamePawnTable[index ^ 56]).ToArray();