mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00:00
Dynamic complexity
Instead of computing the initiative bonus on the material score + dynamic score compute it on (material score/2) + dynamic score, Passed STC http://tests.stockfishchess.org/tests/view/5e2c4945ab2d69d58394fa8f LLR: 2.94 (-2.94,2.94) {-1.00,3.00} Total: 39387 W: 7594 L: 7386 D: 24407 Ptnml(0-2): 658, 4519, 9165, 4649, 697 Passed LTC http://tests.stockfishchess.org/tests/view/5e2c85ccab2d69d58394faa7 LLR: 2.95 (-2.94,2.94) {0.00,2.00} Total: 32588 W: 4206 L: 3986 D: 24396 Ptnml(0-2): 244, 2909, 9738, 3111, 253 closes https://github.com/official-stockfish/Stockfish/pull/2516 Bench: 4765486
This commit is contained in:
parent
0ae00454ba
commit
6d0eabd5fe
1 changed files with 11 additions and 6 deletions
|
@ -168,7 +168,7 @@ namespace {
|
|||
template<Color Us> Score passed() const;
|
||||
template<Color Us> Score space() const;
|
||||
ScaleFactor scale_factor(Value eg) const;
|
||||
Score initiative(Score score) const;
|
||||
Score initiative(Score score, Score materialScore) const;
|
||||
|
||||
const Position& pos;
|
||||
Material::Entry* me;
|
||||
|
@ -696,10 +696,7 @@ namespace {
|
|||
// known attacking/defending status of the players.
|
||||
|
||||
template<Tracing T>
|
||||
Score Evaluation<T>::initiative(Score score) const {
|
||||
|
||||
Value mg = mg_value(score);
|
||||
Value eg = eg_value(score);
|
||||
Score Evaluation<T>::initiative(Score score, Score materialScore) const {
|
||||
|
||||
int outflanking = distance<File>(pos.square<KING>(WHITE), pos.square<KING>(BLACK))
|
||||
- distance<Rank>(pos.square<KING>(WHITE), pos.square<KING>(BLACK));
|
||||
|
@ -724,6 +721,11 @@ namespace {
|
|||
- 43 * almostUnwinnable
|
||||
- 100 ;
|
||||
|
||||
// Give more importance to non-material score
|
||||
score = (score * 2 - materialScore) / 2;
|
||||
Value mg = mg_value(score);
|
||||
Value eg = eg_value(score);
|
||||
|
||||
// Now apply the bonus: note that we find the attacking side by extracting the
|
||||
// sign of the midgame or endgame values, and that we carefully cap the bonus
|
||||
// so that the midgame and endgame scores do not change sign after the bonus.
|
||||
|
@ -792,6 +794,9 @@ namespace {
|
|||
if (abs(v) > LazyThreshold + pos.non_pawn_material() / 64)
|
||||
return pos.side_to_move() == WHITE ? v : -v;
|
||||
|
||||
// Remember this score
|
||||
Score materialScore = score;
|
||||
|
||||
// Main evaluation begins here
|
||||
|
||||
initialize<WHITE>();
|
||||
|
@ -810,7 +815,7 @@ namespace {
|
|||
+ passed< WHITE>() - passed< BLACK>()
|
||||
+ space< WHITE>() - space< BLACK>();
|
||||
|
||||
score += initiative(score);
|
||||
score += initiative(score, materialScore);
|
||||
|
||||
// Interpolate between a middlegame and a (scaled by 'sf') endgame score
|
||||
ScaleFactor sf = scale_factor(eg_value(score));
|
||||
|
|
Loading…
Add table
Reference in a new issue