Winter 0.3 Release Overview and Select Games
Posted: Sun Dec 16, 2018 9:23 pm
A few days ago I released Winter 0.3. The version that played in TCEC was a bit weaker than the release version, maybe 20 Elo. Some interesting Winter games from TCEC S14 division 4 are given at the bottom. Here is an overview of some of the changes between Winter 0.2 and 0.3.
- Awesome logo thanks to Kan from TCEC. Thanks again!
- Self play on 1 core improved by around +120 Elo.
- Android executable may be released at a later date. Originally I planned to have Android support for this release, but I am not particularly motivated for that at the moment.
- Winter now supports multithreading.
- Lazy SMP with helpers skipping depths like in Wasp and Ethereal. Furthermore Winter perturbs root move ordering in helper threads stochastically.
- Due to time constraints, I took a look at how Stockfish implemented its threadpool. My implementation was inspired by it and ended up being very similar.
- 4 vs 1 core results
Code: Select all
Score of Winter 0.3RC1 4c vs Winter 0.3RC1 1c: 442 - 79 - 479 [0.681] 1000 Elo difference: 132.14 +/- 15.47
- 64 vs 32 core results
Code: Select all
Score of Winter 0.3RC1 64c vs Winter 0.3RC1 32c: 113 - 75 - 212 [0.547] 400 Elo difference: 33.11 +/- 23.33
- Time management adjusted to use more time earlier and use less time if PV move stays constant at root.
- Nodes counted differently. Count should be higher than in TCEC version, however there seems to be a significant slowdown since first SMP version which I have not recognized the source of.
- Clustering algorithm changed from Gaussian Mixture Model to Fuzzy C-Means
- Paper: Bezdek, J.C., Ehrlich, R. and Full, W., 1984. FCM: The fuzzy c-means clustering algorithm. Computers & Geosciences, 10(2-3), pp.191-203.
- Fuzzy C-Means is a more direct generalization of tapered eval. In fact with the right choice of parameters we could implement tapered eval via Fuzzy C-Means.
- This was done after the version participating in TCEC and is the primary functional difference to that version.
- Still using 4 centroids, this performed more or less on par with 3 centroids, but better than 2 centroids.
- Now relying on just piece sums and l2 norm. No longer takes distance between kings or material differences into account.
- LMR is now even more agressive, significantly more than SF.
- Captures now effected by LMR, but at reduced rate.
- Improved move sorting
- Weights differ based on whether or not player is in check
- Passed pawns taken better into account
- Added Counter Move Heuristic (not history)
- PVS changes
- Full Window PVS is done until depth 4
- Initial window size is now based on a rough score standard deviation estimation, except if previous scores contain a mate score.
- Selective depth was removed during SMP implementation and has been added back after TCEC version.
- TT entry is now 16 bytes
- Cleaned up code.
- Some comments. Shoutout to Andrew Grant (Ethereal) and SF dev team in this regard, they do this very well and are something to aspire to in this regard.
- Clustering code has been separated from eval function. This is much more generic and modular than it previously was.
- Eval training has been separated from evaluation.cc where it was misplaced. Still have to do the same for the search param training.
- Executable is now self contained. There are no longer separate files for evaluation and search param weights.