+ I noticed Sapeli was happily getting into drawn endgames. And not knowing when tu turn bad position into drawn endings. This release fixes it.
+ Plus tons of simplifications.
+ Test suites rerun 10s per position.
Example:
Sapeli isn't blind anymore to drawish endings. Here Sapeli scales down this theoretical draw ending.
[d]8/7p/5b2/8/8/6k1/8/6K1 b - - 1 1
+ I noticed Sapeli was happily getting into drawn endgames. And not knowing when tu turn bad position into drawn endings. This release fixes it.
+ Plus tons of simplifications.
+ Test suites rerun 10s per position.
Example:
Sapeli isn't blind anymore to drawish endings. Here Sapeli scales down this theoretical draw ending.
[d]8/7p/5b2/8/8/6k1/8/6K1 b - - 1 1
...
[/code]
I have added the new version compilations to the downloads at rwbc.
The eval for this position is compressed by more than 50% now compared to previous version.
I think though it should be even more scaled down for the special case of B+wrong pawn at least,
if it can be done w/o losing much speed, as it is quite rare?
Haven't looked at the source yet, if you have some general endgame scaling, or added special cases?
+ I noticed Sapeli was happily getting into drawn endgames. And not knowing when tu turn bad position into drawn endings. This release fixes it.
+ Plus tons of simplifications.
+ Test suites rerun 10s per position.
Example:
Sapeli isn't blind anymore to drawish endings. Here Sapeli scales down this theoretical draw ending.
[d]8/7p/5b2/8/8/6k1/8/6K1 b - - 1 1
...
[/code]
I have added the new version compilations to the downloads at rwbc.
The eval for this position is compressed by more than 50% now compared to previous version.
I think though it should be even more scaled down for the special case of B+wrong pawn at least,
if it can be done w/o losing much speed, as it is quite rare?
Haven't looked at the source yet, if you have some general endgame scaling, or added special cases?
Sapeli 1.72 by Toni Helminen
GNU General Public License version 3; for details see 'sapeli -license'
uci
...
position fen 8/7p/5b2/8/8/6k1/8/6K1 b - - 1 1
go depth 16
info depth 1 nodes 38 time 0 nps 0 score cp 233 pv f6d4
info depth 2 nodes 138 time 0 nps 0 score cp 238 pv h7h5
info depth 3 nodes 809 time 0 nps 0 score cp 236 pv h7h5
info depth 4 nodes 1704 time 0 nps 0 score cp 240 pv h7h5
info depth 5 nodes 5332 time 10 nps 533200 score cp 247 pv h7h5
info depth 6 nodes 20826 time 10 nps 2082600 score cp 251 pv h7h5
info depth 7 nodes 56630 time 20 nps 2831500 score cp 252 pv h7h5
info depth 8 nodes 154791 time 40 nps 3869775 score cp 273 pv h7h5
info depth 9 nodes 648068 time 140 nps 4629057 score cp 279 pv h7h5
info depth 10 nodes 1635304 time 340 nps 4809717 score cp 285 pv h7h5
info depth 11 nodes 3968839 time 752 nps 5277711 score cp 285 pv h7h5
info depth 12 nodes 21481767 time 3462 nps 6205016 score cp 279 pv h7h5
info depth 13 nodes 52010840 time 8062 nps 6451356 score cp 288 pv h7h5
info depth 14 nodes 158320911 time 24212 nps 6538943 score cp 289 pv h7h5
Thanks for the feedback!
I tried to add a general rule for these drawish endgames. No pawns then 50% score. Usually less pawns on board means drawish. And only 1 minor/major then 33%. But the factor was too much. I need to fix this thing.
For example KNKR is almost always a draw but for example Stockfish 11 has special code to try squeeze out victory.
This opposite color bishop ending / and similar endings( KNBK / KQKR etc ) are quite rare and I don't think it's worth adding special code for it. I try to keep Sapeli pretty minimalistic anyway. I see those endings sometimes. And sometimes Sapeli manages to convert / save a draw and sometimes doesn't.
I forgot to mention that when analyzing on GUI and there's only 1 legal move. A chess engine needs to send also "info ..." string and not just bestmove. Otherwise there's nothing on analyze window. This is fixed now.
Tons of tiny fixes and speedups. Searching 7,000,000 NPS on single core.
Finally worked on search and this version destroys all the older Sapelis. I would estimate +50elo.
This is a big bug fix version. Simplified the code base a lot(MACROS -> simple functions). Contains builds for different OSes. Profile build should be used. As Sapeli depends on speed.