# Hazel A hybrid Classical/Machine-learning oriented chess engine in Rust. [![Build Status](https://travis-ci.org/jfredett/hazel.svg?branch=master)](https://travis-ci.org/jfredett/hazel) [![Coverage Status](https://coveralls.io/repos/github/jfredett/hazel/badge.svg?branch=master)](https://coveralls.io/github/jfredett/hazel?branch=master) [![crates.io](https://img.shields.io/crates/v/hazel.svg)](https://img.shields.io/crates/v/hazel.svg) [![Maintenance Status](https://img.shields.io/badge/maintenance-actively--developed-brightgreen.svg)](https://img.shields.io/badge/maintenance-actively--developed-brightgreen.svg) ## Summary Most chess engines use a 'classical' approach to playing the game of chess. This approach is incredibly strong and leads to play that can routinely beat humans. Stockfish is among the best known examples of this kind of engine, and it sports a [ELO rating](http://www.computerchess.org.uk/ccrl/4040/rating_list_all.html) of 3390. To compare, the best human player in the world [has an ELO ratind of 2837](https://ratings.fide.com/card.phtml?event=1503014). Recently, the [AlphaZero](https://en.wikipedia.org/wiki/AlphaZero) project from Google has been used to handily beat Stockfish into the collective dirt. Winning, out of 100 games, 25 games, and drawing on all remaining games. AlphaZero is part of Google's "DeepMind" project and uses [Tensorflow](https://www.tensorflow.org/) library to implement various deeplearning techniques to accomplish this. Hazel is neither of these programs. Hazel will never be either of these programs. What Hazel is, is an experiment in combining the Stockfish approach with the AlphaZero approach. Specfically, Hazel aims to: 1. Use Machine Learing Techniques to try to achieve better approximate position ordering for scoring. 2. Use classical evaluation techniques to precisley evaluate movesets ordered by #1. 3. Use Machine Learning to evaluate 'past' the end of the depth of search to spot lines that may be locally-poor but offer better 'long term' options -- essentially leveraging machine learning to be able to evaluate positions at a higher 'strategic' level. 4. Use classical evaluation to further refine those results, repeating from #1 until alotted time is exceeded. Additionally, Hazel intends to: * Implement common chess protocols. * Allow for relatively easy 'strategy' plugins to be developed, using the tools mentioned above. * Be relatively quick * Ideally be able to compete with relatively high level players (2400+ ELO) * Be able to recognize and evaluate positions and various 'tactics' they employ (so it may be used as a training and analysis tool beyond the usual 'blunder/mistake' marking most tools provide). Hazel is a one-person research project; it is unlikely that it will achieve all it's goals. Ultimately it's likely that **this document is full of lies**, whenever the author feels that to no longer be the case; these statements will be removed.