diff --git a/src/Lynx.Cli/appsettings.json b/src/Lynx.Cli/appsettings.json index aa28d8eba..17a1917c7 100644 --- a/src/Lynx.Cli/appsettings.json +++ b/src/Lynx.Cli/appsettings.json @@ -46,44 +46,44 @@ // Evaluation "DoubledPawnPenalty": { - "MG": -8, - "EG": -11 + "MG": -11, + "EG": -8 }, "IsolatedPawnPenalty": { - "MG": -14, + "MG": -15, "EG": -14 }, "OpenFileRookBonus": { - "MG": 60, - "EG": 19 + "MG": 62, + "EG": 11 }, "SemiOpenFileRookBonus": { - "MG": 25, - "EG": 20 + "MG": 26, + "EG": 16 }, "BishopMobilityBonus": { - "MG": 7, + "MG": 6, "EG": 11 }, "QueenMobilityBonus": { - "MG": 3, - "EG": 9 + "MG": 2, + "EG": 10 }, "SemiOpenFileKingPenalty": { - "MG": -28, - "EG": 21 + "MG": -22, + "EG": 16 }, "OpenFileKingPenalty": { - "MG": -84, - "EG": 3 + "MG": -68, + "EG": 1 }, "KingShieldBonus": { - "MG": 14, - "EG": -3 + "MG": 9, + "EG": -2 }, "BishopPairBonus": { - "MG": 24, - "EG": 83 + "MG": 26, + "EG": 77 }, "PassedPawnBonus": { "Rank0": { @@ -91,28 +91,28 @@ "EG": 0 }, "Rank1": { - "MG": 1, + "MG": 7, "EG": 2 }, "Rank2": { - "MG": -11, - "EG": 12 + "MG": -8, + "EG": 8 }, "Rank3": { - "MG": -13, - "EG": 39 + "MG": -9, + "EG": 34 }, "Rank4": { - "MG": 25, - "EG": 74 + "MG": 36, + "EG": 63 }, "Rank5": { - "MG": 82, - "EG": 146 + "MG": 108, + "EG": 117 }, "Rank6": { - "MG": 140, - "EG": 223 + "MG": 194, + "EG": 188 }, "Rank7": { "MG": 0, diff --git a/src/Lynx/EvaluationConstants.cs b/src/Lynx/EvaluationConstants.cs index 7bc9918c1..a7e3d7d76 100644 --- a/src/Lynx/EvaluationConstants.cs +++ b/src/Lynx/EvaluationConstants.cs @@ -24,161 +24,161 @@ public static class EvaluationConstants 0, 1, 1, 2, 4, 0 ]; - public static readonly int[] MiddleGamePieceValues = - [ - +98, +360, +343, +474, +1078, 0, - -98, -360, -343, -474, -1078, 0 - ]; - - public static readonly int[] EndGamePieceValues = - [ - +132, +419, +363, +783, +1299, 0, - -132, -419, -363, -783, -1299, 0 - ]; - - public static readonly int[] MiddleGamePawnTable = - [ - 0, 0, 0, 0, 0, 0, 0, 0, - -26, -23, -22, -14, -12, 24, 34, -6, - -23, -21, -10, 2, 12, 30, 28, 12, - -17, -8, 4, 15, 23, 33, 13, 0, - -17, -7, -1, 11, 20, 31, 10, -2, - -19, -21, -8, -4, 10, 26, 21, 7, - -26, -23, -22, -19, -13, 23, 24, -12, - 0, 0, 0, 0, 0, 0, 0, 0, - ]; - - public static readonly int[] EndGamePawnTable = - [ - 0, 0, 0, 0, 0, 0, 0, 0, - 14, 12, 9, -12, 3, 7, -1, -12, - 11, 9, -1, -14, -6, -3, -8, -13, - 29, 20, 0, -19, -12, -10, 4, -3, - 25, 18, 0, -17, -12, -9, 2, -6, - 14, 9, -3, -12, -2, -2, -5, -13, - 18, 13, 9, -5, 14, 10, 2, -10, - 0, 0, 0, 0, 0, 0, 0, 0, - ]; - - public static readonly int[] MiddleGameKnightTable = - [ - -139, -21, -58, -41, -22, -29, -7, -74, - -39, -26, -3, 13, 10, 19, -5, -8, - -15, 4, 14, 60, 50, 36, 29, 2, - -6, 20, 40, 51, 50, 56, 51, 25, - -8, 26, 39, 44, 50, 47, 54, 23, - -16, 5, 16, 46, 52, 31, 29, -7, - -53, -27, -1, 12, 12, 12, -14, -14, - -152, -18, -58, -43, -16, -21, -10, -70, - ]; - - public static readonly int[] EndGameKnightTable = - [ - -57, -79, -15, -15, -9, -16, -65, -93, - -27, 5, 7, 3, 16, 6, -15, -17, - -25, 13, 41, 32, 38, 20, 18, -8, - 4, 16, 49, 50, 59, 53, 33, -1, - -2, 26, 48, 51, 62, 55, 42, 7, - -22, 17, 30, 42, 36, 19, 8, -17, - -11, 6, 1, 6, 6, -4, -14, -27, - -49, -91, -6, -9, -13, -28, -68, -98, - ]; - - public static readonly int[] MiddleGameBishopTable = - [ - -12, -3, -5, -23, -26, -20, -42, -10, - 2, 4, 9, -13, -3, -8, 26, -10, - -2, 4, 1, 8, 0, 13, 6, 25, - -15, 6, 3, 37, 26, -9, 8, 7, - -7, 3, -6, 24, 17, -9, 3, 7, - 0, 12, 7, 4, 9, 11, 8, 27, - 11, 9, 14, -9, 3, 1, 25, -14, - 3, 13, -1, -46, -34, -20, -1, -12, - ]; - - public static readonly int[] EndGameBishopTable = - [ - -10, 18, -26, -2, 3, -3, 13, -13, - 3, -8, -7, 1, 2, -2, -2, -17, - 14, 18, 5, -1, 12, 0, 8, 15, - 8, 5, 5, -4, -13, 1, 8, 8, - -3, 6, 8, 1, -7, 8, 5, 4, - 14, 3, 0, -3, 7, -1, 11, 5, - -7, -11, -8, 4, -4, -3, -11, 1, - 0, -4, -16, 6, 9, -5, 0, -13, - ]; - - public static readonly int[] MiddleGameRookTable = - [ - -10, -16, -13, -7, 4, -6, -2, -1, - -36, -19, -19, -18, -12, 2, 15, -26, - -30, -12, -17, -1, 8, 5, 53, 25, - -27, -16, -7, 12, 10, 27, 63, 23, - -14, -9, -8, 13, 4, 22, 51, 18, - -24, -5, -21, 4, -2, 20, 49, 34, - -25, -17, -9, -5, -5, -3, 24, 1, - -6, -12, -11, -1, 8, -2, 3, 4, - ]; - - public static readonly int[] EndGameRookTable = - [ - 2, 3, 6, 2, -9, -1, 0, -16, - 20, 15, 17, 5, -3, -6, -8, 8, - 10, 7, 9, 1, -8, 1, -15, -8, - 13, 16, 11, 2, -2, 1, -16, -17, - 8, 9, 13, 1, 1, -2, -11, -8, - 14, 10, 8, -2, -8, -9, -17, -10, - 20, 18, 12, 2, -1, 0, -4, 4, - -2, 1, 4, -4, -12, -4, -2, -21, - ]; - - public static readonly int[] MiddleGameQueenTable = - [ - -7, -21, -9, -1, -7, -54, 15, -4, - -17, -14, 8, 1, -1, -3, 16, 42, - -17, 0, -7, -6, -7, 11, 36, 51, - -8, -10, -13, -8, 6, 12, 20, 24, - -15, -6, -11, -11, 4, 1, 22, 29, - 2, -1, -8, -7, -7, 8, 19, 42, - -20, -9, 4, 5, 6, 4, 0, 21, - -7, -6, -7, -2, -13, -41, -26, 54, - ]; - - public static readonly int[] EndGameQueenTable = - [ - -18, -14, -20, -25, -13, 6, -25, 50, - 5, -2, -32, -16, -4, -19, -42, -6, - 5, -11, 0, -9, 6, 9, 1, 21, - -16, 0, 2, 13, 7, 30, 39, 54, - 0, -10, 0, 17, 12, 35, 29, 58, - -26, -17, 2, 5, 8, 13, 23, 23, - -2, -12, -31, -15, -22, -33, -36, 21, - -7, -22, -14, -14, 0, 17, 13, 10, - ]; - - public static readonly int[] MiddleGameKingTable = - [ - 18, 23, 2, -89, 0, -77, 34, 38, - -24, -15, -38, -62, -76, -63, -7, 16, - -94, -55, -77, -82, -95, -101, -66, -87, - -29, -29, -68, -95, -90, -109, -86, -137, - -12, -18, -58, -84, -112, -95, -117, -145, - -52, -39, -58, -81, -75, -100, -73, -105, - 44, -11, -40, -63, -71, -53, 3, 25, - 18, 53, 26, -75, 7, -74, 42, 51, - ]; - - public static readonly int[] EndGameKingTable = - [ - -86, -30, -19, -6, -49, -8, -36, -89, - -20, 12, 21, 28, 34, 29, 9, -29, - 11, 32, 43, 52, 59, 54, 33, 17, - 2, 34, 57, 63, 65, 66, 52, 27, - -13, 30, 55, 63, 70, 65, 57, 34, - 1, 28, 45, 54, 52, 52, 35, 19, - -33, 12, 25, 29, 34, 26, 4, -33, - -71, -47, -33, -6, -44, -8, -37, -94, - ]; +public static readonly int[] MiddleGamePieceValues = +[ + +103, +370, +358, +503, +1178, 0, + -103, -370, -358, -503, -1178, 0 +]; + +public static readonly int[] EndGamePieceValues = +[ + +125, +380, +323, +715, +1144, 0, + -125, -380, -323, -715, -1144, 0 +]; + +public static readonly int[] MiddleGamePawnTable = +[ + 0, 0, 0, 0, 0, 0, 0, 0, + -21, -28, -26, -16, -17, 26, 32, -6, + -17, -24, -11, -2, 5, 26, 26, 9, + -14, -7, 2, 12, 19, 30, 18, -3, + -16, -7, 0, 10, 16, 29, 21, -2, + -18, -23, -10, -4, 5, 25, 23, 11, + -26, -27, -26, -21, -16, 26, 28, -7, + 0, 0, 0, 0, 0, 0, 0, 0, +]; + +public static readonly int[] EndGamePawnTable = +[ + 0, 0, 0, 0, 0, 0, 0, 0, + 14, 11, 9, -17, 7, 10, 1, -11, + 11, 10, 1, -12, 0, -2, -10, -15, + 25, 19, 0, -15, -7, -9, -1, -6, + 25, 19, -1, -14, -7, -8, -2, -7, + 12, 9, 0, -11, 0, -1, -10, -16, + 16, 10, 10, -11, 7, 12, 0, -12, + 0, 0, 0, 0, 0, 0, 0, 0, +]; + +public static readonly int[] MiddleGameKnightTable = +[ + -154, -12, -67, -47, -17, -23, -2, -95, + -44, -29, 0, 14, 10, 12, -18, 0, + -10, 7, 15, 48, 48, 36, 29, 4, + -2, 31, 41, 47, 50, 49, 54, 31, + -1, 29, 39, 47, 49, 46, 57, 28, + -13, 9, 16, 45, 46, 35, 28, -1, + -34, -33, 1, 14, 11, 14, -14, -5, + -137, -12, -57, -41, -17, -38, 0, -85, +]; + +public static readonly int[] EndGameKnightTable = +[ + -38, -84, -9, -8, -17, -29, -78, -51, + -23, 7, 7, 7, 7, -2, -7, -26, + -31, 17, 38, 41, 35, 21, 16, -14, + -4, 20, 45, 49, 56, 53, 38, 5, + -6, 15, 44, 50, 61, 52, 42, 13, + -32, 16, 29, 38, 35, 21, 21, -15, + -34, 3, 3, 9, 8, -1, -6, -31, + -42, -88, -7, -14, -11, -22, -75, -85, +]; + +public static readonly int[] MiddleGameBishopTable = +[ + -17, 3, -8, -45, -31, -16, -32, -31, + 10, 1, 8, -15, 0, -3, 26, -2, + -6, 9, 0, 7, -2, 17, 15, 23, + -6, 12, 9, 33, 26, -7, 10, 13, + -1, 8, 2, 29, 21, -4, 6, 11, + 0, 7, 2, 3, 2, 16, 11, 21, + 9, 5, 10, -12, 1, -6, 27, -3, + 1, 10, -5, -46, -33, -15, -19, -24, +]; + +public static readonly int[] EndGameBishopTable = +[ + -2, 1, -25, 9, 5, -13, 13, 11, + 4, -6, -4, 0, -3, -5, -6, -23, + 10, 9, 1, -3, 7, -4, 5, 10, + 7, 2, 2, -6, -11, 5, 13, 9, + -1, 4, 3, -6, -8, 5, 13, 11, + 6, 8, 3, -2, 9, -6, 7, 11, + 0, -6, -5, 3, -5, -4, -10, -18, + -6, -3, -26, 4, 4, -17, 13, 7, +]; + +public static readonly int[] MiddleGameRookTable = +[ + -8, -16, -14, -6, 2, -2, 7, 0, + -26, -18, -17, -13, -8, -6, 8, -18, + -31, -11, -17, 4, 2, 12, 54, 14, + -16, -12, -6, 15, 12, 33, 66, 33, + -19, -13, -4, 14, 11, 31, 73, 35, + -27, -10, -22, -1, -1, 13, 52, 21, + -22, -19, -17, -10, -10, -3, -3, -12, + -5, -14, -14, -6, 2, 0, 4, 7, +]; + +public static readonly int[] EndGameRookTable = +[ + -6, -3, 3, -4, -16, -5, -8, -27, + 19, 15, 15, 6, -3, -2, -6, 5, + 12, 8, 12, -2, -6, 2, -17, -6, + 7, 14, 11, 4, 5, 4, -14, -12, + 9, 13, 12, 4, 4, 4, -16, -14, + 13, 11, 14, 3, -2, 0, -17, -6, + 18, 19, 13, 5, -1, -4, 4, 5, + -7, -1, 3, -3, -11, -6, -7, -24, +]; + +public static readonly int[] MiddleGameQueenTable = +[ + -6, -26, -9, 2, -11, -62, -16, -3, + -17, -15, 4, -1, 3, -3, 24, 45, + -18, -1, -8, -6, -3, 8, 32, 54, + -6, -8, -7, 1, 15, 17, 23, 35, + -11, -8, -6, 1, 16, 16, 32, 39, + -13, -4, -7, -8, -8, 6, 27, 42, + -22, -12, 2, -2, 3, 5, 15, 35, + -5, -24, -7, -2, -17, -62, -33, 11, +]; + +public static readonly int[] EndGameQueenTable = +[ + -9, 0, -24, -42, -11, 15, 18, 64, + -5, -5, -31, -21, -27, -28, -64, 14, + -2, -13, -2, -10, -2, 19, 13, 32, + -10, 4, 2, 8, 2, 25, 45, 60, + -6, 2, 2, 10, -1, 25, 30, 53, + -9, -8, 1, -4, 3, 22, 19, 49, + 5, -6, -31, -21, -27, -41, -68, 26, + -16, -4, -23, -33, -10, 11, 31, 59, +]; + +public static readonly int[] MiddleGameKingTable = +[ + -67, 14, -21, -102, -3, -88, 28, 18, + -2, -31, -29, -54, -57, -51, -3, 15, + -55, -24, -29, -19, -35, -66, -62, -106, + -22, 16, 1, 7, -15, -34, -62, -112, + -30, 26, 1, 4, -20, -36, -51, -121, + -53, -29, -42, -26, -46, -67, -70, -107, + -14, -35, -39, -65, -64, -52, -3, 11, + -48, 6, -17, -111, -8, -94, 27, 21, +]; + +public static readonly int[] EndGameKingTable = +[ + -46, -28, -14, 0, -53, -8, -29, -81, + -11, 15, 18, 23, 24, 23, 6, -30, + 8, 24, 33, 35, 38, 42, 30, 21, + 3, 23, 37, 37, 44, 46, 44, 23, + -2, 22, 39, 38, 45, 44, 41, 22, + 6, 30, 34, 35, 40, 40, 30, 19, + -8, 16, 19, 23, 27, 23, 4, -30, + -43, -29, -13, 3, -54, -7, -29, -86, +]; public static readonly int[] MiddleGamePawnTableBlack = MiddleGamePawnTable.Select((_, index) => -MiddleGamePawnTable[index ^ 56]).ToArray(); public static readonly int[] EndGamePawnTableBlack = EndGamePawnTable.Select((_, index) => -EndGamePawnTable[index ^ 56]).ToArray();