diff --git a/src/eval_constants.hpp b/src/eval_constants.hpp index 5712efc1..4219a54e 100644 --- a/src/eval_constants.hpp +++ b/src/eval_constants.hpp @@ -6,186 +6,187 @@ namespace Clockwork { // clang-format off inline const PParam PAWN_MAT = S(192, 495); -inline const PParam KNIGHT_MAT = S(808, 1534); -inline const PParam BISHOP_MAT = S(852, 1627); -inline const PParam ROOK_MAT = S(1013, 2567); -inline const PParam QUEEN_MAT = S(2395, 3888); -inline const PParam TEMPO_VAL = S(68, 48); - -inline const PParam BISHOP_XRAY_PAWNS = S(-13, -5); -inline const PParam BISHOP_PAIR_VAL = S(63, 224); -inline const PParam ROOK_OPEN_VAL = S(109, -5); +inline const PParam KNIGHT_MAT = S(807, 1529); +inline const PParam BISHOP_MAT = S(852, 1624); +inline const PParam ROOK_MAT = S(1013, 2563); +inline const PParam QUEEN_MAT = S(2393, 3880); + +inline const PParam TEMPO_VAL = S(68, 49); + +inline const PParam BISHOP_XRAY_PAWNS = S(-12, -4); +inline const PParam BISHOP_PAIR_VAL = S(64, 224); +inline const PParam ROOK_OPEN_VAL = S(111, -3); inline const PParam ROOK_SEMIOPEN_VAL = S(44, 12); -inline const PParam MINOR_BEHIND_PAWN = S(15, 37); -inline const PParam RESTRICTED_SQUARES = S(-23, -6); +inline const PParam MINOR_BEHIND_PAWN = S(15, 38); +inline const PParam RESTRICTED_SQUARES = S(-22, -3); -inline const PParam DOUBLED_PAWN_VAL = S(-20, -79); +inline const PParam DOUBLED_PAWN_VAL = S(-20, -80); inline const PParam ISOLATED_PAWN_VAL = S(-13, -36); -inline const PParam POTENTIAL_CHECKER_VAL = S(-46, -39); -inline const PParam OUTPOST_KNIGHT_VAL = S(53, 41); -inline const PParam OUTPOST_BISHOP_VAL = S(44, 36); +inline const PParam POTENTIAL_CHECKER_VAL = S(-45, -40); +inline const PParam OUTPOST_KNIGHT_VAL = S(52, 41); +inline const PParam OUTPOST_BISHOP_VAL = S(45, 35); -inline const PParam PAWN_PUSH_THREAT_KNIGHT = S(37, 52); +inline const PParam PAWN_PUSH_THREAT_KNIGHT = S(37, 48); inline const PParam PAWN_PUSH_THREAT_BISHOP = S(40, 3); -inline const PParam PAWN_PUSH_THREAT_ROOK = S(25, 53); +inline const PParam PAWN_PUSH_THREAT_ROOK = S(25, 54); inline const PParam PAWN_PUSH_THREAT_QUEEN = S(60, -48); inline const std::array PAWN_PHALANX = { - S(14, -3), S(31, 35), S(59, 64), S(127, 194), S(417, 289), S(582, 606), + S(14, -3), S(31, 35), S(59, 63), S(128, 193), S(418, 289), S(583, 610), }; inline const std::array DEFENDED_PAWN = { - S(44, 34), S(37, 24), S(54, 52), S(102, 165), S(405, 90), + S(45, 34), S(38, 23), S(54, 52), S(102, 165), S(403, 92), }; inline const std::array PASSED_PAWN = { - S(-88, -265), S(-87, -230), S(-65, -93), S(-24, 41), S(70, 231), S(214, 400), + S(-89, -264), S(-88, -230), S(-66, -93), S(-25, 41), S(70, 231), S(214, 400), }; inline const std::array DEFENDED_PASSED_PUSH = { - S(26, -43), S(25, -3), S(14, 38), S(12, 115), S(76, 244), S(113, 438), + S(25, -41), S(25, -3), S(14, 38), S(12, 116), S(76, 243), S(105, 440), }; inline const std::array BLOCKED_PASSED_PAWN = { - S(14, -39), S(2, 10), S(-7, -22), S(-4, -58), S(-8, -166), S(-168, -330), + S(14, -37), S(1, 11), S(-7, -21), S(-4, -58), S(-9, -164), S(-168, -329), }; inline const std::array FRIENDLY_KING_PASSED_PAWN_DISTANCE = { - S(0, 0), S(13, 239), S(-0, 189), S(-1, 113), S(9, 74), S(20, 75), S(60, 72), S(50, 53), + S(0, 0), S(14, 238), S(1, 191), S(-0, 115), S(9, 75), S(21, 76), S(60, 74), S(52, 53), }; inline const std::array ENEMY_KING_PASSED_PAWN_DISTANCE = { - S(0, 0), S(-140, -50), S(15, 4), S(1, 106), S(26, 155), S(37, 191), S(50, 196), S(34, 179), + S(0, 0), S(-135, -59), S(13, 4), S(1, 104), S(26, 153), S(37, 190), S(50, 195), S(33, 180), }; inline const std::array KNIGHT_MOBILITY = { - S(-85, -367), S(-25, -139), S(5, -22), S(28, 21), S(57, 48), S(72, 81), S(90, 86), S(109, 92), S(127, 45), + S(-84, -374), S(-24, -144), S(5, -27), S(29, 19), S(58, 47), S(72, 83), S(91, 89), S(110, 97), S(128, 53), }; inline const std::array BISHOP_MOBILITY = { - S(-61, -278), S(-14, -113), S(35, -43), S(57, 6), S(79, 44), S(91, 70), S(98, 91), S(103, 108), S(107, 120), S(115, 125), S(125, 116), S(142, 100), S(147, 104), S(125, 78), + S(-63, -284), S(-16, -118), S(33, -48), S(55, 3), S(78, 41), S(90, 69), S(96, 90), S(101, 109), S(106, 122), S(114, 128), S(124, 121), S(140, 106), S(145, 109), S(123, 86), }; inline const std::array ROOK_MOBILITY = { - S(104, -191), S(24, -13), S(44, 21), S(60, 35), S(71, 53), S(74, 67), S(79, 81), S(85, 86), S(90, 98), S(97, 103), S(103, 108), S(106, 113), S(109, 118), S(113, 107), S(143, 56), + S(106, -190), S(25, -13), S(46, 20), S(61, 34), S(72, 52), S(76, 66), S(81, 80), S(87, 84), S(92, 97), S(99, 102), S(105, 106), S(108, 112), S(110, 117), S(114, 107), S(142, 58), }; inline const std::array QUEEN_MOBILITY = { - S(-205, -132), S(-59, -21), S(-33, 101), S(-12, 223), S(3, 263), S(10, 313), S(17, 345), S(22, 361), S(26, 385), S(28, 403), S(34, 411), S(36, 421), S(39, 426), S(40, 432), S(40, 435), S(36, 441), S(33, 440), S(34, 434), S(34, 431), S(39, 422), S(35, 407), S(38, 385), S(6, 415), S(-34, 396), S(-64, 397), S(-99, 419), S(-145, 443), S(-116, 357), + S(-208, -134), S(-61, -26), S(-35, 96), S(-14, 220), S(2, 260), S(9, 311), S(15, 344), S(21, 360), S(25, 385), S(27, 403), S(32, 411), S(35, 422), S(38, 426), S(39, 433), S(39, 436), S(35, 443), S(32, 443), S(35, 435), S(35, 433), S(40, 423), S(36, 409), S(40, 387), S(9, 416), S(-31, 398), S(-62, 400), S(-97, 423), S(-143, 447), S(-113, 362), }; -inline const PParam PAWN_THREAT_KNIGHT = S(193, 141); -inline const PParam PAWN_THREAT_BISHOP = S(171, 205); -inline const PParam PAWN_THREAT_ROOK = S(192, 141); -inline const PParam PAWN_THREAT_QUEEN = S(148, 12); +inline const PParam PAWN_THREAT_KNIGHT = S(193, 142); +inline const PParam PAWN_THREAT_BISHOP = S(170, 205); +inline const PParam PAWN_THREAT_ROOK = S(191, 143); +inline const PParam PAWN_THREAT_QUEEN = S(148, 17); inline const std::array MINOR_THREAT = { - S(7, 51), S(92, 90), S(104, 119), S(202, 117), S(160, 12), S(0, 0), + S(8, 54), S(91, 89), S(103, 120), S(202, 120), S(160, 15), S(0, 0), }; inline const std::array ROOK_THREAT = { - S(7, 45), S(49, 85), S(68, 90), S(-25, 9), S(177, -55), S(0, 0), + S(9, 54), S(52, 92), S(73, 92), S(21, -8), S(172, -58), S(0, 0), }; -inline const PParam KING_THREAT = S(-27, 158); -inline const PParam HANGING_PAWN = S(30, 93); -inline const PParam HANGING_NON_PAWN = S(67, 25); +inline const PParam KING_THREAT = S(-17, 154); +inline const PParam HANGING_PAWN = S(30, 88); +inline const PParam HANGING_NON_PAWN = S(66, 24); inline const std::array BISHOP_PAWNS = { - S(5, -17), S(4, -14), S(-0, -20), S(-5, -28), S(-11, -37), S(-16, -43), S(-18, -56), S(-23, -60), S(-27, -77), + S(5, -17), S(4, -14), S(-0, -20), S(-5, -28), S(-11, -36), S(-16, -43), S(-18, -56), S(-23, -59), S(-27, -76), }; -inline const PParam ROOK_LINEUP = S(15, 77); +inline const PParam ROOK_LINEUP = S(15, 79); inline const std::array PAWN_PSQT = { - S(183, 270), S(43, 381), S(65, 354), S(134, 255), S(190, 161), S(122, 221), S(88, 265), S(227, 201), // - S(36, 68), S(46, 110), S(28, 51), S(42, -23), S(36, -60), S(7, -18), S(2, 38), S(-22, 68), // - S(33, -8), S(6, 1), S(38, -46), S(24, -69), S(15, -87), S(-5, -71), S(-40, -34), S(-41, 4), // - S(-9, -69), S(-33, -38), S(1, -63), S(-9, -74), S(-30, -84), S(-39, -72), S(-87, -48), S(-78, -47), // - S(-12, -106), S(21, -105), S(7, -48), S(-9, -53), S(-36, -64), S(-52, -71), S(-80, -67), S(-81, -70), // - S(10, -104), S(83, -94), S(70, -44), S(25, -18), S(-5, -42), S(-24, -62), S(-50, -55), S(-61, -53), // + S(184, 270), S(46, 380), S(65, 357), S(135, 258), S(191, 163), S(122, 223), S(89, 267), S(227, 202), // + S(37, 69), S(46, 112), S(28, 53), S(42, -21), S(36, -58), S(7, -15), S(3, 41), S(-22, 69), // + S(34, -7), S(6, 3), S(38, -44), S(23, -67), S(14, -85), S(-5, -69), S(-41, -32), S(-41, 5), // + S(-8, -68), S(-32, -37), S(2, -61), S(-8, -72), S(-29, -82), S(-39, -70), S(-86, -47), S(-77, -46), // + S(-12, -105), S(22, -104), S(8, -47), S(-7, -52), S(-35, -63), S(-51, -69), S(-80, -65), S(-81, -68), // + S(11, -103), S(84, -94), S(70, -44), S(26, -18), S(-3, -41), S(-23, -60), S(-49, -54), S(-60, -52), // }; inline const std::array KNIGHT_PSQT = { - S(-251, -508), S(-242, 37), S(-262, -91), S(27, 15), S(-79, 30), S(-241, 53), S(-358, 99), S(-335, -389), // - S(-4, -23), S(-2, 23), S(101, 8), S(82, 51), S(93, 38), S(53, 17), S(-15, 15), S(-28, 4), // - S(44, -33), S(36, 28), S(75, 48), S(79, 64), S(66, 64), S(28, 54), S(13, 26), S(-35, 4), // - S(98, 15), S(91, 39), S(102, 65), S(104, 106), S(111, 106), S(76, 70), S(51, 34), S(40, 24), // - S(76, 12), S(104, 2), S(101, 53), S(94, 83), S(81, 83), S(79, 63), S(65, 7), S(25, 22), // - S(17, -38), S(45, -18), S(48, 26), S(63, 58), S(58, 57), S(30, 19), S(17, -9), S(-24, -42), // - S(39, -26), S(44, -20), S(27, -12), S(34, 16), S(31, 10), S(5, -41), S(-27, -6), S(-36, -103), // - S(-41, -84), S(8, -26), S(28, -41), S(47, -33), S(27, -12), S(-10, -51), S(-18, -30), S(-60, -141), // + S(-253, -495), S(-239, 41), S(-258, -91), S(26, 21), S(-78, 36), S(-239, 55), S(-358, 104), S(-336, -380), // + S(-4, -16), S(-4, 31), S(101, 7), S(78, 53), S(92, 35), S(53, 16), S(-16, 21), S(-29, 10), // + S(45, -29), S(34, 30), S(72, 46), S(77, 62), S(66, 61), S(25, 52), S(12, 25), S(-36, 10), // + S(97, 20), S(93, 40), S(103, 60), S(105, 103), S(110, 103), S(76, 67), S(53, 33), S(40, 28), // + S(75, 15), S(105, -0), S(100, 48), S(93, 77), S(80, 78), S(77, 60), S(64, 9), S(23, 28), // + S(17, -36), S(45, -18), S(48, 21), S(63, 54), S(57, 51), S(29, 16), S(16, -9), S(-25, -36), // + S(38, -21), S(43, -17), S(26, -14), S(33, 13), S(30, 8), S(4, -41), S(-28, -2), S(-36, -95), // + S(-41, -77), S(8, -23), S(28, -42), S(46, -33), S(26, -11), S(-10, -47), S(-19, -25), S(-61, -132), // }; inline const std::array BISHOP_PSQT = { - S(-116, 19), S(-165, 93), S(-428, 185), S(-263, 85), S(-283, 131), S(-287, 139), S(-191, 105), S(-114, 55), // - S(-28, -16), S(-75, 91), S(-34, 50), S(-70, 67), S(-62, 66), S(-27, 38), S(-3, 31), S(-42, 18), // - S(39, 23), S(12, 66), S(31, 73), S(28, 62), S(23, 41), S(20, 46), S(13, 48), S(21, 14), // - S(16, -4), S(57, 17), S(66, 37), S(77, 56), S(104, 42), S(48, 23), S(54, -7), S(7, -6), // - S(52, -54), S(50, -2), S(81, 11), S(99, 25), S(80, 42), S(71, 20), S(23, 7), S(23, -35), // - S(63, -37), S(85, -27), S(100, 5), S(69, 34), S(67, 13), S(64, 16), S(71, -11), S(23, -22), // - S(35, -91), S(116, -54), S(75, -16), S(52, -0), S(35, 3), S(55, -43), S(53, -52), S(48, -64), // - S(52, -83), S(23, -19), S(25, -2), S(50, -31), S(33, -22), S(39, 12), S(48, -23), S(45, -62), // + S(-115, 22), S(-164, 96), S(-426, 187), S(-262, 85), S(-280, 130), S(-287, 140), S(-189, 106), S(-114, 57), // + S(-26, -14), S(-75, 90), S(-35, 49), S(-73, 67), S(-64, 64), S(-30, 39), S(-4, 31), S(-40, 19), // + S(37, 24), S(10, 66), S(28, 71), S(24, 60), S(19, 39), S(18, 44), S(12, 45), S(19, 16), // + S(15, -0), S(56, 15), S(64, 33), S(75, 55), S(104, 39), S(46, 21), S(52, -8), S(5, -3), // + S(51, -53), S(49, -3), S(80, 9), S(97, 20), S(78, 38), S(70, 19), S(22, 7), S(22, -32), // + S(62, -34), S(85, -29), S(99, 1), S(68, 28), S(65, 10), S(63, 15), S(71, -9), S(22, -19), // + S(34, -87), S(116, -54), S(73, -19), S(51, -3), S(34, 1), S(54, -43), S(52, -50), S(48, -61), // + S(51, -80), S(22, -17), S(25, -3), S(50, -32), S(33, -22), S(39, 13), S(48, -21), S(45, -58), // }; inline const std::array ROOK_PSQT = { - S(174, 82), S(212, 99), S(155, 133), S(145, 107), S(204, 64), S(163, 84), S(184, 87), S(156, 94), // - S(90, 138), S(149, 133), S(197, 102), S(145, 102), S(191, 80), S(142, 109), S(98, 135), S(93, 138), // - S(64, 131), S(184, 81), S(209, 62), S(183, 47), S(182, 66), S(130, 98), S(131, 107), S(75, 152), // - S(39, 98), S(105, 104), S(127, 79), S(106, 79), S(135, 66), S(98, 105), S(93, 113), S(32, 141), // - S(10, 36), S(80, 46), S(68, 62), S(42, 68), S(53, 74), S(39, 102), S(18, 101), S(-4, 102), // - S(22, -34), S(93, -11), S(82, 12), S(63, 16), S(73, 22), S(41, 57), S(47, 34), S(1, 44), // - S(-66, -27), S(69, -72), S(72, -33), S(61, -1), S(64, -4), S(48, 12), S(36, -3), S(9, 3), // - S(-3, -58), S(11, -14), S(83, -32), S(93, -36), S(92, -28), S(69, -4), S(68, -15), S(49, -10), // + S(183, 78), S(217, 97), S(163, 127), S(150, 105), S(210, 62), S(171, 81), S(193, 84), S(166, 90), // + S(94, 135), S(153, 130), S(207, 95), S(150, 98), S(196, 77), S(151, 104), S(102, 132), S(97, 137), // + S(63, 129), S(187, 76), S(211, 58), S(188, 39), S(185, 61), S(131, 94), S(132, 105), S(74, 149), // + S(36, 97), S(104, 99), S(130, 72), S(107, 74), S(135, 62), S(97, 104), S(92, 110), S(30, 139), // + S(7, 36), S(78, 44), S(67, 60), S(41, 66), S(51, 73), S(38, 100), S(16, 100), S(-6, 102), // + S(18, -32), S(90, -13), S(80, 11), S(60, 16), S(72, 22), S(39, 57), S(43, 35), S(-2, 45), // + S(-69, -28), S(65, -70), S(69, -33), S(57, -0), S(61, -3), S(46, 12), S(34, -2), S(5, 4), // + S(-6, -54), S(8, -12), S(80, -30), S(90, -33), S(89, -25), S(67, -0), S(64, -12), S(45, -5), // }; inline const std::array QUEEN_PSQT = { - S(59, 165), S(140, 123), S(45, 271), S(-9, 366), S(31, 318), S(63, 231), S(61, 149), S(-7, 205), // - S(51, 178), S(50, 244), S(15, 313), S(-122, 438), S(-70, 406), S(-18, 303), S(30, 163), S(15, 159), // - S(-1, 247), S(30, 283), S(-4, 355), S(-48, 399), S(-28, 382), S(25, 261), S(58, 155), S(50, 101), // - S(18, 154), S(4, 256), S(-26, 305), S(-50, 385), S(-31, 380), S(5, 240), S(46, 150), S(23, 122), // - S(7, 147), S(0, 180), S(-15, 234), S(-38, 299), S(-26, 319), S(-2, 243), S(8, 165), S(34, 71), // - S(8, 50), S(29, 72), S(23, 152), S(1, 166), S(12, 169), S(13, 200), S(33, 123), S(23, 84), // - S(-19, -101), S(10, -91), S(13, -12), S(37, 23), S(30, 65), S(35, 37), S(8, 74), S(22, 57), // - S(-33, -77), S(-16, -225), S(14, -230), S(30, -118), S(37, -42), S(37, -75), S(34, -49), S(6, -6), // + S(57, 173), S(138, 129), S(42, 276), S(-10, 367), S(31, 318), S(62, 233), S(62, 150), S(-7, 208), // + S(51, 181), S(48, 246), S(11, 317), S(-128, 444), S(-74, 410), S(-22, 306), S(28, 166), S(15, 161), // + S(-1, 249), S(28, 282), S(-8, 356), S(-53, 400), S(-34, 384), S(21, 261), S(56, 155), S(50, 100), // + S(16, 154), S(2, 255), S(-31, 304), S(-55, 384), S(-36, 380), S(2, 238), S(43, 148), S(23, 122), // + S(7, 147), S(-2, 177), S(-17, 229), S(-41, 294), S(-29, 316), S(-4, 239), S(6, 164), S(34, 74), // + S(7, 47), S(29, 65), S(22, 145), S(0, 161), S(11, 164), S(12, 197), S(33, 121), S(24, 84), // + S(-19, -103), S(11, -96), S(13, -18), S(36, 19), S(30, 62), S(35, 35), S(8, 72), S(25, 52), // + S(-31, -76), S(-14, -227), S(16, -237), S(31, -122), S(38, -43), S(39, -77), S(35, -50), S(8, -4), // }; inline const std::array KING_PSQT = { - S(133, -594), S(491, -1), S(296, 171), S(17, 132), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(356, -188), S(383, 99), S(205, 171), S(22, 132), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(189, 41), S(228, 155), S(122, 186), S(-32, 164), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(7, 12), S(91, 116), S(-25, 168), S(-83, 180), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(-117, -1), S(-30, 78), S(-95, 147), S(-171, 192), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(-51, -30), S(13, 38), S(-69, 117), S(-121, 161), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(21, -81), S(29, -4), S(-33, 59), S(-108, 112), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(-21, -195), S(3, -79), S(-80, -15), S(-75, -37), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // -}; - -inline const PParam KS_NO_QUEEN = S(-86, -435); + S(134, -597), S(492, -4), S(297, 170), S(16, 133), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(355, -187), S(382, 100), S(205, 172), S(22, 134), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(189, 41), S(226, 156), S(122, 186), S(-34, 166), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(6, 13), S(92, 114), S(-28, 169), S(-84, 180), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-118, -0), S(-30, 76), S(-95, 145), S(-172, 190), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-51, -31), S(11, 36), S(-71, 116), S(-123, 159), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(21, -80), S(27, -4), S(-36, 58), S(-110, 111), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-21, -193), S(2, -79), S(-81, -14), S(-76, -36), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // +}; + +inline const PParam KS_NO_QUEEN = S(-86, -438); inline const std::array PT_INNER_RING_ATTACKS = { - S(8, -5), S(10, 10), S(10, 4), S(4, 1), S(3, -10), + S(8, -5), S(10, 11), S(10, 4), S(5, 1), S(3, -10), }; inline const std::array PT_OUTER_RING_ATTACKS = { S(4, -7), S(4, 4), S(2, 3), S(3, 0), S(3, -1), }; inline const PParam KS_FLANK_ATTACK = S(3, -2); -inline const PParam KS_FLANK_DEFENSE = S(-3, -0); +inline const PParam KS_FLANK_DEFENSE = S(-3, 0); inline const PParam KS_FLANK_DOUBLE_ATTACK = S(2, -0); inline const PParam KS_FLANK_DOUBLE_DEFENSE = S(-2, 2); inline const std::array, 4> KING_SHELTER = {{ - {{ S(17, -19), S(-7, 6), S(-3, -9), S(8, -16), S(12, -28), S(5, -51), S(-6, -43), }}, - {{ S(2, 2), S(-22, 1), S(-17, 8), S(-10, 16), S(-7, 8), S(-9, -18), S(-19, -24), }}, - {{ S(-3, -2), S(-11, -10), S(-12, 18), S(-7, 17), S(-7, 11), S(-8, -16), S(-24, -40), }}, - {{ S(6, 7), S(-10, 17), S(-7, 38), S(-2, 42), S(-3, 38), S(4, 15), S(7, -14), }}, + {{ S(17, -20), S(-7, 5), S(-3, -10), S(8, -17), S(12, -29), S(5, -52), S(-6, -45), }}, + {{ S(1, 1), S(-22, 0), S(-17, 7), S(-10, 15), S(-7, 7), S(-9, -19), S(-19, -26), }}, + {{ S(-2, -2), S(-10, -10), S(-12, 18), S(-7, 17), S(-6, 10), S(-7, -17), S(-23, -40), }}, + {{ S(6, 6), S(-10, 16), S(-7, 36), S(-3, 41), S(-3, 36), S(4, 13), S(7, -14), }}, }}; inline const std::array BLOCKED_SHELTER_STORM = { - S(0, 0), S(0, 0), S(8, 25), S(-5, 3), S(-8, 10), S(-5, 27), S(2, 46), + S(0, 0), S(0, 0), S(8, 26), S(-5, 3), S(-8, 10), S(-6, 27), S(2, 46), }; inline const std::array, 4> SHELTER_STORM = {{ - {{ S(5, 10), S(-45, -143), S(-10, -43), S(-0, 4), S(-2, 3), S(-6, 9), S(-5, 8), }}, - {{ S(9, -0), S(-25, -153), S(-6, -30), S(-4, 2), S(-1, -3), S(-7, 4), S(2, 2), }}, - {{ S(-0, 10), S(-10, -81), S(6, -15), S(-0, 9), S(-4, 10), S(-10, 18), S(-6, 20), }}, - {{ S(1, 0), S(3, -57), S(-2, 30), S(-3, 25), S(-6, 10), S(-12, 12), S(-10, 20), }}, + {{ S(5, 10), S(-44, -140), S(-10, -41), S(-0, 4), S(-2, 3), S(-6, 10), S(-5, 8), }}, + {{ S(9, -1), S(-25, -148), S(-6, -29), S(-4, 1), S(-0, -3), S(-7, 4), S(2, 2), }}, + {{ S(-0, 10), S(-10, -80), S(6, -15), S(-1, 9), S(-4, 10), S(-10, 18), S(-6, 20), }}, + {{ S(1, 1), S(2, -55), S(-2, 30), S(-3, 26), S(-6, 10), S(-12, 12), S(-10, 20), }}, }}; inline TunableSigmoid<32> KING_SAFETY_ACTIVATION( - 1402, 867, -19, -5 + 1410, 873, -20, -3 ); inline VParam WINNABLE_PAWNS = V(-20); inline VParam WINNABLE_SYM = V(100); inline VParam WINNABLE_ASYM = V(83); -inline VParam WINNABLE_PAWN_ENDGAME = V(109); -inline VParam WINNABLE_BIAS = V(-371); +inline VParam WINNABLE_PAWN_ENDGAME = V(108); +inline VParam WINNABLE_BIAS = V(-370); -// Epoch duration: 7.28738s +// Epoch duration: 7.32325s // clang-format on } // namespace Clockwork diff --git a/src/evaluation.cpp b/src/evaluation.cpp index a590c48a..15e68266 100644 --- a/src/evaluation.cpp +++ b/src/evaluation.cpp @@ -467,8 +467,8 @@ PScore evaluate_threats(const Position& pos, const EvalData& data) { opp_pawn = pos.bitboard_for(opp, PieceType::Pawn); opp_non_pawn = pos.board().get_color_bitboard(opp) & ~opp_pawn; - strongly_protected = - data.attacked_by(opp, PieceType::Pawn) | (data.attacked_by_2(opp) & ~data.attacked_by_2(opp)); + strongly_protected = data.attacked_by(opp, PieceType::Pawn) + | (data.attacked_by_2(opp) & ~data.attacked_by_2(color)); defended = opp_non_pawn & strongly_protected;