From a07e66cfa234b06b7a0abaa08d9f27f6d1d2f1ae Mon Sep 17 00:00:00 2001 From: TheRealGioviok <425gioviok@gmail.com> Date: Tue, 14 Apr 2026 13:04:25 +0200 Subject: [PATCH 1/3] Bench: 17586861 --- src/eval_constants.hpp | 229 +++++++++++++++++++++-------------------- src/evaltune_main.cpp | 1 + src/evaluation.cpp | 6 +- 3 files changed, 122 insertions(+), 114 deletions(-) diff --git a/src/eval_constants.hpp b/src/eval_constants.hpp index d621223f..4bc0075f 100644 --- a/src/eval_constants.hpp +++ b/src/eval_constants.hpp @@ -5,183 +5,186 @@ namespace Clockwork { // clang-format off -inline const PParam PAWN_MAT = S(137, 200); -inline const PParam KNIGHT_MAT = S(584, 581); -inline const PParam BISHOP_MAT = S(613, 586); -inline const PParam ROOK_MAT = S(492, 629); -inline const PParam QUEEN_MAT = S(898, 1186); -inline const PParam TEMPO_VAL = S(59, 19); - -inline const PParam BISHOP_PAIR_VAL = S(50, 196); -inline const PParam ROOK_OPEN_VAL = S(107, -14); -inline const PParam ROOK_SEMIOPEN_VAL = S(39, 25); -inline const PParam MINOR_BEHIND_PAWN = S(11, 41); - -inline const PParam DOUBLED_PAWN_VAL = S(-14, -72); -inline const PParam ISOLATED_PAWN_VAL = S(-21, -18); - -inline const PParam POTENTIAL_CHECKER_VAL = S(-46, -28); -inline const PParam OUTPOST_KNIGHT_VAL = S(41, 56); -inline const PParam OUTPOST_BISHOP_VAL = S(57, 34); - -inline const PParam PAWN_PUSH_THREAT_KNIGHT = S(43, 5); -inline const PParam PAWN_PUSH_THREAT_BISHOP = S(49, -21); -inline const PParam PAWN_PUSH_THREAT_ROOK = S(30, 50); -inline const PParam PAWN_PUSH_THREAT_QUEEN = S(68, -45); +inline const PParam PAWN_MAT = S(132, 206); +inline const PParam KNIGHT_MAT = S(592, 615); +inline const PParam BISHOP_MAT = S(617, 618); +inline const PParam ROOK_MAT = S(480, 669); +inline const PParam QUEEN_MAT = S(962, 1129); +inline const PParam TEMPO_VAL = S(61, 20); + +inline const PParam BISHOP_PAIR_VAL = S(53, 199); +inline const PParam ROOK_OPEN_VAL = S(117, -12); +inline const PParam ROOK_SEMIOPEN_VAL = S(45, 27); +inline const PParam MINOR_BEHIND_PAWN = S(11, 40); +inline const PParam RESTRICTED_SQUARES = S(-24, -5); + +inline const PParam DOUBLED_PAWN_VAL = S(-13, -71); +inline const PParam ISOLATED_PAWN_VAL = S(-19, -18); + +inline const PParam POTENTIAL_CHECKER_VAL = S(-51, -24); +inline const PParam OUTPOST_KNIGHT_VAL = S(45, 63); +inline const PParam OUTPOST_BISHOP_VAL = S(60, 36); + +inline const PParam PAWN_PUSH_THREAT_KNIGHT = S(40, -1); +inline const PParam PAWN_PUSH_THREAT_BISHOP = S(49, -19); +inline const PParam PAWN_PUSH_THREAT_ROOK = S(27, 45); +inline const PParam PAWN_PUSH_THREAT_QUEEN = S(61, -39); inline const std::array PAWN_PHALANX = { - S(15, -2), S(35, 27), S(61, 46), S(138, 138), S(373, 200), S(595, 613), + S(12, 3), S(28, 29), S(58, 49), S(145, 142), S(383, 202), S(607, 619), }; inline const std::array DEFENDED_PAWN = { - S(51, 34), S(45, 25), S(62, 48), S(122, 134), S(428, 73), + S(49, 37), S(45, 26), S(61, 51), S(121, 138), S(444, 65), }; inline const std::array PASSED_PAWN = { - S(-69, -125), S(-71, -96), S(-49, 14), S(8, 113), S(102, 247), S(272, 364), + S(-67, -125), S(-66, -98), S(-40, 12), S(11, 115), S(94, 253), S(262, 373), }; inline const std::array DEFENDED_PASSED_PUSH = { - S(30, -40), S(27, -3), S(17, 30), S(4, 106), S(70, 205), S(240, 253), + S(27, -39), S(22, 4), S(14, 37), S(3, 113), S(78, 209), S(241, 274), }; inline const std::array BLOCKED_PASSED_PAWN = { - S(16, -21), S(6, 17), S(3, -15), S(4, -43), S(6, -129), S(-234, -218), + S(14, -22), S(4, 19), S(0, -14), S(2, -43), S(-4, -134), S(-237, -228), }; inline const std::array FRIENDLY_KING_PASSED_PAWN_DISTANCE = { - S(0, 0), S(-3, 139), S(-17, 110), S(-10, 41), S(-3, 8), S(4, 8), S(39, 6), S(30, -8), + S(0, 0), S(3, 143), S(-16, 111), S(-12, 41), S(-4, 6), S(3, 8), S(41, 7), S(35, -11), }; inline const std::array ENEMY_KING_PASSED_PAWN_DISTANCE = { - S(0, 0), S(-296, -71), S(-31, 13), S(-24, 61), S(14, 94), S(35, 115), S(48, 119), S(31, 111), + S(0, 0), S(-261, -72), S(-17, 15), S(-23, 62), S(11, 93), S(32, 114), S(43, 120), S(25, 116), }; inline const std::array KNIGHT_MOBILITY = { - S(82, -4), S(147, 164), S(179, 256), S(207, 290), S(246, 306), S(270, 336), S(301, 333), S(331, 341), S(386, 248), + S(86, 7), S(153, 176), S(186, 262), S(213, 292), S(246, 307), S(263, 335), S(287, 330), S(307, 339), S(358, 245), }; inline const std::array BISHOP_MOBILITY = { - S(113, 2), S(152, 169), S(200, 233), S(223, 281), S(247, 311), S(261, 335), S(269, 352), S(283, 359), S(290, 372), S(315, 352), S(325, 349), S(381, 289), S(379, 298), S(429, 232), + S(99, 5), S(142, 170), S(195, 237), S(220, 282), S(244, 313), S(258, 336), S(266, 352), S(277, 360), S(282, 373), S(303, 353), S(309, 351), S(362, 290), S(356, 304), S(410, 230), }; inline const std::array ROOK_MOBILITY = { - S(325, 255), S(243, 411), S(265, 439), S(282, 448), S(292, 462), S(296, 474), S(301, 485), S(308, 488), S(313, 498), S(322, 500), S(331, 501), S(336, 505), S(342, 502), S(360, 471), S(453, 362), + S(333, 245), S(246, 410), S(268, 438), S(284, 448), S(294, 462), S(299, 473), S(304, 484), S(311, 488), S(315, 499), S(323, 502), S(330, 506), S(334, 512), S(337, 511), S(353, 481), S(443, 373), }; inline const std::array QUEEN_MOBILITY = { - S(479, 228), S(608, 348), S(632, 457), S(650, 575), S(664, 619), S(669, 668), S(674, 700), S(680, 713), S(682, 739), S(683, 758), S(688, 766), S(690, 777), S(695, 777), S(695, 788), S(696, 789), S(693, 794), S(691, 794), S(694, 791), S(699, 781), S(697, 782), S(694, 773), S(709, 739), S(694, 747), S(676, 705), S(658, 691), S(644, 669), S(582, 701), S(588, 656), + S(477, 489), S(609, 584), S(635, 693), S(655, 798), S(670, 840), S(679, 879), S(685, 905), S(693, 912), S(697, 931), S(699, 944), S(706, 946), S(709, 951), S(715, 947), S(715, 950), S(716, 948), S(712, 950), S(709, 948), S(712, 939), S(715, 928), S(715, 923), S(714, 903), S(725, 872), S(706, 879), S(696, 824), S(670, 816), S(664, 779), S(602, 806), S(610, 769), }; inline const std::array KING_MOBILITY = { - S(506, -231), S(94, -91), S(30, -22), S(13, 12), S(-4, 8), S(-17, 6), S(-24, 12), S(-49, 21), S(-38, -22), + S(467, -171), S(73, -80), S(19, -9), S(4, 21), S(-9, 11), S(-5, -3), S(-13, 8), S(-33, 14), S(-13, -31), }; inline const std::array PT_INNER_RING_ATTACKS = { - S(12, -8), S(9, 8), S(9, 4), S(4, -1), S(4, -10), + S(9, -97), S(14, -82), S(14, -73), S(6, -106), S(1, -51), }; inline const std::array PT_OUTER_RING_ATTACKS = { - S(5, -6), S(4, 2), S(3, 0), S(3, -1), S(4, -3), + S(3, -123), S(6, -115), S(4, -101), S(4, -107), S(4, 20), }; -inline const PParam KS_NO_QUEEN = S(-89, -1455); -inline const PParam KS_FLANK_ATTACK = S(2, -2); -inline const PParam KS_FLANK_DEFENSE = S(-3, 0); -inline const PParam KS_FLANK_DOUBLE_ATTACK = S(4, -0); -inline const PParam KS_FLANK_DOUBLE_DEFENSE = S(-3, 3); -inline const PParam PAWN_THREAT_KNIGHT = S(216, 86); -inline const PParam PAWN_THREAT_BISHOP = S(200, 128); -inline const PParam PAWN_THREAT_ROOK = S(200, 121); -inline const PParam PAWN_THREAT_QUEEN = S(169, 5); +inline const PParam KS_NO_QUEEN = S(-594, -786); -inline const PParam KNIGHT_THREAT_BISHOP = S(108, 101); -inline const PParam KNIGHT_THREAT_ROOK = S(230, 67); -inline const PParam KNIGHT_THREAT_QUEEN = S(159, -28); +inline const PParam KS_FLANK_ATTACK = S(3, -112); +inline const PParam KS_FLANK_DEFENSE = S(-5, -108); +inline const PParam KS_FLANK_DOUBLE_ATTACK = S(2, -125); +inline const PParam KS_FLANK_DOUBLE_DEFENSE = S(-2, -109); -inline const PParam BISHOP_THREAT_KNIGHT = S(106, 55); -inline const PParam BISHOP_THREAT_ROOK = S(214, 124); -inline const PParam BISHOP_THREAT_QUEEN = S(178, 90); +inline const PParam PAWN_THREAT_KNIGHT = S(217, 84); +inline const PParam PAWN_THREAT_BISHOP = S(208, 131); +inline const PParam PAWN_THREAT_ROOK = S(201, 121); +inline const PParam PAWN_THREAT_QUEEN = S(185, -21); + +inline const PParam KNIGHT_THREAT_BISHOP = S(109, 103); +inline const PParam KNIGHT_THREAT_ROOK = S(227, 72); +inline const PParam KNIGHT_THREAT_QUEEN = S(156, -20); + +inline const PParam BISHOP_THREAT_KNIGHT = S(105, 55); +inline const PParam BISHOP_THREAT_ROOK = S(213, 123); +inline const PParam BISHOP_THREAT_QUEEN = S(178, 79); inline const std::array BISHOP_PAWNS = { - S(9, -31), S(-4, -3), S(-5, -11), S(-8, -20), S(-12, -28), S(-15, -34), S(-17, -45), S(-23, -45), S(-38, -41), + S(11, -29), S(-3, -2), S(-5, -11), S(-8, -22), S(-12, -32), S(-15, -40), S(-16, -52), S(-22, -53), S(-37, -49), }; inline const PParam ROOK_LINEUP = S(13, 70); inline const std::array PAWN_PSQT = { - S(314, 324), S(131, 429), S(271, 383), S(270, 325), S(324, 251), S(228, 322), S(161, 363), S(282, 311), // - S(124, 202), S(146, 240), S(165, 191), S(135, 153), S(132, 121), S(107, 160), S(90, 206), S(50, 227), // - S(95, 165), S(80, 182), S(118, 139), S(102, 117), S(95, 100), S(74, 120), S(27, 162), S(20, 183), // - S(60, 118), S(49, 152), S(87, 123), S(74, 114), S(50, 110), S(41, 123), S(-18, 157), S(-15, 148), // - S(59, 88), S(97, 91), S(86, 130), S(71, 128), S(40, 123), S(26, 123), S(-12, 140), S(-15, 131), // - S(70, 98), S(152, 101), S(127, 138), S(92, 160), S(63, 147), S(44, 131), S(16, 148), S(-1, 147), // + S(315, 323), S(122, 436), S(274, 379), S(254, 326), S(305, 250), S(206, 324), S(147, 359), S(282, 309), // + S(124, 204), S(139, 247), S(152, 194), S(122, 150), S(118, 118), S(97, 159), S(80, 203), S(45, 226), // + S(92, 163), S(68, 180), S(104, 133), S(88, 109), S(82, 95), S(61, 115), S(13, 158), S(15, 179), // + S(59, 118), S(33, 156), S(66, 124), S(53, 117), S(30, 112), S(26, 122), S(-32, 156), S(-21, 146), // + S(60, 85), S(89, 95), S(74, 131), S(61, 128), S(32, 120), S(16, 119), S(-22, 136), S(-19, 127), // + S(77, 85), S(157, 101), S(140, 142), S(92, 157), S(64, 140), S(45, 123), S(13, 140), S(0, 141), // }; inline const std::array KNIGHT_PSQT = { - S(-202, -137), S(-132, 189), S(-168, 121), S(126, 166), S(45, 180), S(-103, 197), S(-260, 256), S(-274, -30), // - S(88, 156), S(121, 173), S(217, 135), S(214, 140), S(205, 158), S(148, 175), S(93, 193), S(74, 173), // - S(156, 148), S(176, 140), S(188, 198), S(198, 197), S(163, 229), S(124, 228), S(138, 166), S(103, 160), // - S(227, 171), S(234, 185), S(229, 206), S(219, 238), S(226, 243), S(189, 231), S(185, 200), S(178, 176), // - S(210, 170), S(247, 148), S(216, 205), S(217, 221), S(191, 228), S(195, 218), S(199, 165), S(157, 186), // - S(150, 145), S(167, 160), S(163, 198), S(177, 214), S(170, 215), S(141, 198), S(140, 166), S(112, 135), // - S(174, 144), S(183, 139), S(148, 160), S(157, 182), S(154, 180), S(129, 133), S(117, 156), S(107, 67), // - S(99, 95), S(146, 159), S(170, 125), S(189, 131), S(168, 153), S(135, 123), S(123, 143), S(83, 51), // + S(-215, -165), S(-149, 172), S(-171, 105), S(119, 163), S(40, 170), S(-105, 180), S(-270, 232), S(-287, -65), // + S(80, 141), S(108, 168), S(223, 140), S(237, 150), S(234, 156), S(153, 176), S(84, 181), S(59, 161), // + S(147, 141), S(186, 138), S(213, 208), S(230, 208), S(191, 240), S(141, 234), S(141, 160), S(90, 152), // + S(214, 159), S(229, 183), S(234, 218), S(237, 246), S(240, 251), S(196, 235), S(175, 193), S(161, 163), // + S(195, 156), S(237, 143), S(217, 211), S(213, 226), S(190, 233), S(194, 219), S(185, 160), S(140, 171), // + S(132, 127), S(155, 155), S(153, 197), S(169, 214), S(162, 214), S(132, 194), S(128, 155), S(89, 121), // + S(147, 133), S(158, 130), S(133, 148), S(142, 169), S(137, 168), S(112, 122), S(94, 139), S(83, 46), // + S(79, 71), S(126, 132), S(145, 109), S(160, 114), S(144, 133), S(109, 107), S(98, 121), S(59, 28), // }; inline const std::array BISHOP_PSQT = { - S(10, 298), S(14, 290), S(-280, 352), S(-129, 293), S(-131, 304), S(-146, 297), S(-41, 296), S(35, 284), // - S(124, 215), S(85, 284), S(113, 235), S(49, 261), S(72, 255), S(93, 260), S(139, 251), S(111, 232), // - S(186, 234), S(184, 248), S(186, 258), S(167, 256), S(145, 259), S(159, 261), S(174, 250), S(169, 231), // - S(171, 216), S(199, 229), S(198, 253), S(195, 295), S(232, 278), S(174, 254), S(190, 215), S(153, 219), // - S(202, 175), S(207, 211), S(220, 240), S(223, 265), S(202, 280), S(202, 255), S(173, 226), S(168, 195), // - S(222, 183), S(248, 203), S(255, 233), S(211, 256), S(202, 238), S(211, 244), S(226, 222), S(172, 208), // - S(185, 155), S(280, 169), S(237, 195), S(217, 208), S(195, 217), S(206, 187), S(208, 179), S(203, 172), // - S(211, 162), S(190, 198), S(206, 213), S(231, 184), S(213, 198), S(211, 234), S(211, 209), S(204, 180), // + S(3, 284), S(-4, 294), S(-285, 351), S(-124, 288), S(-128, 299), S(-151, 294), S(-54, 295), S(27, 274), // + S(114, 210), S(79, 282), S(116, 238), S(70, 259), S(89, 251), S(101, 255), S(138, 245), S(109, 218), // + S(184, 233), S(175, 255), S(190, 264), S(178, 266), S(160, 260), S(164, 259), S(171, 245), S(167, 222), // + S(166, 217), S(206, 230), S(213, 257), S(213, 298), S(246, 281), S(193, 246), S(198, 210), S(153, 212), // + S(205, 166), S(205, 214), S(226, 241), S(230, 272), S(210, 284), S(207, 256), S(175, 223), S(169, 186), // + S(223, 180), S(239, 200), S(248, 235), S(214, 256), S(206, 239), S(208, 243), S(217, 221), S(171, 206), // + S(183, 147), S(264, 167), S(228, 189), S(206, 207), S(190, 210), S(198, 181), S(195, 175), S(199, 163), // + S(208, 151), S(191, 182), S(196, 200), S(212, 177), S(197, 189), S(202, 223), S(202, 203), S(198, 172), // }; inline const std::array ROOK_PSQT = { - S(424, 399), S(468, 395), S(419, 417), S(426, 383), S(468, 369), S(426, 385), S(434, 399), S(408, 416), // - S(308, 471), S(391, 460), S(452, 428), S(394, 439), S(434, 427), S(403, 433), S(337, 470), S(320, 479), // - S(265, 467), S(378, 443), S(419, 404), S(396, 397), S(392, 416), S(349, 439), S(353, 443), S(290, 481), // - S(244, 439), S(324, 434), S(357, 405), S(334, 411), S(359, 406), S(320, 436), S(316, 440), S(249, 467), // - S(224, 373), S(295, 382), S(287, 393), S(268, 392), S(272, 405), S(263, 424), S(234, 425), S(216, 425), // - S(232, 314), S(303, 331), S(298, 345), S(281, 345), S(289, 350), S(258, 380), S(260, 363), S(222, 372), // - S(136, 324), S(277, 278), S(284, 306), S(277, 328), S(281, 328), S(267, 338), S(256, 323), S(227, 338), // - S(198, 306), S(220, 327), S(286, 312), S(298, 308), S(297, 316), S(277, 333), S(272, 326), S(253, 335), // + S(411, 393), S(460, 391), S(413, 414), S(412, 385), S(449, 371), S(413, 385), S(427, 390), S(400, 407), // + S(301, 465), S(389, 456), S(453, 427), S(389, 440), S(430, 424), S(401, 431), S(342, 457), S(321, 465), // + S(265, 467), S(391, 440), S(433, 409), S(405, 405), S(404, 418), S(356, 444), S(361, 437), S(295, 471), // + S(231, 448), S(324, 445), S(347, 423), S(326, 428), S(359, 411), S(315, 445), S(319, 440), S(245, 465), // + S(210, 377), S(290, 385), S(277, 400), S(252, 399), S(263, 405), S(254, 424), S(229, 420), S(211, 417), // + S(223, 305), S(299, 324), S(289, 339), S(267, 338), S(281, 336), S(247, 372), S(257, 349), S(217, 357), // + S(124, 312), S(270, 267), S(272, 293), S(264, 313), S(270, 311), S(257, 323), S(251, 306), S(218, 322), // + S(193, 289), S(219, 310), S(278, 296), S(290, 290), S(291, 298), S(272, 316), S(270, 309), S(249, 315), // }; inline const std::array QUEEN_PSQT = { - S(518, 575), S(605, 525), S(506, 665), S(437, 775), S(487, 703), S(495, 655), S(540, 532), S(468, 602), // - S(508, 591), S(502, 678), S(441, 769), S(306, 870), S(349, 848), S(405, 765), S(477, 604), S(473, 595), // - S(450, 664), S(464, 709), S(405, 811), S(360, 839), S(374, 831), S(444, 709), S(481, 620), S(505, 531), // - S(478, 562), S(458, 657), S(402, 737), S(389, 793), S(404, 787), S(440, 676), S(496, 572), S(488, 531), // - S(491, 524), S(468, 583), S(442, 647), S(420, 698), S(432, 709), S(458, 633), S(484, 554), S(517, 471), // - S(486, 452), S(516, 473), S(510, 538), S(491, 541), S(492, 549), S(503, 564), S(525, 498), S(509, 478), // - S(474, 311), S(507, 315), S(514, 382), S(539, 405), S(530, 446), S(534, 421), S(506, 457), S(519, 446), // - S(462, 320), S(487, 192), S(525, 174), S(545, 265), S(544, 342), S(546, 303), S(538, 333), S(509, 375), // + S(532, 669), S(623, 619), S(554, 710), S(506, 774), S(535, 748), S(535, 723), S(562, 636), S(480, 715), // + S(516, 723), S(530, 808), S(504, 825), S(380, 890), S(417, 894), S(456, 859), S(504, 753), S(485, 742), // + S(488, 757), S(522, 794), S(486, 862), S(446, 883), S(455, 895), S(504, 822), S(530, 751), S(533, 677), // + S(512, 638), S(512, 729), S(467, 794), S(449, 857), S(455, 886), S(492, 779), S(534, 712), S(509, 682), // + S(513, 609), S(494, 672), S(474, 731), S(449, 794), S(456, 837), S(473, 793), S(496, 715), S(514, 651), // + S(497, 554), S(518, 582), S(513, 658), S(491, 679), S(490, 710), S(492, 747), S(508, 697), S(502, 651), // + S(466, 449), S(494, 454), S(503, 508), S(523, 567), S(511, 624), S(510, 607), S(479, 656), S(500, 625), // + S(454, 461), S(481, 325), S(504, 343), S(519, 451), S(513, 549), S(521, 500), S(517, 527), S(491, 556), // }; inline const std::array KING_PSQT = { - S(27, -321), S(367, 166), S(275, 127), S(160, 11), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(295, -49), S(385, 172), S(268, 159), S(215, 35), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(211, 39), S(292, 141), S(226, 137), S(183, 50), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(24, 6), S(183, 77), S(93, 106), S(65, 105), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(-119, -13), S(24, 45), S(-15, 85), S(-91, 133), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(-75, -36), S(32, 15), S(-27, 65), S(-68, 103), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(-3, -78), S(38, -15), S(-13, 28), S(-75, 70), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(-80, -139), S(-9, -82), S(-80, -39), S(-81, -48), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(10, -334), S(315, 170), S(270, 123), S(187, -11), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(247, -59), S(311, 171), S(240, 154), S(207, 21), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(167, 34), S(235, 136), S(197, 136), S(161, 46), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(5, -3), S(135, 78), S(59, 107), S(28, 105), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-110, -23), S(-3, 49), S(-53, 90), S(-133, 136), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-47, -45), S(27, 19), S(-47, 70), S(-93, 105), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(22, -73), S(45, -8), S(-22, 36), S(-83, 66), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-50, -139), S(13, -73), S(-70, -41), S(-69, -61), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // }; inline const std::array, 4> KING_SHELTER = {{ - {{ S(28, -9), S(4, 15), S(9, 2), S(19, -6), S(18, -6), S(8, 3), S(6, 13), }}, - {{ S(11, 7), S(-12, 10), S(-9, 16), S(-1, 23), S(-0, 21), S(-9, 19), S(-12, 12), }}, - {{ S(10, 9), S(0, 2), S(0, 22), S(3, 27), S(4, 26), S(-1, 25), S(1, 2), }}, - {{ S(16, 18), S(1, 20), S(4, 38), S(7, 44), S(5, 47), S(2, 41), S(2, 25), }}, + {{ S(23, -85), S(5, -99), S(4, -98), S(14, -89), S(14, -46), S(3, -82), S(7, -87), }}, + {{ S(7, -76), S(-21, -69), S(-13, -99), S(-1, -101), S(0, -49), S(-12, -53), S(-19, -2), }}, + {{ S(2, -61), S(-11, -110), S(-5, -107), S(2, -84), S(2, -35), S(-5, -77), S(-10, 6), }}, + {{ S(15, -20), S(-3, -82), S(8, -87), S(13, -86), S(12, 1), S(6, 38), S(0, 12), }}, }}; inline const std::array BLOCKED_SHELTER_STORM = { - S(0, 0), S(0, 0), S(-8, 6), S(-18, -17), S(-20, -8), S(-16, 4), S(-3, -26), + S(0, 0), S(0, 0), S(10, -33), S(-12, -82), S(-9, -131), S(0, -59), S(3, -65), }; inline const std::array, 4> SHELTER_STORM = {{ - {{ S(-6, -12), S(-16, -12), S(-18, -9), S(-14, -14), S(-15, -14), S(-18, -7), S(-17, -10), }}, - {{ S(-1, -21), S(-9, -15), S(-19, -11), S(-14, -16), S(-15, -15), S(-17, -13), S(-9, -15), }}, - {{ S(-10, -12), S(-15, -3), S(-18, -5), S(-15, -9), S(-14, -12), S(-18, -7), S(-15, -4), }}, - {{ S(-9, -20), S(-18, -7), S(-20, -11), S(-16, -11), S(-15, -12), S(-20, -11), S(-21, -1), }}, + {{ S(4, -88), S(-9, -93), S(-8, -69), S(-6, -78), S(-7, -78), S(-7, -107), S(-9, -118), }}, + {{ S(8, -68), S(0, -54), S(-10, -117), S(-7, -101), S(-7, 15), S(-8, -82), S(0, -142), }}, + {{ S(2, -107), S(-2, -95), S(-6, 78), S(-4, 53), S(-4, -54), S(-7, -55), S(-2, -119), }}, + {{ S(2, -79), S(-7, -16), S(-11, 61), S(-4, -23), S(-3, -119), S(-10, -146), S(-9, -36), }}, }}; inline TunableSigmoid<32> KING_SAFETY_ACTIVATION( - 1453, 882, -15, 20 + 1056, 555, -3, -98 ); inline VParam WINNABLE_PAWNS = V(-15); -inline VParam WINNABLE_SYM = V(135); -inline VParam WINNABLE_ASYM = V(125); -inline VParam WINNABLE_PAWN_ENDGAME = V(208); -inline VParam WINNABLE_BIAS = V(-644); +inline VParam WINNABLE_SYM = V(139); +inline VParam WINNABLE_ASYM = V(127); +inline VParam WINNABLE_PAWN_ENDGAME = V(209); +inline VParam WINNABLE_BIAS = V(-665); // Epoch duration: 9.72937s // clang-format on diff --git a/src/evaltune_main.cpp b/src/evaltune_main.cpp index befde406..9bc0bc3d 100644 --- a/src/evaltune_main.cpp +++ b/src/evaltune_main.cpp @@ -272,6 +272,7 @@ int main() { << std::endl; std::cout << "inline const PParam MINOR_BEHIND_PAWN = " << MINOR_BEHIND_PAWN << ";" << std::endl; + std::cout << "inline const PParam RESTRICTED_SQUARES = " << RESTRICTED_SQUARES << ";" << std::endl; std::cout << std::endl; std::cout << "inline const PParam DOUBLED_PAWN_VAL = " << DOUBLED_PAWN_VAL << ";" diff --git a/src/evaluation.cpp b/src/evaluation.cpp index 118f4184..1b74620a 100644 --- a/src/evaluation.cpp +++ b/src/evaluation.cpp @@ -429,7 +429,11 @@ PScore evaluate_space(const Position& pos) { * (ourminors.shift_relative(color, Direction::North) & (pos.bitboard_for(them, PieceType::Pawn) | pos.bitboard_for(color, PieceType::Pawn))) .ipopcount(); - + + Bitboard strongly_defended = pos.attacked_by(color, PieceType::Pawn) | (pos.attacked_by_two_or_more(color) & ~pos.attacked_by_two_or_more(them)); + + eval += RESTRICTED_SQUARES * (pos.attack_table(color).get_attacked_bitboard() & ~strongly_defended & pos.attack_table(them).get_attacked_bitboard()).ipopcount(); + return eval; } From 007ea43e6d550f00ee96d891f3bdd4b9f493f47a Mon Sep 17 00:00:00 2001 From: TheRealGioviok <425gioviok@gmail.com> Date: Tue, 14 Apr 2026 16:40:35 +0200 Subject: [PATCH 2/3] Bench: 17893744 --- src/eval_constants.hpp | 232 ++++++++++++++++++++--------------------- src/evaltune_main.cpp | 4 +- 2 files changed, 118 insertions(+), 118 deletions(-) diff --git a/src/eval_constants.hpp b/src/eval_constants.hpp index 4bc0075f..30225f71 100644 --- a/src/eval_constants.hpp +++ b/src/eval_constants.hpp @@ -5,187 +5,187 @@ namespace Clockwork { // clang-format off -inline const PParam PAWN_MAT = S(132, 206); -inline const PParam KNIGHT_MAT = S(592, 615); -inline const PParam BISHOP_MAT = S(617, 618); -inline const PParam ROOK_MAT = S(480, 669); -inline const PParam QUEEN_MAT = S(962, 1129); -inline const PParam TEMPO_VAL = S(61, 20); - -inline const PParam BISHOP_PAIR_VAL = S(53, 199); -inline const PParam ROOK_OPEN_VAL = S(117, -12); -inline const PParam ROOK_SEMIOPEN_VAL = S(45, 27); -inline const PParam MINOR_BEHIND_PAWN = S(11, 40); -inline const PParam RESTRICTED_SQUARES = S(-24, -5); - -inline const PParam DOUBLED_PAWN_VAL = S(-13, -71); -inline const PParam ISOLATED_PAWN_VAL = S(-19, -18); - -inline const PParam POTENTIAL_CHECKER_VAL = S(-51, -24); -inline const PParam OUTPOST_KNIGHT_VAL = S(45, 63); -inline const PParam OUTPOST_BISHOP_VAL = S(60, 36); - -inline const PParam PAWN_PUSH_THREAT_KNIGHT = S(40, -1); +inline const PParam PAWN_MAT = S(125, 214); +inline const PParam KNIGHT_MAT = S(576, 639); +inline const PParam BISHOP_MAT = S(602, 637); +inline const PParam ROOK_MAT = S(465, 689); +inline const PParam QUEEN_MAT = S(945, 1175); +inline const PParam TEMPO_VAL = S(60, 21); + +inline const PParam BISHOP_PAIR_VAL = S(54, 199); +inline const PParam ROOK_OPEN_VAL = S(119, -16); +inline const PParam ROOK_SEMIOPEN_VAL = S(44, 29); +inline const PParam MINOR_BEHIND_PAWN = S(12, 38); +inline const PParam RESTRICTED_SQUARES = S(-25, -4); + +inline const PParam DOUBLED_PAWN_VAL = S(-11, -73); +inline const PParam ISOLATED_PAWN_VAL = S(-20, -15); + +inline const PParam POTENTIAL_CHECKER_VAL = S(-48, -26); +inline const PParam OUTPOST_KNIGHT_VAL = S(51, 47); +inline const PParam OUTPOST_BISHOP_VAL = S(57, 35); + +inline const PParam PAWN_PUSH_THREAT_KNIGHT = S(39, 2); inline const PParam PAWN_PUSH_THREAT_BISHOP = S(49, -19); -inline const PParam PAWN_PUSH_THREAT_ROOK = S(27, 45); -inline const PParam PAWN_PUSH_THREAT_QUEEN = S(61, -39); +inline const PParam PAWN_PUSH_THREAT_ROOK = S(27, 43); +inline const PParam PAWN_PUSH_THREAT_QUEEN = S(63, -41); inline const std::array PAWN_PHALANX = { - S(12, 3), S(28, 29), S(58, 49), S(145, 142), S(383, 202), S(607, 619), + S(14, 1), S(30, 26), S(59, 49), S(141, 143), S(380, 199), S(605, 629), }; inline const std::array DEFENDED_PAWN = { - S(49, 37), S(45, 26), S(61, 51), S(121, 138), S(444, 65), + S(51, 35), S(45, 27), S(60, 51), S(121, 136), S(439, 65), }; inline const std::array PASSED_PAWN = { - S(-67, -125), S(-66, -98), S(-40, 12), S(11, 115), S(94, 253), S(262, 373), + S(-80, -106), S(-78, -86), S(-46, 10), S(16, 101), S(107, 245), S(283, 350), }; inline const std::array DEFENDED_PASSED_PUSH = { - S(27, -39), S(22, 4), S(14, 37), S(3, 113), S(78, 209), S(241, 274), + S(26, -30), S(21, 3), S(13, 35), S(1, 111), S(83, 197), S(257, 248), }; inline const std::array BLOCKED_PASSED_PAWN = { - S(14, -22), S(4, 19), S(0, -14), S(2, -43), S(-4, -134), S(-237, -228), + S(15, -24), S(-1, 25), S(-2, -11), S(1, -42), S(-8, -123), S(-254, -202), }; inline const std::array FRIENDLY_KING_PASSED_PAWN_DISTANCE = { - S(0, 0), S(3, 143), S(-16, 111), S(-12, 41), S(-4, 6), S(3, 8), S(41, 7), S(35, -11), + S(0, 0), S(4, 143), S(-18, 117), S(-12, 43), S(-5, 7), S(3, 6), S(41, 1), S(32, -13), }; inline const std::array ENEMY_KING_PASSED_PAWN_DISTANCE = { - S(0, 0), S(-261, -72), S(-17, 15), S(-23, 62), S(11, 93), S(32, 114), S(43, 120), S(25, 116), + S(0, 0), S(-324, -27), S(-43, 30), S(-30, 77), S(21, 81), S(44, 97), S(56, 100), S(34, 100), }; inline const std::array KNIGHT_MOBILITY = { - S(86, 7), S(153, 176), S(186, 262), S(213, 292), S(246, 307), S(263, 335), S(287, 330), S(307, 339), S(358, 245), + S(87, 4), S(154, 174), S(186, 261), S(213, 293), S(245, 309), S(261, 339), S(283, 337), S(303, 347), S(341, 274), }; inline const std::array BISHOP_MOBILITY = { - S(99, 5), S(142, 170), S(195, 237), S(220, 282), S(244, 313), S(258, 336), S(266, 352), S(277, 360), S(282, 373), S(303, 353), S(309, 351), S(362, 290), S(356, 304), S(410, 230), + S(99, -2), S(142, 169), S(193, 238), S(218, 284), S(241, 317), S(255, 340), S(263, 357), S(275, 362), S(278, 378), S(298, 357), S(301, 359), S(349, 300), S(351, 301), S(370, 262), }; inline const std::array ROOK_MOBILITY = { - S(333, 245), S(246, 410), S(268, 438), S(284, 448), S(294, 462), S(299, 473), S(304, 484), S(311, 488), S(315, 499), S(323, 502), S(330, 506), S(334, 512), S(337, 511), S(353, 481), S(443, 373), + S(331, 249), S(244, 411), S(266, 440), S(282, 451), S(292, 465), S(297, 476), S(302, 487), S(309, 490), S(313, 502), S(320, 505), S(328, 507), S(332, 513), S(336, 511), S(347, 486), S(431, 380), }; inline const std::array QUEEN_MOBILITY = { - S(477, 489), S(609, 584), S(635, 693), S(655, 798), S(670, 840), S(679, 879), S(685, 905), S(693, 912), S(697, 931), S(699, 944), S(706, 946), S(709, 951), S(715, 947), S(715, 950), S(716, 948), S(712, 950), S(709, 948), S(712, 939), S(715, 928), S(715, 923), S(714, 903), S(725, 872), S(706, 879), S(696, 824), S(670, 816), S(664, 779), S(602, 806), S(610, 769), + S(484, 469), S(612, 575), S(636, 689), S(656, 796), S(671, 838), S(679, 878), S(686, 904), S(693, 913), S(697, 931), S(699, 945), S(706, 947), S(708, 954), S(714, 951), S(714, 956), S(716, 952), S(712, 952), S(709, 953), S(712, 944), S(717, 933), S(718, 927), S(717, 910), S(733, 871), S(709, 889), S(700, 834), S(671, 833), S(659, 807), S(594, 844), S(605, 797), }; inline const std::array KING_MOBILITY = { - S(467, -171), S(73, -80), S(19, -9), S(4, 21), S(-9, 11), S(-5, -3), S(-13, 8), S(-33, 14), S(-13, -31), + S(468, -201), S(80, -99), S(23, -18), S(9, 12), S(-3, 4), S(-3, -0), S(-14, 4), S(-43, 20), S(-50, 10), }; inline const std::array PT_INNER_RING_ATTACKS = { - S(9, -97), S(14, -82), S(14, -73), S(6, -106), S(1, -51), + S(9, -20), S(12, -15), S(11, -2), S(5, -6), S(1, -10), }; inline const std::array PT_OUTER_RING_ATTACKS = { - S(3, -123), S(6, -115), S(4, -101), S(4, -107), S(4, 20), + S(3, -18), S(5, -21), S(3, -9), S(3, -2), S(4, -2), }; -inline const PParam KS_NO_QUEEN = S(-594, -786); +inline const PParam KS_NO_QUEEN = S(-79, 5); -inline const PParam KS_FLANK_ATTACK = S(3, -112); -inline const PParam KS_FLANK_DEFENSE = S(-5, -108); -inline const PParam KS_FLANK_DOUBLE_ATTACK = S(2, -125); -inline const PParam KS_FLANK_DOUBLE_DEFENSE = S(-2, -109); +inline const PParam KS_FLANK_ATTACK = S(3, -4); +inline const PParam KS_FLANK_DEFENSE = S(-4, 0); +inline const PParam KS_FLANK_DOUBLE_ATTACK = S(2, -10); +inline const PParam KS_FLANK_DOUBLE_DEFENSE = S(-2, -1); -inline const PParam PAWN_THREAT_KNIGHT = S(217, 84); -inline const PParam PAWN_THREAT_BISHOP = S(208, 131); -inline const PParam PAWN_THREAT_ROOK = S(201, 121); -inline const PParam PAWN_THREAT_QUEEN = S(185, -21); +inline const PParam PAWN_THREAT_KNIGHT = S(212, 92); +inline const PParam PAWN_THREAT_BISHOP = S(205, 134); +inline const PParam PAWN_THREAT_ROOK = S(199, 122); +inline const PParam PAWN_THREAT_QUEEN = S(183, -19); -inline const PParam KNIGHT_THREAT_BISHOP = S(109, 103); -inline const PParam KNIGHT_THREAT_ROOK = S(227, 72); -inline const PParam KNIGHT_THREAT_QUEEN = S(156, -20); +inline const PParam KNIGHT_THREAT_BISHOP = S(109, 102); +inline const PParam KNIGHT_THREAT_ROOK = S(226, 74); +inline const PParam KNIGHT_THREAT_QUEEN = S(158, -22); -inline const PParam BISHOP_THREAT_KNIGHT = S(105, 55); -inline const PParam BISHOP_THREAT_ROOK = S(213, 123); -inline const PParam BISHOP_THREAT_QUEEN = S(178, 79); +inline const PParam BISHOP_THREAT_KNIGHT = S(103, 58); +inline const PParam BISHOP_THREAT_ROOK = S(211, 126); +inline const PParam BISHOP_THREAT_QUEEN = S(175, 87); inline const std::array BISHOP_PAWNS = { - S(11, -29), S(-3, -2), S(-5, -11), S(-8, -22), S(-12, -32), S(-15, -40), S(-16, -52), S(-22, -53), S(-37, -49), + S(12, -31), S(-3, -3), S(-5, -12), S(-8, -23), S(-11, -33), S(-14, -40), S(-15, -52), S(-21, -54), S(-36, -49), }; -inline const PParam ROOK_LINEUP = S(13, 70); +inline const PParam ROOK_LINEUP = S(14, 67); inline const std::array PAWN_PSQT = { - S(315, 323), S(122, 436), S(274, 379), S(254, 326), S(305, 250), S(206, 324), S(147, 359), S(282, 309), // - S(124, 204), S(139, 247), S(152, 194), S(122, 150), S(118, 118), S(97, 159), S(80, 203), S(45, 226), // - S(92, 163), S(68, 180), S(104, 133), S(88, 109), S(82, 95), S(61, 115), S(13, 158), S(15, 179), // - S(59, 118), S(33, 156), S(66, 124), S(53, 117), S(30, 112), S(26, 122), S(-32, 156), S(-21, 146), // - S(60, 85), S(89, 95), S(74, 131), S(61, 128), S(32, 120), S(16, 119), S(-22, 136), S(-19, 127), // - S(77, 85), S(157, 101), S(140, 142), S(92, 157), S(64, 140), S(45, 123), S(13, 140), S(0, 141), // + S(327, 322), S(137, 407), S(267, 383), S(273, 297), S(313, 238), S(202, 331), S(136, 379), S(295, 300), // + S(109, 212), S(130, 234), S(145, 182), S(122, 139), S(117, 110), S(86, 168), S(68, 219), S(39, 240), // + S(92, 158), S(71, 172), S(103, 124), S(87, 110), S(81, 99), S(58, 128), S(9, 177), S(11, 198), // + S(62, 106), S(39, 139), S(67, 108), S(55, 107), S(32, 108), S(26, 131), S(-32, 170), S(-22, 159), // + S(60, 81), S(86, 87), S(71, 125), S(61, 125), S(31, 123), S(14, 131), S(-24, 152), S(-21, 141), // + S(78, 83), S(152, 95), S(137, 140), S(93, 147), S(64, 136), S(44, 132), S(11, 154), S(-1, 153), // }; inline const std::array KNIGHT_PSQT = { - S(-215, -165), S(-149, 172), S(-171, 105), S(119, 163), S(40, 170), S(-105, 180), S(-270, 232), S(-287, -65), // - S(80, 141), S(108, 168), S(223, 140), S(237, 150), S(234, 156), S(153, 176), S(84, 181), S(59, 161), // - S(147, 141), S(186, 138), S(213, 208), S(230, 208), S(191, 240), S(141, 234), S(141, 160), S(90, 152), // - S(214, 159), S(229, 183), S(234, 218), S(237, 246), S(240, 251), S(196, 235), S(175, 193), S(161, 163), // - S(195, 156), S(237, 143), S(217, 211), S(213, 226), S(190, 233), S(194, 219), S(185, 160), S(140, 171), // - S(132, 127), S(155, 155), S(153, 197), S(169, 214), S(162, 214), S(132, 194), S(128, 155), S(89, 121), // - S(147, 133), S(158, 130), S(133, 148), S(142, 169), S(137, 168), S(112, 122), S(94, 139), S(83, 46), // - S(79, 71), S(126, 132), S(145, 109), S(160, 114), S(144, 133), S(109, 107), S(98, 121), S(59, 28), // + S(-220, -146), S(-156, 183), S(-58, -18), S(104, 189), S(36, 186), S(-95, 176), S(-271, 237), S(-285, -56), // + S(77, 143), S(102, 173), S(216, 149), S(222, 172), S(220, 176), S(144, 191), S(80, 185), S(61, 156), // + S(139, 150), S(180, 137), S(203, 213), S(218, 215), S(187, 239), S(140, 233), S(134, 167), S(85, 161), // + S(209, 170), S(222, 192), S(230, 228), S(231, 259), S(237, 260), S(194, 242), S(172, 201), S(156, 176), // + S(190, 167), S(232, 151), S(214, 217), S(210, 237), S(188, 239), S(194, 223), S(182, 170), S(138, 178), // + S(131, 126), S(154, 151), S(153, 190), S(168, 213), S(162, 211), S(134, 191), S(128, 156), S(88, 121), // + S(147, 132), S(159, 128), S(134, 143), S(141, 167), S(138, 165), S(112, 123), S(92, 145), S(77, 61), // + S(81, 63), S(129, 125), S(144, 106), S(160, 111), S(144, 130), S(109, 107), S(98, 119), S(59, 29), // }; inline const std::array BISHOP_PSQT = { - S(3, 284), S(-4, 294), S(-285, 351), S(-124, 288), S(-128, 299), S(-151, 294), S(-54, 295), S(27, 274), // - S(114, 210), S(79, 282), S(116, 238), S(70, 259), S(89, 251), S(101, 255), S(138, 245), S(109, 218), // - S(184, 233), S(175, 255), S(190, 264), S(178, 266), S(160, 260), S(164, 259), S(171, 245), S(167, 222), // - S(166, 217), S(206, 230), S(213, 257), S(213, 298), S(246, 281), S(193, 246), S(198, 210), S(153, 212), // - S(205, 166), S(205, 214), S(226, 241), S(230, 272), S(210, 284), S(207, 256), S(175, 223), S(169, 186), // - S(223, 180), S(239, 200), S(248, 235), S(214, 256), S(206, 239), S(208, 243), S(217, 221), S(171, 206), // - S(183, 147), S(264, 167), S(228, 189), S(206, 207), S(190, 210), S(198, 181), S(195, 175), S(199, 163), // - S(208, 151), S(191, 182), S(196, 200), S(212, 177), S(197, 189), S(202, 223), S(202, 203), S(198, 172), // + S(2, 289), S(-9, 302), S(-287, 355), S(-134, 298), S(-126, 297), S(-149, 291), S(-46, 285), S(31, 268), // + S(111, 216), S(79, 282), S(109, 246), S(57, 275), S(78, 265), S(101, 250), S(140, 239), S(115, 204), // + S(179, 234), S(173, 251), S(185, 266), S(171, 271), S(152, 266), S(163, 260), S(175, 233), S(169, 216), // + S(167, 213), S(201, 233), S(212, 258), S(210, 301), S(244, 281), S(191, 248), S(196, 214), S(155, 207), // + S(203, 167), S(205, 213), S(224, 243), S(229, 272), S(211, 279), S(206, 260), S(175, 224), S(170, 185), // + S(219, 185), S(236, 202), S(246, 234), S(211, 260), S(205, 241), S(206, 248), S(216, 225), S(169, 210), // + S(180, 152), S(265, 167), S(228, 186), S(206, 208), S(189, 212), S(196, 188), S(194, 179), S(196, 174), // + S(207, 153), S(192, 179), S(197, 201), S(212, 180), S(196, 190), S(201, 226), S(201, 206), S(197, 178), // }; inline const std::array ROOK_PSQT = { - S(411, 393), S(460, 391), S(413, 414), S(412, 385), S(449, 371), S(413, 385), S(427, 390), S(400, 407), // - S(301, 465), S(389, 456), S(453, 427), S(389, 440), S(430, 424), S(401, 431), S(342, 457), S(321, 465), // - S(265, 467), S(391, 440), S(433, 409), S(405, 405), S(404, 418), S(356, 444), S(361, 437), S(295, 471), // - S(231, 448), S(324, 445), S(347, 423), S(326, 428), S(359, 411), S(315, 445), S(319, 440), S(245, 465), // - S(210, 377), S(290, 385), S(277, 400), S(252, 399), S(263, 405), S(254, 424), S(229, 420), S(211, 417), // - S(223, 305), S(299, 324), S(289, 339), S(267, 338), S(281, 336), S(247, 372), S(257, 349), S(217, 357), // - S(124, 312), S(270, 267), S(272, 293), S(264, 313), S(270, 311), S(257, 323), S(251, 306), S(218, 322), // - S(193, 289), S(219, 310), S(278, 296), S(290, 290), S(291, 298), S(272, 316), S(270, 309), S(249, 315), // + S(410, 396), S(446, 406), S(397, 426), S(399, 395), S(433, 393), S(400, 402), S(415, 414), S(400, 417), // + S(300, 465), S(387, 460), S(447, 430), S(384, 445), S(424, 438), S(391, 445), S(338, 470), S(322, 471), // + S(262, 465), S(385, 442), S(430, 406), S(400, 405), S(399, 425), S(351, 449), S(355, 450), S(292, 479), // + S(231, 442), S(317, 443), S(344, 420), S(320, 428), S(355, 415), S(312, 446), S(316, 442), S(243, 468), // + S(208, 377), S(284, 388), S(273, 403), S(246, 404), S(261, 408), S(251, 429), S(227, 425), S(211, 421), // + S(226, 293), S(300, 317), S(289, 333), S(265, 335), S(279, 338), S(247, 373), S(259, 346), S(220, 353), // + S(132, 298), S(274, 259), S(273, 287), S(263, 308), S(268, 313), S(255, 327), S(249, 310), S(219, 321), // + S(197, 281), S(222, 302), S(278, 291), S(291, 285), S(292, 296), S(273, 314), S(270, 308), S(251, 311), // }; inline const std::array QUEEN_PSQT = { - S(532, 669), S(623, 619), S(554, 710), S(506, 774), S(535, 748), S(535, 723), S(562, 636), S(480, 715), // - S(516, 723), S(530, 808), S(504, 825), S(380, 890), S(417, 894), S(456, 859), S(504, 753), S(485, 742), // - S(488, 757), S(522, 794), S(486, 862), S(446, 883), S(455, 895), S(504, 822), S(530, 751), S(533, 677), // - S(512, 638), S(512, 729), S(467, 794), S(449, 857), S(455, 886), S(492, 779), S(534, 712), S(509, 682), // - S(513, 609), S(494, 672), S(474, 731), S(449, 794), S(456, 837), S(473, 793), S(496, 715), S(514, 651), // - S(497, 554), S(518, 582), S(513, 658), S(491, 679), S(490, 710), S(492, 747), S(508, 697), S(502, 651), // - S(466, 449), S(494, 454), S(503, 508), S(523, 567), S(511, 624), S(510, 607), S(479, 656), S(500, 625), // - S(454, 461), S(481, 325), S(504, 343), S(519, 451), S(513, 549), S(521, 500), S(517, 527), S(491, 556), // + S(538, 665), S(628, 620), S(547, 720), S(499, 783), S(528, 757), S(537, 723), S(557, 650), S(476, 727), // + S(518, 722), S(533, 806), S(502, 828), S(371, 902), S(412, 900), S(453, 864), S(504, 755), S(483, 749), // + S(483, 763), S(515, 797), S(482, 859), S(439, 887), S(449, 898), S(503, 818), S(523, 760), S(529, 687), // + S(507, 644), S(501, 741), S(461, 797), S(445, 856), S(453, 885), S(489, 780), S(532, 712), S(507, 686), // + S(507, 620), S(488, 683), S(468, 739), S(446, 796), S(457, 833), S(473, 793), S(496, 717), S(515, 652), // + S(495, 557), S(516, 586), S(510, 661), S(490, 678), S(493, 705), S(495, 743), S(512, 692), S(505, 649), // + S(470, 439), S(498, 449), S(505, 506), S(524, 563), S(513, 619), S(513, 606), S(483, 652), S(501, 629), // + S(457, 457), S(486, 314), S(509, 334), S(523, 444), S(516, 542), S(524, 497), S(521, 524), S(494, 556), // }; inline const std::array KING_PSQT = { - S(10, -334), S(315, 170), S(270, 123), S(187, -11), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(247, -59), S(311, 171), S(240, 154), S(207, 21), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(167, 34), S(235, 136), S(197, 136), S(161, 46), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(5, -3), S(135, 78), S(59, 107), S(28, 105), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(-110, -23), S(-3, 49), S(-53, 90), S(-133, 136), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(-47, -45), S(27, 19), S(-47, 70), S(-93, 105), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(22, -73), S(45, -8), S(-22, 36), S(-83, 66), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // - S(-50, -139), S(13, -73), S(-70, -41), S(-69, -61), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-10, -177), S(329, 277), S(223, 279), S(95, 183), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(244, 58), S(371, 223), S(227, 263), S(171, 150), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(171, 112), S(265, 190), S(179, 210), S(126, 144), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-3, 57), S(148, 113), S(34, 164), S(23, 161), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-97, -27), S(33, 26), S(-18, 78), S(-95, 133), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-40, -69), S(55, -21), S(-24, 43), S(-69, 87), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(22, -107), S(56, -53), S(-14, -6), S(-77, 33), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // + S(-59, -149), S(7, -100), S(-79, -60), S(-77, -78), S(0, 0), S(0, 0), S(0, 0), S(0, 0), // }; inline const std::array, 4> KING_SHELTER = {{ - {{ S(23, -85), S(5, -99), S(4, -98), S(14, -89), S(14, -46), S(3, -82), S(7, -87), }}, - {{ S(7, -76), S(-21, -69), S(-13, -99), S(-1, -101), S(0, -49), S(-12, -53), S(-19, -2), }}, - {{ S(2, -61), S(-11, -110), S(-5, -107), S(2, -84), S(2, -35), S(-5, -77), S(-10, 6), }}, - {{ S(15, -20), S(-3, -82), S(8, -87), S(13, -86), S(12, 1), S(6, 38), S(0, 12), }}, + {{ S(16, -28), S(1, -21), S(-1, -30), S(8, -59), S(8, -64), S(-2, -27), S(2, -21), }}, + {{ S(2, 22), S(-22, 7), S(-16, -3), S(-4, -27), S(-4, -21), S(-15, -1), S(-21, 11), }}, + {{ S(3, 5), S(-9, -2), S(-3, -14), S(2, -34), S(3, -33), S(-3, -13), S(-7, -2), }}, + {{ S(8, 16), S(-6, -14), S(3, -7), S(7, -17), S(6, -17), S(2, -8), S(-3, -10), }}, }}; inline const std::array BLOCKED_SHELTER_STORM = { - S(0, 0), S(0, 0), S(10, -33), S(-12, -82), S(-9, -131), S(0, -59), S(3, -65), + S(0, 0), S(0, 0), S(8, 6), S(-11, 3), S(-8, 2), S(-0, 12), S(3, -22), }; inline const std::array, 4> SHELTER_STORM = {{ - {{ S(4, -88), S(-9, -93), S(-8, -69), S(-6, -78), S(-7, -78), S(-7, -107), S(-9, -118), }}, - {{ S(8, -68), S(0, -54), S(-10, -117), S(-7, -101), S(-7, 15), S(-8, -82), S(0, -142), }}, - {{ S(2, -107), S(-2, -95), S(-6, 78), S(-4, 53), S(-4, -54), S(-7, -55), S(-2, -119), }}, - {{ S(2, -79), S(-7, -16), S(-11, 61), S(-4, -23), S(-3, -119), S(-10, -146), S(-9, -36), }}, + {{ S(3, 30), S(-8, 16), S(-7, 10), S(-5, 2), S(-6, 0), S(-6, 10), S(-8, 17), }}, + {{ S(7, -17), S(1, -28), S(-7, -29), S(-5, -49), S(-6, -50), S(-7, -33), S(1, -28), }}, + {{ S(0, -2), S(-2, -14), S(-6, -13), S(-4, -21), S(-4, -26), S(-7, -16), S(-2, -13), }}, + {{ S(-0, -6), S(-6, -7), S(-9, -16), S(-4, -14), S(-3, -12), S(-9, -14), S(-8, -8), }}, }}; inline TunableSigmoid<32> KING_SAFETY_ACTIVATION( - 1056, 555, -3, -98 + 1299, 1551, -14, -29 ); -inline VParam WINNABLE_PAWNS = V(-15); -inline VParam WINNABLE_SYM = V(139); -inline VParam WINNABLE_ASYM = V(127); -inline VParam WINNABLE_PAWN_ENDGAME = V(209); -inline VParam WINNABLE_BIAS = V(-665); +inline VParam WINNABLE_PAWNS = V(-16); +inline VParam WINNABLE_SYM = V(138); +inline VParam WINNABLE_ASYM = V(124); +inline VParam WINNABLE_PAWN_ENDGAME = V(246); +inline VParam WINNABLE_BIAS = V(-648); -// Epoch duration: 9.72937s +// Epoch duration: 9.73532s // clang-format on } // namespace Clockwork diff --git a/src/evaltune_main.cpp b/src/evaltune_main.cpp index 9bc0bc3d..dde01681 100644 --- a/src/evaltune_main.cpp +++ b/src/evaltune_main.cpp @@ -130,10 +130,10 @@ int main() { Parameters current_parameter_values = Graph::get().get_all_parameter_values(); // Uncomment for zero tune: Overwrite them all with zeros. - current_parameter_values = Parameters::rand_init(parameter_count); + // current_parameter_values = Parameters::rand_init(parameter_count); // The optimizer will now start with all-zero parameters - AdamW optim(parameter_count, 10, 0.9, 0.999, 1e-8, 0.0); + AdamW optim(parameter_count, 1, 0.9, 0.999, 1e-8, 0.0); #ifdef PROFILE_RUN const i32 epochs = 8; #else From a2104aa787bded0d8f4e145cf0e8ca7d9aceeabc Mon Sep 17 00:00:00 2001 From: TheRealGioviok <425gioviok@gmail.com> Date: Thu, 16 Apr 2026 16:24:23 +0200 Subject: [PATCH 3/3] Bench: 17893744 --- src/evaltune_main.cpp | 3 ++- src/evaluation.cpp | 15 ++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/evaltune_main.cpp b/src/evaltune_main.cpp index dde01681..28e7d367 100644 --- a/src/evaltune_main.cpp +++ b/src/evaltune_main.cpp @@ -272,7 +272,8 @@ int main() { << std::endl; std::cout << "inline const PParam MINOR_BEHIND_PAWN = " << MINOR_BEHIND_PAWN << ";" << std::endl; - std::cout << "inline const PParam RESTRICTED_SQUARES = " << RESTRICTED_SQUARES << ";" << std::endl; + std::cout << "inline const PParam RESTRICTED_SQUARES = " << RESTRICTED_SQUARES << ";" + << std::endl; std::cout << std::endl; std::cout << "inline const PParam DOUBLED_PAWN_VAL = " << DOUBLED_PAWN_VAL << ";" diff --git a/src/evaluation.cpp b/src/evaluation.cpp index 1b74620a..5535af4f 100644 --- a/src/evaluation.cpp +++ b/src/evaluation.cpp @@ -429,11 +429,16 @@ PScore evaluate_space(const Position& pos) { * (ourminors.shift_relative(color, Direction::North) & (pos.bitboard_for(them, PieceType::Pawn) | pos.bitboard_for(color, PieceType::Pawn))) .ipopcount(); - - Bitboard strongly_defended = pos.attacked_by(color, PieceType::Pawn) | (pos.attacked_by_two_or_more(color) & ~pos.attacked_by_two_or_more(them)); - - eval += RESTRICTED_SQUARES * (pos.attack_table(color).get_attacked_bitboard() & ~strongly_defended & pos.attack_table(them).get_attacked_bitboard()).ipopcount(); - + + Bitboard strongly_defended = + pos.attacked_by(color, PieceType::Pawn) + | (pos.attacked_by_two_or_more(color) & ~pos.attacked_by_two_or_more(them)); + + eval += RESTRICTED_SQUARES + * (pos.attack_table(color).get_attacked_bitboard() & ~strongly_defended + & pos.attack_table(them).get_attacked_bitboard()) + .ipopcount(); + return eval; }