Releases: rosenthj/Winter
Winter v4.0
This major release features a new network architecture and many small adjustments to search. More details to follow soon.
A big thank you to Jim Ablett this time around for making the binaries! Jim is well known in the computer chess community and his current compilation thread can be found here: https://www.talkchess.com/forum/viewtopic.php?t=83775
Winter v3.0
This version features a completely new network architecture which can be interpreted as a form of Graph Neural Network. To my knowledge Winter is the first engine to adopt such an architecture.
Elo | 119.24 +- 7.98 (95%)
Conf | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 4002 W: 1742 L: 420 D: 1840
Penta | [24, 166, 637, 812, 362]
http://chess.grantnet.us/test/35205/
Big thank you to Seer author Connor McMonigle for making the windows binaries!
Winter v2.0
The primary change in this major release is due to more self play data to train a better network. Holes in elementary endgames have been closed, so play in many of those positions should be noticeably better.
Huge thank you to Seer author Connor McMonigle, who generated the Windows Winter compiles for this version. Without this, there is a good chance I would procrastinate the release for another couple of weeks!
Also thank you to Andrew Grant and the contributors to OpenBench, without whom it would not be possible to test changes to Winter with any statistical significance.
Self play results in DFRC bullet testing:
Winter v2.0 vs Winter v1.0
ELO | 100.40 +- 7.99 (95%)
CONF | 40.0+0.40s Threads=1 Hash=64MB
GAMES | N: 5000 W: 2344 L: 938 D: 1718
Winter v1.0
First major Winter release in over two years! In regular chess it is expected to be roughly on paar with the previous release v0.9. It is expected to be stronger than Winter 0.9.5 at Fischer random chess, which was tested at CCRL. Fischer random is a newly supported variant and was not supported in v0.9.0.
Huge thank you to Seer author Connor McMonigle, who generated the Windows Winter compiles for this version. Without this, there is a good chance I would procrastinate the release for another couple of weeks!
Also thank you to Andrew Grant and the contributors to OpenBench, without whom it would not be possible to test changes to Winter with any statistical significance.
Major changes:
- Chess960 support.
- Evaluation function revision.
- Eval is now based on small net on top of raw board state as opposed to handcrafted features.
- Net weights are handled with incbin.h. This is standard amongst strong C and C++ AlphaBeta engines. There is no cross compatibility with other engines at this time.
- Training code is rewritten from scratch and will likely get released at a later time.
- Training data consists of some 350k CCRL Fischer random games. Additionally there are another 300k or so self play games, mostly DFRC, with a small number of regular FRC games being the exception. As only a small number of games are (coincidentally) from the regular start position, Winter cannot overfit to learn regular chess openings.
- Android support
- Hasn't been tested in a while, may need to fix.
Minor changes:
- Removing cutnode/allnode expectations
- Depth for singular extension may now be lower as long depth of entry is large enough
- Program exit via uci quit command should be more stable
- QS Move ordering changes
- Code simplifications and removing a lot of legacy code.
- History Heuristic tweaks
- UCI code handling improvements
Winter v0.9
The newest version of Winter is using the same evaluation function as in the previous release. The following changes have however occured:
- WDL Search: WDL probabilities are now used in the whole search. Previously the WDL scores were transformed into scalar values for search purposes. This means Winter now outputs wdl estimates.
- Support for UCI_ShowWDL uci option.
- Support for Hash full UCI output.
- Fixed Time, Node and Depth Searches should no longer return instantly in positions with only one legal move.
- PV outputs are no longer restricted by the current depth.
- PV outputs are restricted in the case of draws.
- Winter has joined OpenBench. As a corollary, this means Winter has support for the bench command. A big thank you to Noobpwnftw who graciously donates the majority of resources to OpenBench, to Andrew Grant for writing OpenBench, to the SF dev team who made the original Fishtest and all the other great people working on or donating resources to OpenBench.
- Various changes to the search. In general Winter is now more agressive in its pruning, especially in PV nodes.
- Speed improvements, especially when compiled with GCC. The release binaries should still be significantly faster than in the previous release.
- Time management has been improved. This is true for both repeating TC and TC with increment, but moreso in the case of increment. The time management is also easier to understand, in case someone would like to steal ideas.
- Contempt and Armageddon had a minor rework. The functionality should be comparable to in Winter 0.8, but thanks to the new WDL Search it is easier to invert the effect of contempt. This means that cp and wdl score outputs are based on something close to the eval without contempt. That being said, the inverse does not work with contempt set to 100/-100. Armageddon default is 60/-60 for white and black respectively.
The binaries released should correspond to the same settings as during the previous release, so whichever version worked best for you then is likely still the best. That being said, due to the speed improvements, they likely no longer make much sense. It is likely the 1.0 release (which I intend to be the next big one) will have other binary versions.
Winter v0.8
Major new features:
-Pawn hash
-Pawn structure feature extraction is based on a small CNN
-Smaller binary
Windows binaries to follow soon.
Difference in start position search between Linux and Windows builds was traced back to use of std::(non-stable)sort and is not a bug.
Winter v0.7
Major features:
- A small neural network has replaced Fuzzy C-Means for the static evaluationg function.
- Comtempt
- Support for Armageddon format
The different binaries refer to the age of the supported processor. The 4 binaries should match the binaries from the previous releases. If you are unsure of what binary to choose, try in order New > Old > Older > Ancient until one works. The minimum requirements for the Ancient binary is essentially any 64 bit system.
On OSX and Linux calling make from the source directory should work out of the box. Winter does not rely on any libraries aside from the standard library and is developped on Linux.
Winter 0.6
Winter 0.6 features improvements to search including the addition of history heuristics.
With the addition of history heuristics regular Lazy SMP seems to be slightly (single digit Elo) better than Lazy Ignorance SMP, so Winter is using that for now.
Winter 0.5.5b for TCEC S15 Cup
This release is for the S15 TCEC Cup.
I recommend testers wait for the v0.6 release, which will occur shortly before the end of the S15 Super Final between Stockfish and Leela.
Winter 0.5
Changes:
"Lazy Ignorance SMP" is a new Lazy SMP variant which I described on the Computer Chess Club forum. It resulted in minor gains on low core counts, which became hard to measure on high core counts.
Singular Extensions and Counter Move History are search features found in top open source programs such as Stockfish, Ethereal and Xiphos. These features resulted in large gains in self play tests.
The timing of this release is partially due to the increase in playing strength and partially due to the upcoming TCEC S15 competition.
I do not have access to a Windows computer at the moment, so the Windows binaries are cross compiled and at the time of writing completely unchecked.