Line data Source code
1 : #include "evalConfig.hpp"
2 :
3 : #include "bitboard.hpp"
4 : #include "position.hpp"
5 :
6 : namespace EvalConfig {
7 :
8 : CONST_EVAL_TUNING EvalScore imbalance_mines[5][5] = {
9 : // pawn knight bishop rook queen
10 : { { 11, 138} },
11 : { { -3, 342}, { -114, -261} },
12 : { { 273, 239}, { -183, -240}, { -210, -284} },
13 : { { 158, 629}, { -184, -131}, { -193, -338}, { -162, -383} },
14 : { { 467, 629}, { -528, -360}, { -793, -538}, {-1271,-1127}, { -444, -416} }
15 : };
16 :
17 : CONST_EVAL_TUNING EvalScore imbalance_theirs[5][5] = {
18 : // pawn knight bishop rook queen
19 : { { -184, -330} },
20 : { { 190, 430}, { 6, -54} },
21 : { { 135, 523}, { 21, -83}, { 33, -44} },
22 : { { 107, 717}, { 45, -86}, { -23, -229}, { 6, -204} },
23 : { { 712, 975}, { 442, 338}, { 483, 303}, { 306, 339}, { 15, 11} }
24 : };
25 :
26 : CONST_EVAL_TUNING EvalScore PST[PieceShift][NbSquare] = {
27 : {
28 : { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0},
29 : { 98, 88}, { 133, 73}, { 60, 78}, { 95, 53}, { 68, 91}, { 126, 65}, { 34, 131}, { -11, 137},
30 : { -4, 71}, { 7, 46}, { 23, 21}, { 28, -11}, { 65, -21}, { 56, 22}, { 25, 41}, { -20, 50},
31 : { 4, 62}, { 0, 43}, { 9, 23}, { -2, 13}, { 10, 14}, { 19, 23}, { 15, 25}, { 0, 30},
32 : { -7, 26}, { -25, 26}, { -1, -1}, { 8, 4}, { 18, -6}, { 15, 3}, { -6, 20}, { 7, 7},
33 : { -9, 24}, { -25, 24}, { 1, 2}, { 1, 6}, { 10, 10}, { 7, 6}, { 22, 6}, { 14, 5},
34 : { -24, 25}, { -28, 17}, { -6, 3}, { -13, 5}, { 3, 17}, { 11, 16}, { 24, 3}, { -17, 10},
35 : { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}
36 : },
37 : {
38 : {-167, -56}, { -89, -41}, { -34, -10}, { -49, -30}, { 61, -31}, { -97, -30}, { -15, -63}, {-107, -98},
39 : { -73, -71}, { -42, -28}, { 71, -74}, { 36, -35}, { 23, -53}, { 62, -74}, { 6, -58}, { -17, -58},
40 : { -47, -35}, { 60, -45}, { 27, -9}, { 48, -8}, { 81, -50}, { 128, -46}, { 71, -52}, { 44, -51},
41 : { -9, -3}, { 35, -5}, { 58, -18}, { 60, -7}, { 45, -2}, { 73, -13}, { 36, -16}, { 32, -18},
42 : { -1, -7}, { 4, -9}, { 40, -15}, { 29, 16}, { 29, 15}, { 32, -6}, { 31, -2}, { 5, -20},
43 : { -16, -32}, { 12, -11}, { 24, -32}, { 15, 5}, { 19, -9}, { 21, -37}, { 30, -26}, { -10, -22},
44 : { -29, -39}, { -52, -20}, { -14, -19}, { 9, -17}, { 11, -32}, { -3, -32}, { -14, -19}, { -21, -22},
45 : {-105, -24}, { -35, -39}, { -58, -22}, { -36, -8}, { -35, -32}, { -21, -24}, { -30, -54}, { -23, -61}
46 : },
47 : {
48 : { -29, -14}, { 4, -16}, { -82, -10}, { -37, -8}, { -25, -4}, { -42, -9}, { 7, -17}, { -8, -26},
49 : { -26, -5}, { 14, -6}, { -18, 8}, { -13, -15}, { 30, -8}, { 56, -14}, { 17, -12}, { -48, -16},
50 : { -7, 11}, { 37, -5}, { 37, -3}, { 39, -17}, { 34, -14}, { 46, -6}, { 36, 6}, { 38, -5},
51 : { -4, 10}, { -2, 28}, { 17, 11}, { 19, 15}, { 30, 5}, { 33, -3}, { 34, -16}, { 13, 6},
52 : { -3, -2}, { 3, 6}, { 32, 12}, { 32, 10}, { 32, -10}, { 32, 4}, { 19, 7}, { 23, -10},
53 : { 18, -18}, { 44, 15}, { 43, 11}, { 33, 2}, { 47, 9}, { 50, -2}, { 52, -12}, { 31, -9},
54 : { 35, -27}, { 29, -26}, { 46, -35}, { 32, 2}, { 39, 4}, { 41, -7}, { 49, -22}, { 36, -30},
55 : { -30, -16}, { 24, -22}, { 21, -25}, { -1, 6}, { -3, 25}, { -3, 2}, { -39, -1}, { -21, -24}
56 : },
57 : {
58 : { 32, 14}, { 42, 11}, { 32, 21}, { 51, 6}, { 63, 11}, { 9, 15}, { 31, 16}, { 43, 5},
59 : { 27, 10}, { 24, 13}, { 54, 6}, { 61, 2}, { 79, -15}, { 67, -1}, { 26, 16}, { 44, 8},
60 : { -6, 12}, { 19, 9}, { 25, -3}, { 35, -23}, { 16, -10}, { 45, -12}, { 61, -5}, { 16, -6},
61 : { -25, 25}, { -12, 15}, { 5, 10}, { 25, -11}, { 25, -17}, { 32, -6}, { -8, 8}, { -19, 11},
62 : { -34, 18}, { -25, 19}, { -14, 9}, { -3, 4}, { 5, -7}, { -6, -2}, { 6, 2}, { -24, -4},
63 : { -31, 3}, { -19, 9}, { -17, -8}, { -16, 0}, { 3, -17}, { 6, -25}, { 13, -4}, { -19, -11},
64 : { -25, -1}, { -12, -7}, { -13, -11}, { -8, -8}, { 9, -19}, { 11, -13}, { -1, -6}, { -49, 8},
65 : { 1, 2}, { 4, -6}, { -6, 14}, { 5, -9}, { 19, -13}, { 16, -21}, { 17, -11}, { 11, -27}
66 : },
67 : {
68 : { -28, -9}, { 0, 22}, { 29, 14}, { 11, 13}, { 59, 25}, { 44, 18}, { 43, 9}, { 45, 19},
69 : { -15, -6}, { -40, 29}, { -33, 32}, { -1, 36}, { -21, 60}, { 29, 11}, { 20, 26}, { 53, 0},
70 : { 3, -12}, { -15, 9}, { -5, 16}, { -16, 44}, { -14, 39}, { 40, 17}, { 39, 16}, { 30, -13},
71 : { -8, 19}, { -1, 29}, { -19, 27}, { -31, 42}, { -41, 48}, { -11, 26}, { 3, 38}, { 20, 2},
72 : { 13, 18}, { -20, 35}, { -11, 20}, { -16, 32}, { 3, 15}, { 0, 4}, { 9, 34}, { 27, 23},
73 : { 7, -13}, { 7, 7}, { 11, 19}, { 11, -15}, { 15, 16}, { 21, 8}, { 33, 7}, { 35, 2},
74 : { -7, -10}, { 17, -11}, { 16, -9}, { 22, 12}, { 36, -17}, { 27, -13}, { 42, -35}, { 3, -29},
75 : { 13, -29}, { 20, -27}, { 20, -11}, { 29, -28}, { 26, 11}, { 15, -16}, { -31, -21}, { -50, -42}
76 : },
77 : {
78 : { -65, -73}, { 23, -34}, { 16, -16}, { -15, -4}, { -56, -10}, { -34, 19}, { 2, 3}, { 13, -17},
79 : { 29, -17}, { -1, 21}, { -20, 19}, { -7, 36}, { -8, 22}, { -4, 45}, { -38, 24}, { -29, 12},
80 : { -9, 4}, { 24, 51}, { 2, 51}, { -16, 44}, { -20, 52}, { 6, 59}, { 22, 51}, { -22, 7},
81 : { -17, -7}, { -21, 29}, { -12, 76}, { -26, 60}, { -30, 51}, { -25, 48}, { -14, 48}, { -36, 9},
82 : { -49, -29}, { -1, 33}, { -28, 39}, { -40, 46}, { -44, 49}, { -45, 29}, { -36, 18}, { -51, 0},
83 : { -14, -33}, { -14, 18}, { -23, 19}, { -48, 17}, { -46, 36}, { -31, 14}, { -13, 4}, { -29, -19},
84 : { 1, -27}, { 10, 8}, { -1, -3}, { -41, 23}, { -42, 17}, { -5, -2}, { 33, -12}, { 45, -58},
85 : { -14, -55}, { 100, -93}, { 41, -52}, { -61, -11}, { 6, -65}, { -32, -26}, { 61, -79}, { 61,-131}
86 : }
87 : };
88 :
89 : ///@todo make more things depend on rank/file ???
90 :
91 : CONST_EVAL_TUNING EvalScore pawnShieldBonus = { 6, -8};
92 : CONST_EVAL_TUNING EvalScore pawnFawnMalusKS = { 21, 50};
93 : CONST_EVAL_TUNING EvalScore pawnFawnMalusQS = {-24, 17};
94 : // this depends on rank
95 : CONST_EVAL_TUNING EvalScore passerBonus[8] = { {-21,-34}, {-10,-17}, {-27, 28}, {-27,109}, { -2,157}, { 23, 77} };
96 :
97 : CONST_EVAL_TUNING EvalScore rookBehindPassed = { -19, 38};
98 :
99 : // distance to pawn / rank of pawn
100 : CONST_EVAL_TUNING EvalScore kingNearPassedPawnSupport[8][8] = { { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },
101 : { { 0, 0}, { 22, 19}, { -16, 57}, { 7, 63}, { -13, 86}, { -3, 139}, { -9, 37}, { 0, 0} },
102 : { { 0, 0}, { 0, 16}, { -26, 45}, { -44, 60}, { -12, 53}, { -9, 69}, { -8, 22}, { 0, 0} },
103 : { { 0, 0}, { -8, 27}, { -41, 52}, { -35, 41}, { -20, 29}, { -14, 35}, { -8, 15}, { 0, 0} },
104 : { { 0, 0}, { -18, 40}, { -8, 41}, { -20, 26}, { -18, -1}, { -6, -3}, { -8, 18}, { 0, 0} },
105 : { { 0, 0}, { 2, 26}, { -12, 30}, { 13, 12}, { 19, -1}, { -6, -14}, { -8, 8}, { 0, 0} },
106 : { { 0, 0}, { 35, 8}, { 30, 9}, { 21, 18}, { -3, 31}, { -7, 20}, { 6, -11}, { 0, 0} },
107 : { { 0, 0}, { 1, 6}, { 0, 3}, { 0, 7}, { 0, -2}, { 0, 1}, { 0, -1}, { 0, 0} } };
108 :
109 : CONST_EVAL_TUNING EvalScore kingNearPassedPawnDefend[8][8] = { { { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },
110 : { { 0, 0}, { -28, -150}, { -19, -150}, { -8, -94}, { 3, -40}, { -10, 4}, { -8, 16}, { 0, 0} },
111 : { { 0, 0}, { -9, -6}, { 31, -106}, { 26, -86}, { -4, -24}, { -9, -7}, { -9, 15}, { 0, 0} },
112 : { { 0, 0}, { -7, 47}, { -5, 12}, { 30, -59}, { 33, -25}, { -7, -6}, { -9, 29}, { 0, 0} },
113 : { { 0, 0}, { -8, 51}, { -4, 72}, { 15, 13}, { 29, -22}, { 14, -11}, { -3, 12}, { 0, 0} },
114 : { { 0, 0}, { -7, 28}, { 3, 48}, { 10, 38}, { 5, 34}, { 13, -8}, { 4, 11}, { 0, 0} },
115 : { { 0, 0}, { -8, 24}, { -4, 29}, { 0, 34}, { 5, 43}, { 11, 10}, { 2, 20}, { 0, 0} },
116 : { { 0, 0}, { 0, 0}, { 0, 0}, { 0, -2}, { 1, -1}, { 0, 3}, { 1, 0}, { 0, 0} } };
117 :
118 : // this depends on rank (shall try file also ??)
119 : CONST_EVAL_TUNING EvalScore doublePawn[8][2] = { {{ 0, 0}, { 0, 0}}, {{ 0, 0}, { 0, 0}}, {{ 17, 26}, { -7, 54}}, {{ 10, 37}, { 2, 34}}, {{ 23, 14}, { 15, 16}}, {{ -3, -2}, { 20, 37}}, {{ 23, 13}, { 51, 33}}, {{ 0, 0}, { 0, 0}} }; // close semiopenfile
120 : CONST_EVAL_TUNING EvalScore isolatedPawn[8][2] = { {{ 0, 0}, { 0, 0}}, {{ 2, 2}, { 22, 10}}, {{ -7, 9}, { 4, 5}}, {{ 12, -3}, { 0, 29}}, {{ 18,-16}, { -2, 18}}, {{ -2, 28}, {-44, 3}}, {{ 9, 7}, { 10, -3}}, {{ 0, 0}, { 0, 0}} }; // close semiopenfile
121 : CONST_EVAL_TUNING EvalScore backwardPawn[8][2] = { {{ 0, 0}, { 0, 0}}, {{ 5, -5}, { 30, 16}}, {{ 8, 8}, { 41, 12}}, {{ 9, -2}, { 36, -6}}, {{-14, 16}, { 28, 8}}, {{ 0, 0}, { 0, 0}}, {{ 0, 0}, { 0, 0}}, {{ 0, 0}, { 0, 0}} }; // close semiopenfile
122 : CONST_EVAL_TUNING EvalScore detachedPawn[8][2] = { {{ 0, 0}, { 0, 0}}, {{ 0, 0}, { 0, 0}}, {{ 37,-11}, { 42, 20}}, {{ -2, 5}, { 27, -2}}, {{ 1, 27}, { -4, 32}}, {{-25, 0}, { -6, 29}}, {{ 0, 0}, { 0, 0}}, {{ 0, 0}, { 0, 0}} }; // close semiopenfile
123 :
124 : CONST_EVAL_TUNING EvalScore holesMalus = {-23, -1};
125 : CONST_EVAL_TUNING EvalScore outpostN = { 33, 14};
126 : CONST_EVAL_TUNING EvalScore outpostB = { 48, -2};
127 : CONST_EVAL_TUNING EvalScore pieceFrontPawn = {-17, 10};
128 : CONST_EVAL_TUNING EvalScore pawnFrontMinor[8] = { { 3, 7}, { 17, 6}, { 19, -1}, { 11, 13}, { 25, 15}, { 36, 25}, { 0, 0}, { 0, 0} };
129 : CONST_EVAL_TUNING EvalScore centerControl = { 8, -1};
130 : CONST_EVAL_TUNING EvalScore knightTooFar[8] = { { 0, 0}, { 22, 27}, { 19, 14}, { 14, 13}, { -3, 21}, { 1, 10}, { -4, 0}, { 0, 0} };
131 :
132 : // this depends on rank
133 : CONST_EVAL_TUNING EvalScore candidate[8] = { {0, 0}, {-24, 17}, {-17, 9}, { 15, 33}, { 62, 64}, { 34, 64}, { 34, 64}, { 0, 0} };
134 : CONST_EVAL_TUNING EvalScore protectedPasserBonus[8] = { {0, 0}, { 24, -8}, { 5,-13}, { 19,-25}, { 56, 2}, {129, 26}, { 11, 48}, { 0, 0} };
135 : CONST_EVAL_TUNING EvalScore freePasserBonus[8] = { {0, 0}, { 1, -3}, { 0,-11}, { 4, -3}, { 1, -3}, {-31, 22}, { 48, 93}, { 0, 0} };
136 :
137 : CONST_EVAL_TUNING EvalScore pawnMobility = {-12, 13};
138 : CONST_EVAL_TUNING EvalScore pawnSafeAtt = {103, 36};
139 : CONST_EVAL_TUNING EvalScore pawnSafePushAtt = { 26, 20};
140 : CONST_EVAL_TUNING EvalScore pawnlessFlank = { 24,-39};
141 : CONST_EVAL_TUNING EvalScore pawnStormMalus = { 24,-27};
142 : CONST_EVAL_TUNING EvalScore rookOnOpenFile = { 41, 24};
143 : CONST_EVAL_TUNING EvalScore rookOnOpenSemiFileOur = { 24, -2};
144 : CONST_EVAL_TUNING EvalScore rookOnOpenSemiFileOpp = { 28, 17};
145 :
146 : CONST_EVAL_TUNING EvalScore rookQueenSameFile = { -1, 35};
147 : CONST_EVAL_TUNING EvalScore rookFrontQueenMalus = {-19, -1};
148 : CONST_EVAL_TUNING EvalScore rookFrontKingMalus = {-23, 22};
149 : CONST_EVAL_TUNING EvalScore minorOnOpenFile = { 4, 0};
150 :
151 : CONST_EVAL_TUNING EvalScore pinnedKing [5] = { { 1,-10}, { 31, 55}, { 2, 53}, { 14, 53}, { -3, 41} };
152 : CONST_EVAL_TUNING EvalScore pinnedQueen[5] = { { 7,-29}, {-10, 10}, { -4, 9}, { -5, 6}, { 29, 51} };
153 :
154 : CONST_EVAL_TUNING EvalScore hangingPieceMalus = {-29, -18};
155 :
156 : CONST_EVAL_TUNING EvalScore threatByMinor[6] = { { -6,-28}, {-33,-36}, {-39,-47}, {-79,-47}, {-71,-79}, {-57, -5} };
157 : CONST_EVAL_TUNING EvalScore threatByRook[6] = { { -7,-29}, {-48,-23}, {-35,-21}, {-13,-10}, {-76,-96}, {-18, -7} };
158 : CONST_EVAL_TUNING EvalScore threatByQueen[6] = { { -1,-16}, { -1,-18}, { 11,-37}, { 17,-13}, { 27, 31}, {-46,-63} };
159 : CONST_EVAL_TUNING EvalScore threatByKing[6] = { {-34,-43}, {-17,-47}, {-39,-52}, { 9,-55}, { -1, 0}, { 0, 0} };
160 :
161 : // this depends on number of pawn
162 : CONST_EVAL_TUNING EvalScore adjKnight[9] = { {-26,-20}, {-10, -4}, { -1, -8}, {-16, 8}, { -2, 14}, { 10, 26}, { 11, 43}, { 13, 67}, { 41, 72} };
163 : CONST_EVAL_TUNING EvalScore adjRook[9] = { { 24, -8}, { 15, 26}, {-34, 52}, {-49, 65}, {-65, 67}, {-66, 60}, {-65, 57}, {-47, 46}, {-46, 36} };
164 : CONST_EVAL_TUNING EvalScore bishopPairBonus[9] = { { 29, 56}, { 28, 58}, { 31, 71}, { 31, 82}, { 48, 78}, { 31,102}, { 41,101}, { 31, 95}, { 40,119} };
165 : CONST_EVAL_TUNING EvalScore badBishop[9] = { { 13,-40}, { 23,-34}, { 23,-17}, { 35,-16}, { 40, -7}, { 42, -4}, { 37, 14}, { 32, 53}, { 39, 66} };
166 :
167 : CONST_EVAL_TUNING EvalScore knightPairMalus = { 14, -7};
168 : CONST_EVAL_TUNING EvalScore rookPairMalus = { 58,-30};
169 :
170 : CONST_EVAL_TUNING EvalScore queenNearKing = { 10, 6};
171 :
172 : // scaling (/128 inside eval)
173 : CONST_EVAL_TUNING ScoreType scalingFactorWin = 384;
174 : CONST_EVAL_TUNING ScoreType scalingFactorHardWin = 64;
175 : CONST_EVAL_TUNING ScoreType scalingFactorLikelyDraw = 39;
176 : CONST_EVAL_TUNING ScoreType scalingFactorOppBishopAlone = 34;
177 : CONST_EVAL_TUNING ScoreType scalingFactorOppBishopAloneSlope = 20;
178 : CONST_EVAL_TUNING ScoreType scalingFactorOppBishop = 80;
179 : CONST_EVAL_TUNING ScoreType scalingFactorOppBishopSlope = 1;
180 : CONST_EVAL_TUNING ScoreType scalingFactorQueenNoQueen = 79;
181 : CONST_EVAL_TUNING ScoreType scalingFactorQueenNoQueenSlope = 0;
182 : CONST_EVAL_TUNING ScoreType scalingFactorPawns = 75;
183 : CONST_EVAL_TUNING ScoreType scalingFactorPawnsSlope = 25;
184 : CONST_EVAL_TUNING ScoreType scalingFactorPawnsOneSide = -20; // a curious tuned value ...
185 :
186 : //N B R QB QR K
187 : CONST_EVAL_TUNING EvalScore MOB[6][15] = { { { 0,-15}, { 9, 23}, { 15, 34}, { 19, 37}, { 29, 38}, { 32, 49}, { 40, 35}, { 35, 48}, { 29, 47}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} },
188 : { {-33, -2}, {-26, 31}, {-16, 30}, {-12, 49}, { -5, 41}, { -8, 48}, { 3, 45}, { 21, 32}, { 41, 29}, { 45, 36}, { 55, 37}, { 71, 65}, { 71, 56}, {120, 95}, { 0, 0} },
189 : { { 30, 21}, { 29, 57}, { 32, 57}, { 30, 59}, { 27, 69}, { 33, 69}, { 30, 73}, { 26, 80}, { 19, 92}, { 45, 74}, { 57, 71}, { 56, 73}, { 48, 76}, { 57, 69}, { 72, 56} },
190 : { {-22,-19}, {-19, 12}, {-10, 12}, {-12, 21}, { -5, 18}, { -1, 27}, { 5, 20}, { 16, 40}, { 13, 14}, { 23, 47}, { 28, 50}, { 34, 24}, { 16, 32}, { 24, 87}, { 0, 0} },
191 : { { -2,-54}, { -5, -7}, { 0, -9}, { -5, 9}, { -8, 16}, { -7, 17}, { -3, 18}, { 7, 14}, { 13, 14}, { 21, 26}, { 8, 37}, { 21, 43}, { 25, 48}, { 19, 45}, { 24, 54} },
192 : { { 2, 0}, { 1, 36}, {-10, 42}, {-24, 46}, {-30, 47}, {-26, 28}, {-29, 31}, {-31, 22}, {-40, 9}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0} } };
193 :
194 : CONST_EVAL_TUNING EvalScore initiative[4] = { { -1, 6}, { 70, 43}, {115, 65}, { 59, 83} };
195 :
196 : CONST_EVAL_TUNING ScoreType kingAttMax = 492;
197 : CONST_EVAL_TUNING ScoreType kingAttTrans = 35;
198 : CONST_EVAL_TUNING ScoreType kingAttScale = 11;
199 : CONST_EVAL_TUNING ScoreType kingAttOffset = 5;
200 : CONST_EVAL_TUNING ScoreType kingAttWeight[2][6] = { { 125, 189, 251, 153, 153, -39 }, { 41, 100, 96, 48, 26, 0 } };
201 : CONST_EVAL_TUNING ScoreType kingAttSafeCheck[6] = { 122, 785, 569, 934, 776, 0 };
202 : CONST_EVAL_TUNING ScoreType kingAttOpenfile = 283;
203 : CONST_EVAL_TUNING ScoreType kingAttSemiOpenfileOur = 184;
204 : CONST_EVAL_TUNING ScoreType kingAttSemiOpenfileOpp = 152;
205 : CONST_EVAL_TUNING ScoreType kingAttNoQueen = 585;
206 : ScoreType kingAttTable[64] = {0};
207 :
208 : CONST_EVAL_TUNING ScoreType tempo = {15};
209 :
210 22 : void initEval() {
211 1430 : for (Square i = 0; i < NbSquare; i++) {
212 1408 : EvalConfig::kingAttTable[i] =
213 1408 : static_cast<ScoreType>(sigmoid(i, EvalConfig::kingAttMax, EvalConfig::kingAttTrans, EvalConfig::kingAttScale, EvalConfig::kingAttOffset));
214 : }
215 22 : } // idea taken from Topple
216 :
217 : } // EvalConfig
|