Skip to content

Commit f2bab9d

Browse files
committed
try to tune
1 parent 7926388 commit f2bab9d

2 files changed

Lines changed: 74 additions & 141 deletions

File tree

‎Weights.h‎

Lines changed: 72 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1,139 +1,72 @@
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

‎eval.cpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Value *mgPst[] = { nullptr, mg_pawn_table, mg_knight_table, mg_bishop_table, mg_
2929
Value *egPst[] = { nullptr, eg_pawn_table, eg_knight_table, eg_bishop_table, eg_rook_table, eg_queen_table, eg_king_table };
3030

3131
// tuning slop here
32-
/*
32+
3333
TUNE(SetRange(5, 30),
3434
tempo,
3535
SetRange(80, 120),
@@ -225,7 +225,7 @@ TUNE(SetRange(10, 100), minorImWt, SetRange(5, 50), bishopImWt, SetRange(10, 100
225225
TUNE(SetRange(1, 50), rammedPawnPenalty);
226226
TUNE(SetRange(1, 100), rookOnSeventhBonus);
227227
TUNE(SetRange(1, 50), earlyQueenPenalty);
228-
*/
228+
229229
EvalComponents eval_components(const chess::Position &board) {
230230
constexpr int KnightPhase = 1;
231231
constexpr int BishopPhase = 1;

0 commit comments

Comments
 (0)