@@ -45,28 +45,97 @@ inline Value queenImWt = 50;
4545inline Value rammedPawnPenalty = 10 ;
4646inline Value rookOnSeventhBonus = 30 ;
4747inline Value earlyQueenPenalty = 5 ;
48- inline Value egMobilityCnt[7 ][8 ] = { { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { -20 , -12 , -4 , 5 , 14 , 23 , 32 , 40 }, { -25 , -15 , -5 , 5 , 16 , 27 , 38 , 50 }, { -30 , -18 , -6 , 6 , 18 , 30 , 42 , 55 }, { -35 , -22 , -8 , 8 , 22 , 35 , 48 , 60 }, { -15 , -8 , -2 , 4 , 10 , 16 , 22 , 28 } };
49- inline Value eg_bishop_table[64 ] = { -10 , -5 , -5 , -5 , -5 , -5 , -5 , -10 , -5 , 5 , 10 , 10 , 10 , 10 , 5 , -5 , -5 , 10 , 15 , 20 , 20 , 15 , 10 , -5 , -5 , 10 , 20 , 25 , 25 , 20 , 10 , -5 , -5 , 10 , 20 , 25 , 25 , 20 , 10 , -5 , -5 , 10 , 15 , 20 , 20 , 15 , 10 , -5 , -5 , 5 , 10 , 10 , 10 , 10 , 5 , -5 , -10 , -5 , -5 , -5 , -5 , -5 , -5 , -10 };
50- inline Value eg_king_table[64 ] = { -50 , -40 , -30 , -20 , -20 , -30 , -40 , -50 , -40 , -20 , 0 , 10 , 10 , 0 , -20 , -40 , -30 , 0 , 20 , 30 , 30 , 20 , 0 , -30 , -20 , 10 , 30 , 40 , 40 , 30 , 10 , -20 , -20 , 10 , 30 , 40 , 40 , 30 , 10 , -20 , -30 , 0 , 20 , 30 , 30 , 20 , 0 , -30 , -40 , -20 , 0 , 10 , 10 , 0 , -20 , -40 , -50 , -40 , -30 , -20 , -20 , -30 , -40 , -50 };
51- inline Value eg_knight_table[64 ] = { -50 , -40 , -20 , -20 , -20 , -20 , -40 , -50 , -40 , -10 , 5 , 10 , 10 , 5 , -10 , -40 , -30 , 10 , 20 , 25 , 25 , 20 , 10 , -30 , -30 , 15 , 25 , 30 , 30 , 25 , 15 , -30 , -30 , 15 , 25 , 30 , 30 , 25 , 15 , -30 , -30 , 10 , 20 , 25 , 25 , 20 , 10 , -30 , -40 , -10 , 5 , 10 , 10 , 5 , -10 , -40 , -50 , -40 , -20 , -20 , -20 , -20 , -40 , -50 };
52- inline Value eg_pawn_table[56 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -5 , -2 , 2 , 5 , 5 , 2 , -2 , -5 , -10 , -5 , 10 , 20 , 20 , 10 , -5 , -10 , -20 , -10 , 30 , 55 , 55 , 30 , -10 , -20 , -35 , -20 , 70 , 110 , 110 , 70 , -20 , -35 , -60 , -45 , 120 , 180 , 180 , 120 , -45 , -60 };
53- inline Value eg_queen_table[64 ] = { -10 , -5 , -5 , 0 , 0 , -5 , -5 , -10 , -5 , 0 , 5 , 5 , 5 , 5 , 0 , -5 , -5 , 5 , 10 , 15 , 15 , 10 , 5 , -5 , -5 , 10 , 15 , 20 , 20 , 15 , 10 , -5 , -5 , 10 , 15 , 20 , 20 , 15 , 10 , -5 , -5 , 5 , 10 , 15 , 15 , 10 , 5 , -5 , -5 , 0 , 5 , 5 , 5 , 5 , 0 , -5 , -10 , -5 , -5 , 0 , 0 , -5 , -5 , -10 };
54- inline Value eg_rook_table[64 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 5 , 10 , 15 , 15 , 10 , 5 , 0 , 0 , 5 , 10 , 15 , 15 , 10 , 5 , 0 , 0 , 5 , 10 , 15 , 15 , 10 , 5 , 0 , 10 , 15 , 20 , 25 , 25 , 20 , 15 , 10 , 10 , 15 , 20 , 25 , 25 , 20 , 15 , 10 , 20 , 25 , 30 , 35 , 35 , 30 , 25 , 20 , 0 , 0 , 0 , 5 , 5 , 0 , 0 , 0 };
55- inline Value kingProtector[6 ][2 ] = { { 0 , 0 }, { 8 , 12 }, { 5 , 10 }, { 10 , 15 }, { 3 , 5 }, { 0 , 0 } };
48+ inline Value egMobilityCnt[7 ][8 ] = {
49+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
50+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
51+ { -20 , -12 , -4 , 5 , 14 , 23 , 32 , 40 },
52+ { -25 , -15 , -5 , 5 , 16 , 27 , 38 , 50 },
53+ { -30 , -18 , -6 , 6 , 18 , 30 , 42 , 55 },
54+ { -35 , -22 , -8 , 8 , 22 , 35 , 48 , 60 },
55+ { -15 , -8 , -2 , 4 , 10 , 16 , 22 , 28 }
56+ };
57+ inline Value eg_bishop_table[64 ] = { -10 , -5 , -5 , -5 , -5 , -5 , -5 , -10 , -5 , 5 , 10 , 10 , 10 , 10 , 5 , -5 , -5 , 10 , 15 , 20 , 20 , 15 ,
58+ 10 , -5 , -5 , 10 , 20 , 25 , 25 , 20 , 10 , -5 , -5 , 10 , 20 , 25 , 25 , 20 , 10 , -5 , -5 , 10 , 15 , 20 ,
59+ 20 , 15 , 10 , -5 , -5 , 5 , 10 , 10 , 10 , 10 , 5 , -5 , -10 , -5 , -5 , -5 , -5 , -5 , -5 , -10 };
60+ inline Value eg_king_table[64 ] = { -50 , -40 , -30 , -20 , -20 , -30 , -40 , -50 , -40 , -20 , 0 , 10 , 10 , 0 , -20 , -40 ,
61+ -30 , 0 , 20 , 30 , 30 , 20 , 0 , -30 , -20 , 10 , 30 , 40 , 40 , 30 , 10 , -20 ,
62+ -20 , 10 , 30 , 40 , 40 , 30 , 10 , -20 , -30 , 0 , 20 , 30 , 30 , 20 , 0 , -30 ,
63+ -40 , -20 , 0 , 10 , 10 , 0 , -20 , -40 , -50 , -40 , -30 , -20 , -20 , -30 , -40 , -50 };
64+ inline Value eg_knight_table[64 ] = { -50 , -40 , -20 , -20 , -20 , -20 , -40 , -50 , -40 , -10 , 5 , 10 , 10 , 5 , -10 , -40 ,
65+ -30 , 10 , 20 , 25 , 25 , 20 , 10 , -30 , -30 , 15 , 25 , 30 , 30 , 25 , 15 , -30 ,
66+ -30 , 15 , 25 , 30 , 30 , 25 , 15 , -30 , -30 , 10 , 20 , 25 , 25 , 20 , 10 , -30 ,
67+ -40 , -10 , 5 , 10 , 10 , 5 , -10 , -40 , -50 , -40 , -20 , -20 , -20 , -20 , -40 , -50 };
68+ inline Value eg_pawn_table[56 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -5 , -2 , 2 ,
69+ 5 , 5 , 2 , -2 , -5 , -10 , -5 , 10 , 20 , 20 , 10 , -5 , -10 , -20 , -10 , 30 , 55 , 55 , 30 ,
70+ -10 , -20 , -35 , -20 , 70 , 110 , 110 , 70 , -20 , -35 , -60 , -45 , 120 , 180 , 180 , 120 , -45 , -60 };
71+ inline Value eg_queen_table[64 ] = { -10 , -5 , -5 , 0 , 0 , -5 , -5 , -10 , -5 , 0 , 5 , 5 , 5 , 5 , 0 , -5 , -5 , 5 , 10 , 15 , 15 , 10 ,
72+ 5 , -5 , -5 , 10 , 15 , 20 , 20 , 15 , 10 , -5 , -5 , 10 , 15 , 20 , 20 , 15 , 10 , -5 , -5 , 5 , 10 , 15 ,
73+ 15 , 10 , 5 , -5 , -5 , 0 , 5 , 5 , 5 , 5 , 0 , -5 , -10 , -5 , -5 , 0 , 0 , -5 , -5 , -10 };
74+ inline Value eg_rook_table[64 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 5 , 10 , 15 , 15 , 10 , 5 , 0 , 0 , 5 , 10 , 15 , 15 , 10 ,
75+ 5 , 0 , 0 , 5 , 10 , 15 , 15 , 10 , 5 , 0 , 10 , 15 , 20 , 25 , 25 , 20 , 15 , 10 , 10 , 15 , 20 , 25 ,
76+ 25 , 20 , 15 , 10 , 20 , 25 , 30 , 35 , 35 , 30 , 25 , 20 , 0 , 0 , 0 , 5 , 5 , 0 , 0 , 0 };
77+ inline Value kingProtector[6 ][2 ] = {
78+ { 0 , 0 },
79+ { 8 , 12 },
80+ { 5 , 10 },
81+ { 10 , 15 },
82+ { 3 , 5 },
83+ { 0 , 0 }
84+ };
5685inline Value kingTropismEg[7 ] = { 0 , 0 , 2 , 2 , 3 , 4 , 0 };
5786inline Value kingTropismMg[7 ] = { 0 , 0 , -20 , -5 , -11 , 5 , 0 };
58- inline Value mgMobilityCnt[7 ][8 ] = { { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { -50 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { -15 , -8 , -2 , 4 , 10 , 16 , 22 , 28 }, { -20 , -12 , -4 , 5 , 14 , 23 , 32 , 40 }, { -25 , -15 , -5 , 5 , 15 , 25 , 35 , 45 }, { -30 , -18 , -6 , 6 , 18 , 30 , 42 , 55 }, { -10 , -5 , 0 , 5 , 10 , 15 , 20 , 25 } };
59- inline Value mg_bishop_table[64 ] = { -20 , -10 , -10 , -10 , -10 , -10 , -10 , -20 , -10 , 0 , 0 , 0 , 0 , 0 , 0 , -10 , -10 , 0 , 10 , 10 , 10 , 10 , 0 , -10 , -10 , 0 , 5 , 10 , 10 , 5 , 0 , -10 , -10 , 5 , 5 , 10 , 10 , 5 , 5 , -10 , -10 , 0 , 10 , 10 , 10 , 10 , 0 , -10 , -10 , 0 , 0 , 0 , 0 , 0 , 0 , -10 , -20 , -10 , -10 , -10 , -10 , -10 , -10 , -20 };
60- inline Value mg_king_table[64 ] = { -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 , -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 , -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 , -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 , -20 , -30 , -30 , -40 , -40 , -30 , -30 , -20 , -10 , -20 , -20 , -20 , -20 , -20 , -20 , -10 , 20 , 20 , 0 , 0 , 0 , 0 , 20 , 20 , 20 , 30 , 10 , 0 , 0 , 10 , 30 , 20 };
61- inline Value mg_knight_table[64 ] = { -50 , -40 , -30 , -30 , -30 , -30 , -40 , -50 , -40 , -20 , 0 , 5 , 5 , 0 , -20 , -40 , -30 , 5 , 10 , 15 , 15 , 10 , 5 , -30 , -30 , 0 , 15 , 20 , 20 , 15 , 0 , -30 , -30 , 5 , 15 , 20 , 20 , 15 , 5 , -30 , -30 , 0 , 10 , 15 , 15 , 10 , 0 , -30 , -40 , -20 , 0 , 0 , 0 , 0 , -20 , -40 , -50 , -40 , -30 , -30 , -30 , -30 , -40 , -50 };
62- inline Value mg_pawn_table[56 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -5 , -2 , 2 , 5 , 5 , 2 , -2 , -5 , -10 , -5 , 10 , 20 , 20 , 10 , -5 , -10 , -20 , -10 , 25 , 40 , 40 , 25 , -10 , -20 , -35 , -20 , 50 , 80 , 80 , 50 , -20 , -35 , -55 , -40 , 90 , 130 , 130 , 90 , -40 , -55 };
63- inline Value mg_queen_table[64 ] = { -20 , -10 , -10 , -5 , -5 , -10 , -10 , -20 , -10 , 0 , 5 , 0 , 0 , 0 , 0 , -10 , -10 , 5 , 5 , 5 , 5 , 5 , 0 , -10 , 0 , 0 , 5 , 5 , 5 , 5 , 0 , -5 , -5 , 0 , 5 , 5 , 5 , 5 , 0 , -5 , -10 , 0 , 5 , 5 , 5 , 5 , 0 , -10 , -10 , 0 , 0 , 0 , 0 , 0 , 0 , -10 , -20 , -10 , -10 , -5 , -5 , -10 , -10 , -20 };
64- inline Value mg_rook_table[64 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 5 , 5 , 5 , 5 , 5 , 5 , 0 , 0 , 5 , 5 , 5 , 5 , 5 , 5 , 0 , 0 , 5 , 5 , 5 , 5 , 5 , 5 , 0 , 0 , 5 , 5 , 5 , 5 , 5 , 5 , 0 , 0 , 5 , 5 , 5 , 5 , 5 , 5 , 0 , 10 , 15 , 15 , 15 , 15 , 15 , 15 , 10 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 };
87+ inline Value mgMobilityCnt[7 ][8 ] = {
88+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
89+ { -50 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
90+ { -15 , -8 , -2 , 4 , 10 , 16 , 22 , 28 },
91+ { -20 , -12 , -4 , 5 , 14 , 23 , 32 , 40 },
92+ { -25 , -15 , -5 , 5 , 15 , 25 , 35 , 45 },
93+ { -30 , -18 , -6 , 6 , 18 , 30 , 42 , 55 },
94+ { -10 , -5 , 0 , 5 , 10 , 15 , 20 , 25 }
95+ };
96+ inline Value mg_bishop_table[64 ] = { -20 , -10 , -10 , -10 , -10 , -10 , -10 , -20 , -10 , 0 , 0 , 0 , 0 , 0 , 0 , -10 ,
97+ -10 , 0 , 10 , 10 , 10 , 10 , 0 , -10 , -10 , 0 , 5 , 10 , 10 , 5 , 0 , -10 ,
98+ -10 , 5 , 5 , 10 , 10 , 5 , 5 , -10 , -10 , 0 , 10 , 10 , 10 , 10 , 0 , -10 ,
99+ -10 , 0 , 0 , 0 , 0 , 0 , 0 , -10 , -20 , -10 , -10 , -10 , -10 , -10 , -10 , -20 };
100+ inline Value mg_king_table[64 ] = { -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 , -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 ,
101+ -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 , -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 ,
102+ -20 , -30 , -30 , -40 , -40 , -30 , -30 , -20 , -10 , -20 , -20 , -20 , -20 , -20 , -20 , -10 ,
103+ 20 , 20 , 0 , 0 , 0 , 0 , 20 , 20 , 20 , 30 , 10 , 0 , 0 , 10 , 30 , 20 };
104+ inline Value mg_knight_table[64 ] = { -50 , -40 , -30 , -30 , -30 , -30 , -40 , -50 , -40 , -20 , 0 , 5 , 5 , 0 , -20 , -40 ,
105+ -30 , 5 , 10 , 15 , 15 , 10 , 5 , -30 , -30 , 0 , 15 , 20 , 20 , 15 , 0 , -30 ,
106+ -30 , 5 , 15 , 20 , 20 , 15 , 5 , -30 , -30 , 0 , 10 , 15 , 15 , 10 , 0 , -30 ,
107+ -40 , -20 , 0 , 0 , 0 , 0 , -20 , -40 , -50 , -40 , -30 , -30 , -30 , -30 , -40 , -50 };
108+ inline Value mg_pawn_table[56 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , -5 , -2 , 2 ,
109+ 5 , 5 , 2 , -2 , -5 , -10 , -5 , 10 , 20 , 20 , 10 , -5 , -10 , -20 , -10 , 25 , 40 , 40 , 25 ,
110+ -10 , -20 , -35 , -20 , 50 , 80 , 80 , 50 , -20 , -35 , -55 , -40 , 90 , 130 , 130 , 90 , -40 , -55 };
111+ inline Value mg_queen_table[64 ] = { -20 , -10 , -10 , -5 , -5 , -10 , -10 , -20 , -10 , 0 , 5 , 0 , 0 , 0 , 0 , -10 ,
112+ -10 , 5 , 5 , 5 , 5 , 5 , 0 , -10 , 0 , 0 , 5 , 5 , 5 , 5 , 0 , -5 ,
113+ -5 , 0 , 5 , 5 , 5 , 5 , 0 , -5 , -10 , 0 , 5 , 5 , 5 , 5 , 0 , -10 ,
114+ -10 , 0 , 0 , 0 , 0 , 0 , 0 , -10 , -20 , -10 , -10 , -5 , -5 , -10 , -10 , -20 };
115+ inline Value mg_rook_table[64 ] = { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 5 , 5 , 5 , 5 , 5 , 5 , 0 , 0 , 5 , 5 , 5 , 5 , 5 ,
116+ 5 , 0 , 0 , 5 , 5 , 5 , 5 , 5 , 5 , 0 , 0 , 5 , 5 , 5 , 5 , 5 , 5 , 0 , 0 , 5 , 5 , 5 ,
117+ 5 , 5 , 5 , 0 , 10 , 15 , 15 , 15 , 15 , 15 , 15 , 10 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 };
65118inline Value outpostBonusBishop[2 ] = { 10 , 25 };
66119inline Value outpostBonusKnight[2 ] = { 15 , 30 };
67120inline Value passedBonusEg[7 ] = { 0 , 10 , 30 , 70 , 140 , 230 , 350 };
68121inline Value passedBonusMg[7 ] = { 0 , 5 , 15 , 40 , 80 , 140 , 200 };
69- inline Value threatByMinor[7 ][2 ] = { { 0 , 0 }, { 0 , 0 }, { 15 , 25 }, { 15 , 25 }, { 25 , 35 }, { 35 , 50 }, { 0 , 0 } };
70- inline Value threatByRook[7 ][2 ] = { { 0 , 0 }, { 0 , 0 }, { 10 , 15 }, { 10 , 15 }, { 20 , 25 }, { 25 , 35 }, { 0 , 0 } };
122+ inline Value threatByMinor[7 ][2 ] = {
123+ { 0 , 0 },
124+ { 0 , 0 },
125+ { 15 , 25 },
126+ { 15 , 25 },
127+ { 25 , 35 },
128+ { 35 , 50 },
129+ { 0 , 0 }
130+ };
131+ inline Value threatByRook[7 ][2 ] = {
132+ { 0 , 0 },
133+ { 0 , 0 },
134+ { 10 , 15 },
135+ { 10 , 15 },
136+ { 20 , 25 },
137+ { 25 , 35 },
138+ { 0 , 0 }
139+ };
71140} // namespace engine::eval
72141#endif
0 commit comments