Releases: Ciekce/Polaris
Polaris 1.8.1
Release republished due to outdated tag (again) (I am stupid)
This release fixes some strange behaviour regarding how tablebase scores are reported, and adds some additional safeguards to win/loss score handling in aspiration windows. Additionally, compilation should no longer spit out warnings from Fathom.
No strength difference exists from 1.8.0 :)
See the 1.8.0 release for full release notes for 1.8.x :3
Full Changelog: v1.8.0...v1.8.1
Polaris 1.8.0
- fixed an incredibly stupid bug regarding transposition table cutoffs
- the SPRT for this gained 69 elo :)
- fixed mate scores
- both from scores stored in the ttable, and from the off-by-one ply counter
- simplified eval slightly
- improved LMR
- added capture history
- added time management based on the percentage of nodes spent searching the best move
- started always generating underpromotions to bishops and rooks, and removed the corresponding UCI option
- added Syzygy probing support via Fathom
- various speedups and refactors
Many thanks to everyone who has contributed CPU time to the OpenBench instance that Polaris is tested on: @Adam-Kulju, @Alex2262, @archishou, @cosmobobak, @crippa1337, @dede1751, @GediminasMasaitis, @lucametehau, @raklaptudirm, @spamdrew128, @uwuplant and particularly @JouanDeag :D
Special thanks to @cosmobobak for generating the games for and computing the eval normalisation model!
STC:
ELO | 139.27 +- 9.09 (95%)
CONF | 8.0+0.08s Threads=1 Hash=32MB
GAMES | N: 3000 W: 1365 L: 223 D: 1412
LTC:
ELO | 114.07 +- 14.47 (95%)
CONF | 60.0+0.60s Threads=1 Hash=128MB
GAMES | N: 1000 W: 387 L: 70 D: 543
Elo testing done with OpenBench's 8moves_v3 book. Previous post-OpenBench releases were progression tested with a different book, but this one should more accurately reflect real-world gains in theory.
Results are obtained from self-play and will likely not scale perfectly to games against other opponents :)
Full Changelog: v1.7.0...v1.8.0
Polaris 1.7.0
Release republished due to outdated tag :)
- added futility pruning
- improved LMR
- added internal iterative reduction
- improved transposition table replacement scheme
- also added TT entry ageing
- added history gravity
- reduced the number of killers per ply to 1 (from 2)
- removed singular extensions
- the implementation in Polaris 1.6 was unfathomably broken
- planned to be re-added in 1.8.0
- improved eval handling in qsearch (no stand pat in check)
- improved TT hit detection for enabling NMP
- improved time management (allow much more time for hard timeouts)
Evaluations are now normalised according to WDL - 100 cp (a +1 score) corresponds to a 50% predicted win probability, and likewise -100 is 50% loss. Polaris also now prints win/draw/loss probabilities as part of UCI info output. This is entirely thanks to @cosmobobak, who generated data and PR'ed the whole system in #41 :)
A very rare crash that occurred in 1.6.1 has also been fixed.
Many thanks to everyone who has contributed CPU time to the OpenBench instance that Polaris is tested on: @Adam-Kulju, @Alex2262, @archishou, @cosmobobak, @crippa1337, @dede1751, @GediminasMasaitis, @lucametehau, @raklaptudirm, @spamdrew128, @uwuplant and particularly @JouanDeag :D
STC:
ELO | 108.56 +- 9.90 (95%)
CONF | 8.0+0.08s Threads=1 Hash=32MB
GAMES | N: 3000 W: 1364 L: 456 D: 1180
LTC:
ELO | 119.50 +- 16.31 (95%)
CONF | 60.0+0.60s Threads=1 Hash=128MB
GAMES | N: 1000 W: 441 L: 110 D: 449
Elo testing done with OpenBench's Pohl book.
Results are obtained from self-play and will likely not scale perfectly to games against other opponents :)
Full Changelog: v1.6.1...v1.7.0
Polaris 1.6.1
- fixed the crash
- changed target tuning architecture of the
bmi2
build tohaswell
The crashing issue noted in the 1.6.0 release (actually a race triggered when the opponent moved too fast) is, to my knowedge, resolved.
Polaris 1.6.0
- added countermoves
- tweaked nmp
- added lazy smp
- significantly improved lmr
- added see pruning
- added continuation history
- added check extension
- added singular extension
- various fixes and tweaks
Unlike the past two major versions, 1.6.0 is almost purely an elo release. It does, however, now have support for multithreading - this works fine as far as I know, but seems to scale strangely on some CPUs and should be considered to be in beta.
Note: rare crashes have been observed on a few machines, usually on shorter time controls. This issue is proving extremely difficult to track down, as it does not occur on my development machine, and will be fixed in a patch (presumably 1.6.1) when found.
STC:
ELO | 159.30 +- 15.41 (95%)
CONF | 8.0+0.08s Threads=1 Hash=32MB
GAMES | N: 1504 W: 833 L: 188 D: 483
LTC:
ELO | 191.47 +- 21.75 (95%)
CONF | 60.0+0.60s Threads=1 Hash=128MB
GAMES | N: 752 W: 435 L: 58 D: 259
Elo testing done with OpenBench's Pohl book.
Results are obtained from self-play and will likely not scale perfectly to games against other opponents :)
Full Changelog: v1.5.0...v1.6.0
Polaris 1.5.0
- fixed various eval terms related to semi-open files
- significant time management improvements
- improving heuristic in rfp
- various rewrites and tweaks
1.5.0 mostly comprises internal changes - the entire board representation has been rewritten, for example.
it is a strength improvement over 1.4.1 regardless:
STC:
ELO | 79.44 +- 14.72 (95%)
CONF | 8.0+0.08s Threads=1 Hash=32MB
GAMES | N: 1504 W: 675 L: 337 D: 492
LTC:
ELO | 58.77 +- 19.51 (95%)
CONF | 60.0+0.60s Threads=1 Hash=128MB
GAMES | N: 752 W: 289 L: 163 D: 300
Elo testing done with OpenBench's Pohl book.
Full Changelog: v1.4.1...v1.5.0
Polaris 1.4.1
- fixed chess960 castling
- renamed
perft
tosplitperft
and addedperft
, which just prints the node count
chess960 will no longer break in positions where castling that did not move the king has occurred
no strength change from 1.4.0 in standard chess
Full Changelog: v1.4.0...v1.4.1
Polaris 1.4.0
- added history (finally)
- implemented chess960
- fixed longstanding bug with evaluation scaling in endgames
- various fixes, tweaks and internal changes
1.4.0 is more of a bugfix and feature release than pure strength improvement, unlike 1.3.0.
nevertheless, it is significantly stronger than 1.3.0, especially at LTC:
STC (10+0.1):
Score of polaris_1.4.0 vs polaris_1.3.0: 157 - 40 - 53 [0.734] 250
... polaris_1.4.0 playing White: 90 - 16 - 19 [0.796] 125
... polaris_1.4.0 playing Black: 67 - 24 - 34 [0.672] 125
... White vs Black: 114 - 83 - 53 [0.562] 250
Elo difference: 176.3 +/- 41.9, LOS: 100.0 %, DrawRatio: 21.2 %
LTC (2'+1):
Score of polaris_1.4.0 vs polaris_1.3.0: 131 - 17 - 52 [0.785] 200
... polaris_1.4.0 playing White: 78 - 4 - 18 [0.870] 100
... polaris_1.4.0 playing Black: 53 - 13 - 34 [0.700] 100
... White vs Black: 91 - 57 - 52 [0.585] 200
Elo difference: 225.0 +/- 46.4, LOS: 100.0 %, DrawRatio: 26.0 %
Elo testing done with the UHO_4060_v2 book.
Fewer games run than normal due to CPU time constraints (and LTC testing takes forever).
Full Changelog: v1.3.0...v1.4.0
Polaris 1.3.0
- added killers
- added static exchange evaluation
- added reverse futility pruning
- improved lmr
- minor eval changes and new dataset
- improved time management
- changed how nodes are counted
- other small fixes and tweaks
Score of polaris_1.3.0 vs polaris_1.2.0: 400 - 30 - 70 [0.870] 500
... polaris_1.3.0 playing White: 204 - 17 - 29 [0.874] 250
... polaris_1.3.0 playing Black: 196 - 13 - 41 [0.866] 250
... White vs Black: 217 - 213 - 70 [0.504] 500
Elo difference: 330.2 +/- 38.0, LOS: 100.0 %, DrawRatio: 14.0 %
Elo testing done at 10+0.1 with Stockfish's 2moves_v2 book
Full Changelog: v1.2.0...v1.3.0
Polaris 1.2.0
- now responds to the
stop
command - now reports the current pv (from transposition table, real pv lines later)
- fixed a critical bug in move pseudolegality checking
Score of polaris_dev vs polaris_1.1.0: 225 - 46 - 75 [0.759] 346
... polaris_dev playing White: 122 - 22 - 30 [0.787] 174
... polaris_dev playing Black: 103 - 24 - 45 [0.730] 172
... White vs Black: 146 - 125 - 75 [0.530] 346
Elo difference: 199.0 +/- 36.1, LOS: 100.0 %, DrawRatio: 21.7 %
SPRT: llr 2.94 (100.0%), lbound -2.94, ubound 2.94 - H1 was accepted
Full Changelog: v1.1.0...v1.2.0