22#define WEIGHTS_H
33#include " eval.h"
44namespace engine ::eval {
5- inline Value tempo = 20 ;
6- inline Value PawnValue = 100 ;
7- inline Value KnightValue = 320 ;
8- inline Value BishopValue = 330 ;
9- inline Value RookValue = 500 ;
10- inline Value QueenValue = 900 ;
5+ inline Value tempo = 28 ;
6+ inline Value PawnValueMG = 124 ;
7+ inline Value KnightValueMG = 781 ;
8+ inline Value BishopValueMG = 825 ;
9+ inline Value RookValueMG = 1276 ;
10+ inline Value QueenValueMG = 2538 ;
11+ inline Value PawnValueEG = 206 ;
12+ inline Value KnightValueEG = 854 ;
13+ inline Value BishopValueEG = 915 ;
14+ inline Value RookValueEG = 1380 ;
15+ inline Value QueenValueEG = 2682 ;
1116inline Value fianchettoBonus = 20 ;
1217inline Value trappedBishopPenalty = 60 ;
1318inline Value centerWeight = 5 ;
@@ -16,8 +21,6 @@ inline Value mopUpEdgeDistWeight = 10;
1621inline Value spaceWeight = 2 ;
1722inline Value bishopPairMg = 25 ;
1823inline Value bishopPairEg = 50 ;
19- inline Value developedMg = 8 ;
20- inline Value developedEg = 4 ;
2124inline Value rookOpenFileMg = 25 ;
2225inline Value rookOpenFileEg = 20 ;
2326inline Value rookSemiOpenFileMg = 15 ;
@@ -35,6 +38,98 @@ inline Value kqkEdgeWeight = 15;
3538inline Value krkDistWeight = 5 ;
3639inline Value krkEdgeWeight = 10 ;
3740inline Value kpkWeight = 15 ;
41+ inline Value mgMobilityCnt[7 ][8 ] = {
42+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
43+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
44+ { -15 , -8 , -2 , 4 , 10 , 16 , 22 , 28 },
45+ { -20 , -12 , -4 , 5 , 14 , 23 , 32 , 40 },
46+ { -25 , -15 , -5 , 5 , 15 , 25 , 35 , 45 },
47+ { -30 , -18 , -6 , 6 , 18 , 30 , 42 , 55 },
48+ { -10 , -5 , 0 , 5 , 10 , 15 , 20 , 25 }
49+ };
50+ inline Value egMobilityCnt[7 ][8 ] = {
51+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
52+ { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 },
53+ { -20 , -12 , -4 , 5 , 14 , 23 , 32 , 40 },
54+ { -25 , -15 , -5 , 5 , 16 , 27 , 38 , 50 },
55+ { -30 , -18 , -6 , 6 , 18 , 30 , 42 , 55 },
56+ { -35 , -22 , -8 , 8 , 22 , 35 , 48 , 60 },
57+ { -15 , -8 , -2 , 4 , 10 , 16 , 22 , 28 }
58+ };
59+ inline Value kingTropismMg[7 ] = { 0 , 0 , 3 , 2 , 2 , 5 , 0 };
60+ inline Value kingTropismEg[7 ] = { 0 , 0 , 2 , 2 , 3 , 4 , 0 };
61+ inline Value passedBonusMg[7 ] = { 0 , 5 , 15 , 40 , 80 , 140 , 200 };
62+ inline Value passedBonusEg[7 ] = { 0 , 10 , 30 , 70 , 140 , 230 , 350 };
63+ inline Value mg_knight_table[64 ] = { -50 , -40 , -30 , -30 , -30 , -30 , -40 , -50 , -40 , -20 , 0 , 5 , 5 , 0 , -20 , -40 ,
64+ -30 , 5 , 10 , 15 , 15 , 10 , 5 , -30 , -30 , 0 , 15 , 20 , 20 , 15 , 0 , -30 ,
65+ -30 , 5 , 15 , 20 , 20 , 15 , 5 , -30 , -30 , 0 , 10 , 15 , 15 , 10 , 0 , -30 ,
66+ -40 , -20 , 0 , 0 , 0 , 0 , -20 , -40 , -50 , -40 , -30 , -30 , -30 , -30 , -40 , -50 };
67+ inline Value mg_bishop_table[64 ] = { -20 , -10 , -10 , -10 , -10 , -10 , -10 , -20 , -10 , 0 , 0 , 0 , 0 , 0 , 0 , -10 ,
68+ -10 , 0 , 10 , 10 , 10 , 10 , 0 , -10 , -10 , 0 , 5 , 10 , 10 , 5 , 0 , -10 ,
69+ -10 , 5 , 5 , 10 , 10 , 5 , 5 , -10 , -10 , 0 , 10 , 10 , 10 , 10 , 0 , -10 ,
70+ -10 , 0 , 0 , 0 , 0 , 0 , 0 , -10 , -20 , -10 , -10 , -10 , -10 , -10 , -10 , -20 };
71+ 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 ,
72+ 5 , 0 , 0 , 5 , 5 , 5 , 5 , 5 , 5 , 0 , 0 , 5 , 5 , 5 , 5 , 5 , 5 , 0 , 0 , 5 , 5 , 5 ,
73+ 5 , 5 , 5 , 0 , 10 , 15 , 15 , 15 , 15 , 15 , 15 , 10 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 };
74+ inline Value mg_king_table[64 ] = { -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 , -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 ,
75+ -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 , -30 , -40 , -40 , -50 , -50 , -40 , -40 , -30 ,
76+ -20 , -30 , -30 , -40 , -40 , -30 , -30 , -20 , -10 , -20 , -20 , -20 , -20 , -20 , -20 , -10 ,
77+ 20 , 20 , 0 , 0 , 0 , 0 , 20 , 20 , 20 , 30 , 10 , 0 , 0 , 10 , 30 , 20 };
78+ inline Value mg_queen_table[64 ] = { -20 , -10 , -10 , -5 , -5 , -10 , -10 , -20 , -10 , 0 , 5 , 0 , 0 , 0 , 0 , -10 ,
79+ -10 , 5 , 5 , 5 , 5 , 5 , 0 , -10 , 0 , 0 , 5 , 5 , 5 , 5 , 0 , -5 ,
80+ -5 , 0 , 5 , 5 , 5 , 5 , 0 , -5 , -10 , 0 , 5 , 5 , 5 , 5 , 0 , -10 ,
81+ -10 , 0 , 0 , 0 , 0 , 0 , 0 , -10 , -20 , -10 , -10 , -5 , -5 , -10 , -10 , -20 };
82+ inline Value eg_knight_table[64 ] = { -50 , -40 , -20 , -20 , -20 , -20 , -40 , -50 , -40 , -10 , 5 , 10 , 10 , 5 , -10 , -40 ,
83+ -30 , 10 , 20 , 25 , 25 , 20 , 10 , -30 , -30 , 15 , 25 , 30 , 30 , 25 , 15 , -30 ,
84+ -30 , 15 , 25 , 30 , 30 , 25 , 15 , -30 , -30 , 10 , 20 , 25 , 25 , 20 , 10 , -30 ,
85+ -40 , -10 , 5 , 10 , 10 , 5 , -10 , -40 , -50 , -40 , -20 , -20 , -20 , -20 , -40 , -50 };
86+ 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 ,
87+ 10 , -5 , -5 , 10 , 20 , 25 , 25 , 20 , 10 , -5 , -5 , 10 , 20 , 25 , 25 , 20 , 10 , -5 , -5 , 10 , 15 , 20 ,
88+ 20 , 15 , 10 , -5 , -5 , 5 , 10 , 10 , 10 , 10 , 5 , -5 , -10 , -5 , -5 , -5 , -5 , -5 , -5 , -10 };
89+ 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 ,
90+ 5 , 0 , 0 , 5 , 10 , 15 , 15 , 10 , 5 , 0 , 10 , 15 , 20 , 25 , 25 , 20 , 15 , 10 , 10 , 15 , 20 , 25 ,
91+ 25 , 20 , 15 , 10 , 20 , 25 , 30 , 35 , 35 , 30 , 25 , 20 , 0 , 0 , 0 , 5 , 5 , 0 , 0 , 0 };
92+ inline Value eg_king_table[64 ] = { -50 , -40 , -30 , -20 , -20 , -30 , -40 , -50 , -40 , -20 , 0 , 10 , 10 , 0 , -20 , -40 ,
93+ -30 , 0 , 20 , 30 , 30 , 20 , 0 , -30 , -20 , 10 , 30 , 40 , 40 , 30 , 10 , -20 ,
94+ -20 , 10 , 30 , 40 , 40 , 30 , 10 , -20 , -30 , 0 , 20 , 30 , 30 , 20 , 0 , -30 ,
95+ -40 , -20 , 0 , 10 , 10 , 0 , -20 , -40 , -50 , -40 , -30 , -20 , -20 , -30 , -40 , -50 };
96+ 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 ,
97+ 5 , -5 , -5 , 10 , 15 , 20 , 20 , 15 , 10 , -5 , -5 , 10 , 15 , 20 , 20 , 15 , 10 , -5 , -5 , 5 , 10 , 15 ,
98+ 15 , 10 , 5 , -5 , -5 , 0 , 5 , 5 , 5 , 5 , 0 , -5 , -10 , -5 , -5 , 0 , 0 , -5 , -5 , -10 };
99+ 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 ,
100+ 5 , 5 , 2 , -2 , -5 , -10 , -5 , 10 , 20 , 20 , 10 , -5 , -10 , -20 , -10 , 25 , 40 , 40 , 25 ,
101+ -10 , -20 , -35 , -20 , 50 , 80 , 80 , 50 , -20 , -35 , -55 , -40 , 90 , 130 , 130 , 90 , -40 , -55 };
102+ 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 ,
103+ 5 , 5 , 2 , -2 , -5 , -10 , -5 , 10 , 20 , 20 , 10 , -5 , -10 , -20 , -10 , 30 , 55 , 55 , 30 ,
104+ -10 , -20 , -35 , -20 , 70 , 110 , 110 , 70 , -20 , -35 , -60 , -45 , 120 , 180 , 180 , 120 , -45 , -60 };
105+ inline Value developedMg = 8 ;
106+ inline Value developedEg = 4 ;
107+ inline Value outpostBonusKnight[2 ] = { 15 , 30 };
108+ inline Value outpostBonusBishop[2 ] = { 10 , 25 };
109+ inline Value kingProtector[6 ][2 ] = {
110+ { 0 , 0 },
111+ { 8 , 12 },
112+ { 5 , 10 },
113+ { 10 , 15 },
114+ { 3 , 5 },
115+ { 0 , 0 }
116+ };
117+ inline Value threatByMinor[7 ][2 ] = {
118+ { 0 , 0 },
119+ { 0 , 0 },
120+ { 15 , 25 },
121+ { 15 , 25 },
122+ { 25 , 35 },
123+ { 35 , 50 }
124+ };
125+ inline Value threatByRook[7 ][2 ] = {
126+ { 0 , 0 },
127+ { 0 , 0 },
128+ { 10 , 15 },
129+ { 10 , 15 },
130+ { 20 , 25 },
131+ { 25 , 35 }
132+ };
38133inline Value hangingScore = 70 ;
39134inline Value overloadScore = 25 ;
40135inline Value threatByRankScore = 10 ;
@@ -45,28 +140,5 @@ inline Value queenImWt = 50;
45140inline Value rammedPawnPenalty = 10 ;
46141inline Value rookOnSeventhBonus = 30 ;
47142inline Value earlyQueenPenalty = 5 ;
48- inline Value mgMobilityCnt[7 ][8 ] = { { 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 }, { 0 , 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 } };
49- 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 } };
50- inline Value kingTropismMg[7 ] = { 0 , 0 , 3 , 2 , 2 , 5 , 0 };
51- inline Value kingTropismEg[7 ] = { 0 , 0 , 2 , 2 , 3 , 4 , 0 };
52- inline Value passedBonusMg[7 ] = { 0 , 5 , 15 , 40 , 80 , 140 , 200 };
53- inline Value passedBonusEg[7 ] = { 0 , 10 , 30 , 70 , 140 , 230 , 350 };
54- 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 };
55- 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 };
56- 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 };
57- 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 };
58- 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 };
59- 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 };
60- 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 };
61- 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 };
62- 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 };
63- 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 };
64- 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 };
65- 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 };
66- inline Value outpostBonusKnight[2 ] = { 15 , 30 };
67- inline Value outpostBonusBishop[2 ] = { 10 , 25 };
68- inline Value kingProtector[6 ][2 ] = { { 0 , 0 }, { 8 , 12 }, { 5 , 10 }, { 10 , 15 }, { 3 , 5 }, { 0 , 0 } };
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 } };
71143} // namespace engine::eval
72144#endif
0 commit comments