Skip to content

Commit 8aecf26

Browse files
Vizvezdenecsnicolet
authored andcommitted
Scale down complexity for almost unwinnable endgames
This patch greatly scales down complexity of endgames when the following conditions are all true together: - pawns are all on one flank - stronger side king is not outflanking weaker side - no passed pawns are present This should improve stockfish evaluation of obvious draws 4 vs 3, 3 vs 2 and 2 vs 1 pawns in rook/queen/knight/bishop single flank endgames where strong side can not make progress. passed STC LLR: 2.94 (-2.94,2.94) [0.50,4.50] Total: 15843 W: 3601 L: 3359 D: 8883 passed LTC LLR: 2.96 (-2.94,2.94) [0.00,3.50] Total: 121275 W: 20107 L: 19597 D: 81571 Closes #2298 Bench: 3954190 ========================== How to continue from there? a) This could be a powerful idea for refining some parts of the evaluation function, a bit like when we try quadratics or other equations to emphasize certain situations (xoto10). b) Some other combinaison values for this bonus can be done further, or overall retuning of weight and offset while keeping the formula simple.
1 parent 36e4a86 commit 8aecf26

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

src/evaluate.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -725,12 +725,17 @@ namespace {
725725
bool pawnsOnBothFlanks = (pos.pieces(PAWN) & QueenSide)
726726
&& (pos.pieces(PAWN) & KingSide);
727727

728+
bool almostUnwinnable = !pe->passed_count()
729+
&& outflanking < 0
730+
&& !pawnsOnBothFlanks;
731+
728732
// Compute the initiative bonus for the attacking side
729733
int complexity = 9 * pe->passed_count()
730734
+ 11 * pos.count<PAWN>()
731735
+ 9 * outflanking
732736
+ 18 * pawnsOnBothFlanks
733737
+ 49 * !pos.non_pawn_material()
738+
- 36 * almostUnwinnable
734739
-103 ;
735740

736741
// Now apply the bonus: note that we find the attacking side by extracting

0 commit comments

Comments
 (0)