Skip to content

Commit a78e094

Browse files
committed
--------------------------------------------------
Results of new vs base (10+0.1, NULL, 64MB, UHO_Lichess_4852_v1.epd): Elo: 111.48 +/- 22.41, nElo: 152.89 +/- 28.67 LOS: 100.00 %, DrawRatio: 30.14 %, PairsRatio: 4.05 Games: 564, Wins: 256, Losses: 81, Draws: 227, Points: 369.5 (65.51 %) Ptnml(0-2): [4, 35, 85, 98, 60], WL/DD Ratio: 0.81 LLR: 2.95 (100.3%) (-2.94, 2.94) [0.00, 5.00] --------------------------------------------------
1 parent dd9c5ab commit a78e094

3 files changed

Lines changed: 178 additions & 110 deletions

File tree

Weights.h

Lines changed: 175 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -2,109 +2,181 @@
22
#define WEIGHTS_H
33
#include "eval.h"
44
namespace engine::eval {
5-
inline Value tempo = 29;
6-
inline Value PawnValue = 82;
7-
inline Value KnightValue = 284;
8-
inline Value BishopValue = 304;
9-
inline Value RookValue = 461;
10-
inline Value QueenValue = 901;
11-
inline Value fianchettoBonus = 24;
12-
inline Value trappedBishopPenalty = 26;
13-
inline Value centerWeight = 2;
14-
inline Value mopUpKingDistWeight = 4;
15-
inline Value mopUpEdgeDistWeight = 17;
16-
inline Value spaceWeight = 1;
17-
inline Value bishopPairMg = 13;
18-
inline Value bishopPairEg = 23;
19-
inline Value rookOpenFileMg = 30;
20-
inline Value rookOpenFileEg = 25;
21-
inline Value rookSemiOpenFileMg = 20;
22-
inline Value rookSemiOpenFileEg = 17;
23-
inline Value doubledPawnMg = 7;
24-
inline Value doubledPawnEg = 18;
25-
inline Value isolatedPawnMg = 4;
26-
inline Value isolatedPawnEg = 14;
27-
inline Value kingShelterBaseMg = 18;
28-
inline Value kingShelterBaseEg = 4;
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;
2929
inline Value kingShelterDecayMg = 4;
3030
inline Value kingShelterDecayEg = 1;
31-
inline Value kqkDistWeight = 17;
32-
inline Value kqkEdgeWeight = 18;
33-
inline Value krkDistWeight = 1;
34-
inline Value krkEdgeWeight = 9;
31+
inline Value kqkDistWeight = 15;
32+
inline Value kqkEdgeWeight = 15;
33+
inline Value krkDistWeight = 5;
34+
inline Value krkEdgeWeight = 10;
3535
inline Value kpkWeight = 15;
3636
inline Value mgMobilityCnt[7][8] = {
37-
{ 4, -1, 5, -1, -5, 3, 0, -3 },
38-
{ -7, -10, 7, -4, -7, 1, -5, -2 },
39-
{ -1, -8, -6, -3, 2, -2, 1, 7 },
40-
{ -10, -6, 5, -3, 3, 5, -7, 10 },
41-
{ -8, -8, -10, -1, -2, 0, 6, 8 },
42-
{ -9, -1, -7, 2, -2, -7, -5, 2 },
43-
{ -4, -5, -9, -5, -3, -6, 5, -3 }
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 }
4444
};
4545
inline Value egMobilityCnt[7][8] = {
46-
{ -8, -2, -3, 7, -4, 2, -1, -4 },
47-
{ -7, -8, -8, 3, -4, -3, 2, -9 },
48-
{ 3, -3, -10, -5, -2, -10, -4, 7 },
49-
{ -5, -7, -2, 1, -2, 7, -3, 8 },
50-
{ -4, -9, 3, 0, 0, -6, 6, 4 },
51-
{ -10, -2, -10, -2, -5, -3, 0, 0 },
52-
{ -10, 8, 7, 5, 5, 3, -1, 1 }
53-
};
54-
inline Value kingTropismMg[7] = { 13, 14, 6, -5, 5, 12, 6 };
55-
inline Value kingTropismEg[7] = { -9, -13, 3, 5, -2, 19, 4 };
56-
inline Value passedBonusMg[7] = { 0, 4, 13, 73, 131, 165, 39 };
57-
inline Value passedBonusEg[7] = { 0, 66, 59, 96, 158, 185, 22 };
58-
inline Value mg_knight_table[64] = { 1, -5, 8, -21, -11, -2, -24, -2, 23, 21, 13, 2, 4, -17, -7, 4,
59-
-5, -15, -8, 14, 19, -2, 2, -25, -13, 15, -1, -1, 5, -18, 5, 6,
60-
-1, -13, 1, 17, -24, -13, 14, 19, -10, 6, 1, 16, -13, -18, 8, 24,
61-
14, -21, -8, -21, -15, -1, -1, 8, -17, 22, -18, 6, -11, -4, -9, -7 };
62-
inline Value mg_bishop_table[64] = { 3, 21, -23, 16, 5, -20, 7, -4, 14, -15, 21, -11, 7, 2, -4, 19,
63-
-5, -4, 22, 11, 15, 25, 20, -9, -3, -4, 20, 21, 10, 11, -4, -21,
64-
9, 9, 10, 5, -3, 0, 16, 23, -1, 5, -10, -12, 9, -24, -9, -10,
65-
5, -17, -8, 5, 4, -3, 6, -4, 1, 2, 20, -4, 9, 3, -20, -22 };
66-
inline Value mg_rook_table[64] = { -10, 20, -13, 18, 12, -3, 13, -25, -11, 3, 10, -4, 7, 13, -24, 5,
67-
-3, -7, -19, -3, 4, -6, 13, 13, 11, 20, 16, -6, 14, -15, -16, -15,
68-
3, 7, 14, -10, -7, 20, -15, 10, 25, 1, 3, -14, 22, 5, 1, -12,
69-
-20, -13, 22, -9, 11, -2, -15, -11, 22, -14, -10, 5, 0, 9, -20, -13 };
70-
inline Value mg_king_table[64] = { 11, -12, -10, -19, 5, -6, -2, -10, 19, 13, -7, -3, -7, 8, -21, -24,
71-
-5, 16, 19, 2, -21, -14, 11, -16, -12, -13, -18, 14, -23, -14, 16, -5,
72-
-16, 0, -21, -12, -2, 14, -16, 17, 11, -10, 21, 14, -5, -15, 19, 13,
73-
8, -21, -13, 4, 1, 1, 16, 13, -8, 13, 6, -20, -4, 3, 8, -2 };
74-
inline Value mg_queen_table[64] = { -2, -2, 4, 11, 9, -2, 0, -5, 14, -2, -11, 14, -13, -11, -3, -21,
75-
7, -14, -4, -6, -3, -16, -4, -11, -2, 9, -16, 6, -6, -12, -14, -7,
76-
-4, -22, -12, 6, 21, -4, -6, -5, -6, -7, -4, 2, 13, 11, -8, 14,
77-
18, -5, -25, 22, -14, 18, -3, 9, -13, 21, 15, -21, 13, 7, -9, 3 };
78-
inline Value eg_knight_table[64] = { -13, 25, -3, 3, -7, 18, -21, 3, -1, 15, -13, 3, -16, 15, -5, 8,
79-
-11, -12, 22, 14, 10, 20, 9, -6, -10, 2, -13, -7, -17, 2, 18, -19,
80-
7, 12, -23, 17, -5, 17, 10, -7, -18, -2, -10, -14, 20, 15, -13, 18,
81-
9, -8, -13, 12, 20, 17, 16, 25, 18, 20, 5, 10, -10, 2, 0, 8 };
82-
inline Value eg_bishop_table[64] = { -19, -12, -9, -5, 9, -14, -11, 6, -10, -10, 6, -3, 13, -18, -6, 2,
83-
25, 4, 9, -16, -3, -9, 1, 7, 3, -20, -3, 9, -20, -3, 21, 3,
84-
-8, 10, 4, -11, -8, -18, -13, 0, 10, 17, 14, -18, 21, 11, 18, 0,
85-
-16, 4, 3, 17, -9, -16, -25, -2, -17, -5, -5, 19, 12, -3, -11, -13 };
86-
inline Value eg_rook_table[64] = { -21, -24, 12, -12, -11, 15, -17, -22, -14, -22, -18, -5, -9, -7, 23, -2,
87-
-1, 9, 18, 3, 4, -19, 20, -21, -15, -21, 9, -11, -2, 4, -8, 15,
88-
-6, 13, -6, -10, -3, 12, 16, -18, -19, -19, 23, 3, -14, -23, 3, 15,
89-
18, -6, -24, 21, 18, 3, -2, 17, 8, 13, -11, -13, 0, -16, -4, -10 };
90-
inline Value eg_king_table[64] = { -14, 17, 13, -10, -15, 3, -8, -3, 19, 19, -2, 6, -2, 7, -7, -7,
91-
21, 10, 17, -21, 0, 15, -6, -9, -7, 24, 8, 0, 17, 12, -4, -6,
92-
8, -16, 19, 0, 9, 20, 18, 12, -12, -2, -4, -14, 21, 2, -6, -5,
93-
17, -2, -3, -9, -1, -23, 7, -14, 9, 2, 22, -20, 3, 22, -10, 2 };
94-
inline Value eg_queen_table[64] = { -7, -3, 13, 11, 2, 17, 2, -19, 12, -5, -2, -11, 2, -7, 19, 2,
95-
-1, 15, 19, 1, 15, 8, -19, -6, -14, -25, -8, 22, 4, -22, -10, 20,
96-
3, -1, -3, -17, 12, -3, -4, -4, -7, 16, -18, -22, -2, -11, 4, -14,
97-
-7, -15, -8, 9, 20, 8, -2, -1, 8, 18, 20, -23, -12, -8, 6, -11 };
98-
inline Value mg_pawn_table[56] = { 0, 0, 0, 0, 0, 0, 0, 0, -16, 4, 6, -22, -16, -20, 4, -13, 2, -24, -12,
99-
-7, -3, -11, -5, 6, -15, -9, 2, -14, 2, -18, -7, -10, 1, 15, -7, -6, 22, -13,
100-
-6, 2, -16, -9, 14, -2, 23, -18, 8, 6, -2, -8, -1, -4, -10, -1, 18, -12 };
101-
inline Value eg_pawn_table[56] = { 0, 0, 0, 0, 0, 0, 0, 0, -4, 1, -2, -5, -20, 13, -17, -2, 2, 24, 12,
102-
-14, -4, 2, -17, -4, 15, -9, 8, 11, -24, -4, -14, -10, -13, -11, -6, -17, -4, 17,
103-
-14, -3, -17, -19, -10, -19, -23, 9, 13, -3, -7, -5, -9, 21, 8, -17, 7, 13 };
104-
inline Value developedMg = 10;
105-
inline Value developedEg = 5;
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] = {
59+
-50, -40, -30, -30, -30, -30, -40, -50,
60+
-40, -20, 0, 5, 5, 0, -20, -40,
61+
-30, 5, 10, 15, 15, 10, 5, -30,
62+
-30, 0, 15, 20, 20, 15, 0, -30,
63+
-30, 5, 15, 20, 20, 15, 5, -30,
64+
-30, 0, 10, 15, 15, 10, 0, -30,
65+
-40, -20, 0, 0, 0, 0, -20, -40,
66+
-50, -40, -30, -30, -30, -30, -40, -50
67+
};
68+
inline Value mg_bishop_table[64] = {
69+
-20, -10, -10, -10, -10, -10, -10, -20,
70+
-10, 0, 0, 0, 0, 0, 0, -10,
71+
-10, 0, 10, 10, 10, 10, 0, -10,
72+
-10, 0, 5, 10, 10, 5, 0, -10,
73+
-10, 5, 5, 10, 10, 5, 5, -10,
74+
-10, 0, 10, 10, 10, 10, 0, -10,
75+
-10, 0, 0, 0, 0, 0, 0, -10,
76+
-20, -10, -10, -10, -10, -10, -10, -20
77+
};
78+
inline Value mg_rook_table[64] = {
79+
0, 0, 0, 0, 0, 0, 0, 0,
80+
0, 5, 5, 5, 5, 5, 5, 0,
81+
0, 5, 5, 5, 5, 5, 5, 0,
82+
0, 5, 5, 5, 5, 5, 5, 0,
83+
0, 5, 5, 5, 5, 5, 5, 0,
84+
0, 5, 5, 5, 5, 5, 5, 0,
85+
10, 15, 15, 15, 15, 15, 15, 10,
86+
0, 0, 0, 0, 0, 0, 0, 0
87+
};
88+
inline Value mg_king_table[64] = {
89+
-30, -40, -40, -50, -50, -40, -40, -30,
90+
-30, -40, -40, -50, -50, -40, -40, -30,
91+
-30, -40, -40, -50, -50, -40, -40, -30,
92+
-30, -40, -40, -50, -50, -40, -40, -30,
93+
-20, -30, -30, -40, -40, -30, -30, -20,
94+
-10, -20, -20, -20, -20, -20, -20, -10,
95+
20, 20, 0, 0, 0, 0, 20, 20,
96+
20, 30, 10, 0, 0, 10, 30, 20
97+
};
98+
inline Value mg_queen_table[64] = {
99+
-20, -10, -10, -5, -5, -10, -10, -20,
100+
-10, 0, 5, 0, 0, 0, 0, -10,
101+
-10, 5, 5, 5, 5, 5, 0, -10,
102+
0, 0, 5, 5, 5, 5, 0, -5,
103+
-5, 0, 5, 5, 5, 5, 0, -5,
104+
-10, 0, 5, 5, 5, 5, 0, -10,
105+
-10, 0, 0, 0, 0, 0, 0, -10,
106+
-20, -10, -10, -5, -5, -10, -10, -20
107+
};
108+
inline Value eg_knight_table[64] = {
109+
-50, -40, -20, -20, -20, -20, -40, -50,
110+
-40, -10, 5, 10, 10, 5, -10, -40,
111+
-30, 10, 20, 25, 25, 20, 10, -30,
112+
-30, 15, 25, 30, 30, 25, 15, -30,
113+
-30, 15, 25, 30, 30, 25, 15, -30,
114+
-30, 10, 20, 25, 25, 20, 10, -30,
115+
-40, -10, 5, 10, 10, 5, -10, -40,
116+
-50, -40, -20, -20, -20, -20, -40, -50
117+
};
118+
inline Value eg_bishop_table[64] = {
119+
-10, -5, -5, -5, -5, -5, -5, -10,
120+
-5, 5, 10, 10, 10, 10, 5, -5,
121+
-5, 10, 15, 20, 20, 15, 10, -5,
122+
-5, 10, 20, 25, 25, 20, 10, -5,
123+
-5, 10, 20, 25, 25, 20, 10, -5,
124+
-5, 10, 15, 20, 20, 15, 10, -5,
125+
-5, 5, 10, 10, 10, 10, 5, -5,
126+
-10, -5, -5, -5, -5, -5, -5, -10
127+
};
128+
inline Value eg_rook_table[64] = {
129+
0, 0, 0, 0, 0, 0, 0, 0,
130+
0, 5, 10, 15, 15, 10, 5, 0,
131+
0, 5, 10, 15, 15, 10, 5, 0,
132+
0, 5, 10, 15, 15, 10, 5, 0,
133+
10, 15, 20, 25, 25, 20, 15, 10,
134+
10, 15, 20, 25, 25, 20, 15, 10,
135+
20, 25, 30, 35, 35, 30, 25, 20,
136+
0, 0, 0, 5, 5, 0, 0, 0
137+
};
138+
inline Value eg_king_table[64] = {
139+
-50, -40, -30, -20, -20, -30, -40, -50,
140+
-40, -20, 0, 10, 10, 0, -20, -40,
141+
-30, 0, 20, 30, 30, 20, 0, -30,
142+
-20, 10, 30, 40, 40, 30, 10, -20,
143+
-20, 10, 30, 40, 40, 30, 10, -20,
144+
-30, 0, 20, 30, 30, 20, 0, -30,
145+
-40, -20, 0, 10, 10, 0, -20, -40,
146+
-50, -40, -30, -20, -20, -30, -40, -50
147+
};
148+
inline Value eg_queen_table[64] = {
149+
-10, -5, -5, 0, 0, -5, -5, -10,
150+
-5, 0, 5, 5, 5, 5, 0, -5,
151+
-5, 5, 10, 15, 15, 10, 5, -5,
152+
-5, 10, 15, 20, 20, 15, 10, -5,
153+
-5, 10, 15, 20, 20, 15, 10, -5,
154+
-5, 5, 10, 15, 15, 10, 5, -5,
155+
-5, 0, 5, 5, 5, 5, 0, -5,
156+
-10, -5, -5, 0, 0, -5, -5, -10
157+
};
158+
inline Value mg_pawn_table[56] = {
159+
0, 0, 0, 0, 0, 0, 0, 0,
160+
0, 0, 0, 0, 0, 0, 0, 0,
161+
-5, -2, 2, 5, 5, 2, -2, -5,
162+
-10, -5, 10, 20, 20, 10, -5, -10,
163+
-20, -10, 25, 40, 40, 25, -10, -20,
164+
-35, -20, 50, 80, 80, 50, -20, -35,
165+
-55, -40, 90, 130, 130, 90, -40, -55
166+
};
167+
inline Value eg_pawn_table[56] = {
168+
0, 0, 0, 0, 0, 0, 0, 0,
169+
0, 0, 0, 0, 0, 0, 0, 0,
170+
-5, -2, 2, 5, 5, 2, -2, -5,
171+
-10, -5, 10, 20, 20, 10, -5, -10,
172+
-20, -10, 30, 55, 55, 30, -10, -20,
173+
-35, -20, 70, 110, 110, 70, -20, -35,
174+
-60, -45, 120, 180, 180, 120, -45, -60
175+
};
176+
inline Value developedMg = 8;
177+
inline Value developedEg = 4;
106178
inline Value outpostBonusKnight[2] = { 15, 30 };
107-
inline Value outpostBonusBishop[2] = { 10, 20 };
179+
inline Value outpostBonusBishop[2] = { 10, 25 };
108180
inline Value kingProtector[6][2] = {
109181
{ 0, 0 },
110182
{ 8, 12 },
@@ -129,15 +201,15 @@ inline Value threatByRook[7][2] = {
129201
{ 20, 25 },
130202
{ 25, 35 }
131203
};
132-
inline Value hangingScore = 60;
204+
inline Value hangingScore = 70;
133205
inline Value overloadScore = 25;
134206
inline Value threatByRankScore = 10;
135-
inline Value minorImWt = 25;
136-
inline Value bishopImWt = 10;
137-
inline Value rookImWt = 15;
138-
inline Value queenImWt = 40;
207+
inline Value minorImWt = 30;
208+
inline Value bishopImWt = 15;
209+
inline Value rookImWt = 20;
210+
inline Value queenImWt = 50;
139211
inline Value rammedPawnPenalty = 10;
140-
inline Value rookOnSeventhBonus = 20;
141-
inline Value earlyQueenPenalty = 15;
212+
inline Value rookOnSeventhBonus = 30;
213+
inline Value earlyQueenPenalty = 5;
142214
} // namespace engine::eval
143215
#endif

eval.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ TUNE(SetRange(5, 30),
4141
RookValue,
4242
SetRange(800, 1000),
4343
QueenValue);
44-
TUNE(SetRange(-10, 10), mgMobilityCnt, egMobilityCnt);
44+
TUNE(SetRange(-50, 70), mgMobilityCnt, egMobilityCnt);
4545
TUNE(SetRange(0, 30), fianchettoBonus, SetRange(0, 100), trappedBishopPenalty);
4646
TUNE(SetRange(-20, 20), kingTropismMg, kingTropismEg);
4747
TUNE(SetRange(0, 30),
@@ -70,7 +70,7 @@ TUNE(SetRange(0, 30),
7070
isolatedPawnMg,
7171
SetRange(0, 40),
7272
isolatedPawnEg);
73-
TUNE(SetRange(0, 200),
73+
TUNE(SetRange(0, 400),
7474
passedBonusMg[1],
7575
passedBonusMg[2],
7676
passedBonusMg[3],
@@ -91,7 +91,7 @@ TUNE(SetRange(1, 30),
9191
kingShelterDecayMg,
9292
SetRange(1, 10),
9393
kingShelterDecayEg);
94-
TUNE(SetRange(-25, 25),
94+
TUNE(SetRange(-70, 200),
9595
mg_knight_table,
9696
mg_bishop_table,
9797
mg_rook_table,

search.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -508,8 +508,6 @@ Value doSearch(
508508
std::string extract_pv(const chess::Position &root, int maxPly) {
509509
std::string pv;
510510
chess::Position pos = root;
511-
std::unordered_set<uint64_t> visited;
512-
visited.insert(pos.hash());
513511
for (int ply = 0; ply < maxPly; ply++) {
514512
if (pos.is_draw(3))
515513
break;
@@ -533,8 +531,6 @@ std::string extract_pv(const chess::Position &root, int maxPly) {
533531
if (ply + 1 >= maxPly)
534532
break;
535533
pos.doMove(m);
536-
if (!visited.insert(pos.hash()).second)
537-
break;
538534
}
539535
return pv;
540536
}

0 commit comments

Comments
 (0)