From Chessprogramming wiki
Jump to: navigation, search

Home * Engines * Winter

an UCI compliant open source chess engine by Jonathan Rosenthal, written in C++, released on January 08, 2018 under the terms of GPL Version 3. Winter is inspired by machine learning techniques, as applied in move ordering and in particular in evaluation, and heavily relies on C++ templates but not on any library aside from STL as it comes with its own implementations for statistics [2] and linear algebra [3]. Winter started its life in 2016 as a group project at ETH Zurich in a course on parallel computing along with Jonas Kuratli and Jonathan Maurer - the current release with Jonathan Rosenthal as sole author has removed the parallel portion of the code [4]. It started to play on-line at HGM's Online Engine Blitz Tourneys in April 2017 [5].

Selected Features


Board Representation

BMI2 - PEXT Bitboards



  • Non standard approach relied on a mixture model [7], and since Winter 0.3 on Fuzzy C-Means, a more direct generalization of a tapered eval with disjoint phases aka clusters [8] [9]
    • Assumes positions encountered in search come from some set of k-means clusters [10]
    • Model is trained via EM algorithm [11] [12] either on database games or positions sampled from search
    • For each cluster, a separate evaluation function is trained. When the evaluation function is called the relative probability a position stems from each cluster is estimated, the evaluation functions are computed and the final score is returned as the weighted average - a generalization of tapered eval with game phases [13]
  • Parameter weights are trained via a mixture of reinforcement (temporal difference) learning and supervised learning
  • As of Winter 0.6.2, the evaluation function relies on a neural network with two main parts. The first part is a non-standard convolutional neural network which uses sparsity similarly to NNUE. This convolutional network is used to calculate pawn structure features, so the output can be reused very often as it gets stored in a separate hash table with a high hitrate. The second part is a fully connected network which has as input the output of the convolutional network as well as a set of handcrafted features standard to classical engines, mostly a subset of the features from before neural networks were added to Winter [14]


Forum Posts

2017 ...

Re: Winter Released by Jonathan Rosenthal, CCC, January 09, 2018
Windows version released by Jonathan Rosenthal, CCC, January 23, 2018

2020 ...

Re: Winter by Jonathan Rosenthal, CCC, July 09, 2021

External Links

Chess Engine


feat. Tommy Shannon on bass and Uncle John Turner on drums


Up one Level