unserializable / monchester

Monchester, chess engine for CECP interfaces and console
GNU General Public License v3.0
4 stars 1 forks source link

Improve endgame: king vs king and major piece #11

Closed unserializable closed 3 years ago

unserializable commented 3 years ago

One of the annoyances with Monchester 1.0 is that it's narrow fixed 4-depth search without quiescence with added randomization is fine enough to play scholastic level threats and blunders in opening and middlegame, but the endgames suck with such narrow depth and are much more random and dumb than scholastic.

So, providing bit more instructive behaviour without increasing the search depth anywhere (as the 1.0 is planned to remain essentially constant-strength engine), add the evaluation terms for endgames with sole king against king and major piece -- these should be consistently won. Randomization helps, but has loads of trouble when weaker king starts and remains in the middle of the board. And vice-versa, if engine is playing the weaker side, it should not run towards the last files and ranks but provide resistance by trying to remain centralized.

unserializable commented 3 years ago

The code section in static evaluation where the 3 piece material draws are detected (KBK, KNK) is already present in static evaluation function and the terms are easy to add without introducing any new conditionals.

unserializable commented 3 years ago

Done and tested positively against SF9 & Ethereal 12.75 & Rustic Alpha 1.

This most probably adds some rather minor ELO too, running some selfplay games for that later.

unserializable commented 3 years ago

+8059 -7831 =4110

Rank Name                           Elo    +    - games score oppo. draws  LOS
   1 Monchester 1.0.1-14-g84db4ed     2    4    4 20000   51%    -2   21%   97
   2 Monchester 1.0                  -2    4    4 20000   49%     2   21%    2