|
1 | | -#ifndef WEIGHTS_H |
2 | | -#define WEIGHTS_H |
3 | | -#include "eval.h" |
4 | | -namespace 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; |
11 | | -inline Value fianchettoBonus = 20; |
12 | | -inline Value trappedBishopPenalty = 60; |
13 | | -inline Value centerWeight = 5; |
14 | | -inline Value mopUpKingDistWeight = 5; |
15 | | -inline Value mopUpEdgeDistWeight = 10; |
16 | | -inline Value spaceWeight = 2; |
17 | | -inline Value bishopPairMg = 25; |
18 | | -inline Value bishopPairEg = 50; |
19 | | -inline Value rookOpenFileMg = 25; |
20 | | -inline Value rookOpenFileEg = 20; |
21 | | -inline Value rookSemiOpenFileMg = 15; |
22 | | -inline Value rookSemiOpenFileEg = 12; |
23 | | -inline Value doubledPawnMg = 10; |
24 | | -inline Value doubledPawnEg = 20; |
25 | | -inline Value isolatedPawnMg = 15; |
26 | | -inline Value isolatedPawnEg = 25; |
27 | | -inline Value kingShelterBaseMg = 20; |
28 | | -inline Value kingShelterBaseEg = 5; |
29 | | -inline Value kingShelterDecayMg = 4; |
30 | | -inline Value kingShelterDecayEg = 1; |
31 | | -inline Value kqkDistWeight = 15; |
32 | | -inline Value kqkEdgeWeight = 15; |
33 | | -inline Value krkDistWeight = 5; |
34 | | -inline Value krkEdgeWeight = 10; |
35 | | -inline Value kpkWeight = 15; |
36 | | -inline Value mgMobilityCnt[7][8] = { |
37 | | - { 0, 0, 0, 0, 0, 0, 0, 0 }, |
38 | | - { 0, 0, 0, 0, 0, 0, 0, 0 }, |
39 | | - { -15, -8, -2, 4, 10, 16, 22, 28 }, |
40 | | - { -20, -12, -4, 5, 14, 23, 32, 40 }, |
41 | | - { -25, -15, -5, 5, 15, 25, 35, 45 }, |
42 | | - { -30, -18, -6, 6, 18, 30, 42, 55 }, |
43 | | - { -10, -5, 0, 5, 10, 15, 20, 25 } |
44 | | -}; |
45 | | -inline Value egMobilityCnt[7][8] = { |
46 | | - { 0, 0, 0, 0, 0, 0, 0, 0 }, |
47 | | - { 0, 0, 0, 0, 0, 0, 0, 0 }, |
48 | | - { -20, -12, -4, 5, 14, 23, 32, 40 }, |
49 | | - { -25, -15, -5, 5, 16, 27, 38, 50 }, |
50 | | - { -30, -18, -6, 6, 18, 30, 42, 55 }, |
51 | | - { -35, -22, -8, 8, 22, 35, 48, 60 }, |
52 | | - { -15, -8, -2, 4, 10, 16, 22, 28 } |
53 | | -}; |
54 | | -inline Value kingTropismMg[7] = { 0, 0, 3, 2, 2, 5, 0 }; |
55 | | -inline Value kingTropismEg[7] = { 0, 0, 2, 2, 3, 4, 0 }; |
56 | | -inline Value passedBonusMg[7] = { 0, 5, 15, 40, 80, 140, 200 }; |
57 | | -inline Value passedBonusEg[7] = { 0, 10, 30, 70, 140, 230, 350 }; |
58 | | -inline Value mg_knight_table[64] = { -50, -40, -30, -30, -30, -30, -40, -50, -40, -20, 0, 5, 5, 0, -20, -40, |
59 | | - -30, 5, 10, 15, 15, 10, 5, -30, -30, 0, 15, 20, 20, 15, 0, -30, |
60 | | - -30, 5, 15, 20, 20, 15, 5, -30, -30, 0, 10, 15, 15, 10, 0, -30, |
61 | | - -40, -20, 0, 0, 0, 0, -20, -40, -50, -40, -30, -30, -30, -30, -40, -50 }; |
62 | | -inline Value mg_bishop_table[64] = { -20, -10, -10, -10, -10, -10, -10, -20, -10, 0, 0, 0, 0, 0, 0, -10, |
63 | | - -10, 0, 10, 10, 10, 10, 0, -10, -10, 0, 5, 10, 10, 5, 0, -10, |
64 | | - -10, 5, 5, 10, 10, 5, 5, -10, -10, 0, 10, 10, 10, 10, 0, -10, |
65 | | - -10, 0, 0, 0, 0, 0, 0, -10, -20, -10, -10, -10, -10, -10, -10, -20 }; |
66 | | -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, |
67 | | - 5, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 5, 0, 0, 5, 5, 5, |
68 | | - 5, 5, 5, 0, 10, 15, 15, 15, 15, 15, 15, 10, 0, 0, 0, 0, 0, 0, 0, 0 }; |
69 | | -inline Value mg_king_table[64] = { -30, -40, -40, -50, -50, -40, -40, -30, -30, -40, -40, -50, -50, -40, -40, -30, |
70 | | - -30, -40, -40, -50, -50, -40, -40, -30, -30, -40, -40, -50, -50, -40, -40, -30, |
71 | | - -20, -30, -30, -40, -40, -30, -30, -20, -10, -20, -20, -20, -20, -20, -20, -10, |
72 | | - 20, 20, 0, 0, 0, 0, 20, 20, 20, 30, 10, 0, 0, 10, 30, 20 }; |
73 | | -inline Value mg_queen_table[64] = { -20, -10, -10, -5, -5, -10, -10, -20, -10, 0, 5, 0, 0, 0, 0, -10, |
74 | | - -10, 5, 5, 5, 5, 5, 0, -10, 0, 0, 5, 5, 5, 5, 0, -5, |
75 | | - -5, 0, 5, 5, 5, 5, 0, -5, -10, 0, 5, 5, 5, 5, 0, -10, |
76 | | - -10, 0, 0, 0, 0, 0, 0, -10, -20, -10, -10, -5, -5, -10, -10, -20 }; |
77 | | -inline Value eg_knight_table[64] = { -50, -40, -20, -20, -20, -20, -40, -50, -40, -10, 5, 10, 10, 5, -10, -40, |
78 | | - -30, 10, 20, 25, 25, 20, 10, -30, -30, 15, 25, 30, 30, 25, 15, -30, |
79 | | - -30, 15, 25, 30, 30, 25, 15, -30, -30, 10, 20, 25, 25, 20, 10, -30, |
80 | | - -40, -10, 5, 10, 10, 5, -10, -40, -50, -40, -20, -20, -20, -20, -40, -50 }; |
81 | | -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, |
82 | | - 10, -5, -5, 10, 20, 25, 25, 20, 10, -5, -5, 10, 20, 25, 25, 20, 10, -5, -5, 10, 15, 20, |
83 | | - 20, 15, 10, -5, -5, 5, 10, 10, 10, 10, 5, -5, -10, -5, -5, -5, -5, -5, -5, -10 }; |
84 | | -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, |
85 | | - 5, 0, 0, 5, 10, 15, 15, 10, 5, 0, 10, 15, 20, 25, 25, 20, 15, 10, 10, 15, 20, 25, |
86 | | - 25, 20, 15, 10, 20, 25, 30, 35, 35, 30, 25, 20, 0, 0, 0, 5, 5, 0, 0, 0 }; |
87 | | -inline Value eg_king_table[64] = { -50, -40, -30, -20, -20, -30, -40, -50, -40, -20, 0, 10, 10, 0, -20, -40, |
88 | | - -30, 0, 20, 30, 30, 20, 0, -30, -20, 10, 30, 40, 40, 30, 10, -20, |
89 | | - -20, 10, 30, 40, 40, 30, 10, -20, -30, 0, 20, 30, 30, 20, 0, -30, |
90 | | - -40, -20, 0, 10, 10, 0, -20, -40, -50, -40, -30, -20, -20, -30, -40, -50 }; |
91 | | -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, |
92 | | - 5, -5, -5, 10, 15, 20, 20, 15, 10, -5, -5, 10, 15, 20, 20, 15, 10, -5, -5, 5, 10, 15, |
93 | | - 15, 10, 5, -5, -5, 0, 5, 5, 5, 5, 0, -5, -10, -5, -5, 0, 0, -5, -5, -10 }; |
94 | | -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, |
95 | | - 5, 5, 2, -2, -5, -10, -5, 10, 20, 20, 10, -5, -10, -20, -10, 25, 40, 40, 25, |
96 | | - -10, -20, -35, -20, 50, 80, 80, 50, -20, -35, -55, -40, 90, 130, 130, 90, -40, -55 }; |
97 | | -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, |
98 | | - 5, 5, 2, -2, -5, -10, -5, 10, 20, 20, 10, -5, -10, -20, -10, 30, 55, 55, 30, |
99 | | - -10, -20, -35, -20, 70, 110, 110, 70, -20, -35, -60, -45, 120, 180, 180, 120, -45, -60 }; |
100 | | -inline Value developedMg = 8; |
101 | | -inline Value developedEg = 4; |
102 | | -inline Value outpostBonusKnight[2] = { 15, 30 }; |
103 | | -inline Value outpostBonusBishop[2] = { 10, 25 }; |
104 | | -inline Value kingProtector[6][2] = { |
105 | | - { 0, 0 }, |
106 | | - { 8, 12 }, |
107 | | - { 5, 10 }, |
108 | | - { 10, 15 }, |
109 | | - { 3, 5 }, |
110 | | - { 0, 0 } |
111 | | -}; |
112 | | -inline Value threatByMinor[7][2] = { |
113 | | - { 0, 0 }, |
114 | | - { 0, 0 }, |
115 | | - { 15, 25 }, |
116 | | - { 15, 25 }, |
117 | | - { 25, 35 }, |
118 | | - { 35, 50 } |
119 | | -}; |
120 | | -inline Value threatByRook[7][2] = { |
121 | | - { 0, 0 }, |
122 | | - { 0, 0 }, |
123 | | - { 10, 15 }, |
124 | | - { 10, 15 }, |
125 | | - { 20, 25 }, |
126 | | - { 25, 35 } |
127 | | -}; |
128 | | -inline Value hangingScore = 70; |
129 | | -inline Value overloadScore = 25; |
130 | | -inline Value threatByRankScore = 10; |
131 | | -inline Value minorImWt = 30; |
132 | | -inline Value bishopImWt = 15; |
133 | | -inline Value rookImWt = 20; |
134 | | -inline Value queenImWt = 50; |
135 | | -inline Value rammedPawnPenalty = 10; |
136 | | -inline Value rookOnSeventhBonus = 30; |
137 | | -inline Value earlyQueenPenalty = 5; |
138 | | -} // namespace engine::eval |
139 | | -#endif |
| 1 | +#ifndef WEIGHTS_H |
| 2 | +#define WEIGHTS_H |
| 3 | +#include "eval.h" |
| 4 | +namespace engine::eval { |
| 5 | +inline Value tempo = 20; |
| 6 | +inline Value PawnValue = 80; |
| 7 | +inline Value KnightValue = 320; |
| 8 | +inline Value BishopValue = 330; |
| 9 | +inline Value RookValue = 500; |
| 10 | +inline Value QueenValue = 900; |
| 11 | +inline Value fianchettoBonus = 20; |
| 12 | +inline Value trappedBishopPenalty = 60; |
| 13 | +inline Value centerWeight = 5; |
| 14 | +inline Value mopUpKingDistWeight = 5; |
| 15 | +inline Value mopUpEdgeDistWeight = 10; |
| 16 | +inline Value spaceWeight = 2; |
| 17 | +inline Value bishopPairMg = 25; |
| 18 | +inline Value bishopPairEg = 50; |
| 19 | +inline Value developedMg = 8; |
| 20 | +inline Value developedEg = 4; |
| 21 | +inline Value rookOpenFileMg = 25; |
| 22 | +inline Value rookOpenFileEg = 20; |
| 23 | +inline Value rookSemiOpenFileMg = 15; |
| 24 | +inline Value rookSemiOpenFileEg = 12; |
| 25 | +inline Value doubledPawnMg = 10; |
| 26 | +inline Value doubledPawnEg = 20; |
| 27 | +inline Value isolatedPawnMg = 15; |
| 28 | +inline Value isolatedPawnEg = 25; |
| 29 | +inline Value kingShelterBaseMg = 20; |
| 30 | +inline Value kingShelterBaseEg = 5; |
| 31 | +inline Value kingShelterDecayMg = 4; |
| 32 | +inline Value kingShelterDecayEg = 1; |
| 33 | +inline Value kqkDistWeight = 15; |
| 34 | +inline Value kqkEdgeWeight = 15; |
| 35 | +inline Value krkDistWeight = 5; |
| 36 | +inline Value krkEdgeWeight = 10; |
| 37 | +inline Value kpkWeight = 15; |
| 38 | +inline Value hangingScore = 70; |
| 39 | +inline Value overloadScore = 25; |
| 40 | +inline Value threatByRankScore = 60; |
| 41 | +inline Value minorImWt = 30; |
| 42 | +inline Value bishopImWt = 15; |
| 43 | +inline Value rookImWt = 20; |
| 44 | +inline Value queenImWt = 50; |
| 45 | +inline Value rammedPawnPenalty = 10; |
| 46 | +inline Value rookOnSeventhBonus = 30; |
| 47 | +inline 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 } }; |
| 56 | +inline Value kingTropismEg[7] = { 0, 0, 2, 2, 3, 4, 0 }; |
| 57 | +inline 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 }; |
| 65 | +inline Value outpostBonusBishop[2] = { 10, 25 }; |
| 66 | +inline Value outpostBonusKnight[2] = { 15, 30 }; |
| 67 | +inline Value passedBonusEg[7] = { 0, 10, 30, 70, 140, 230, 350 }; |
| 68 | +inline 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 } }; |
| 71 | +} // namespace engine::eval |
| 72 | +#endif |
0 commit comments