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] and [|linear algebra]. 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. It started to play on-line at HGM's Online Engine Blitz Tourneys in April 2017. || toc =Selected Features=
 * Home * Engines * Winter**
 * [[image:ZurichInWinter.jpg link="http://se.ethz.ch/~meyer/images/zurich/lake.jpg"]] ||~ || **Winter**,
 * [|Winter] in [|Zurich], ETH Zurich view ||~ ||^ ||

Board Representation
> BMI2 - PEXT Bitboards
 * Bitboards
 * 8x8 Board
 * Fancy Magic Bitboards

Search

 * Fail-Hard Iterative Deepening
 * Alpha-Beta Principal Variation Search
 * Transposition Table
 * Move Ordering is based on the linear part of a Logistic Regression [|classifier] aka [|cluster analysis]
 * The classifier is trained via temporal difference learning to predict whether a move will return beta
 * Classifier considers TT move, killers, move type, from square, target square, capture target, SEE, target square of last move, check and changes between forcing and unforcing moves (a capture is more likely after another capture)
 * Selectivity
 * Null Move Reductions
 * Static Null Move Pruning
 * Late Move Reductions
 * Futility Pruning
 * Quiescence Search
 * Static Exchange Evaluation

Evaluation

 * Non standard approach relies on a [|mixture model]
 * Assumes positions encountered in search come from some set of k [|Gaussians]  [[image:320px-Normal_Distribution_PDF.svg.png link="https://en.wikipedia.org/wiki/Gaussian_function#/media/File:Normal_Distribution_PDF.svg" align="right" caption="A set of Gaussians"]]
 * Mixture model is trained via [|EM algorithm] either on database games or positions sampled from search
 * For each Gaussian a separate evaluation function is trained. When the evaluation function is called the relative probability a position stems from each Gaussian 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
 * Parameter weights are trained via a mixture of reinforcement (temporal difference) learning and supervised learning
 * Minimizing the [|cross entropy] loss of a Logistic Regression model for each of the k Gaussians
 * Training converges fast due to [|linear model] at the heart

Misc

 * Perft
 * Print pretty Unicode chess boards

=Forum Posts= > [|Re: Winter Released] by Jonathan Rosenthal, CCC, January 09, 2018 > [|Windows version released] by Jonathan Rosenthal, CCC, January 23, 2018
 * [|Re: Tapered Eval between 4 phases] by Jonathan Rosenthal, CCC, October 16, 2017 » Tapered Eval
 * [|Winter Released] by Jonathan Rosenthal, CCC, January 08, 2018

=External Links=

Chess Engine

 * [|GitHub - rosenthj/Winter: UCI Chess Engine]

Misc
> feat. [|Tommy Shannon] on bass and [|Uncle John Turner] on drums > media type="youtube" key="8P0wdTKMDyo"
 * [|Winter from Wikipedia]
 * [|Winter - Wiktionary]
 * [|winter - Wiktionary]
 * [|Winter (disambiguation) from Wikipedia]
 * [|Summer and Winter Schools] | ETH Zurich
 * [|Wintel from Wikipedia]
 * [|AI winter from Wikipedia]
 * [|Winter (surname) from Wikipedia]
 * [|Edward Winter (chess historian) from Wikipedia]
 * Johnny Winter - Winter Ballade, [|ina.fr] 1970, [|YouTube] Video

=References= =What links here?= include page="Winter" component="backlinks" limit="60"
 * Up one Level**