Model and methodology derived from this paper: O. David, N. Netanyahu, L. Wolf. "DeepChess: End-to-End Deep Neural Network for Automatic Learning in Chess". International Conference on Artificial Neural Networks (ICANN), 2016. https://www.cs.tau.ac.il/~wolf/papers/deepchess.pdf
Dataset: Computer Chess Rating Lists, CCRL-4040.[1239176].pgn, Computer Chess Rating Lists, http://www.computerchess.org.uk/ccrl/
- Download code
- Start Docker
- Open cmd prompt and navigate to project directory
- run this command: 'docker build -t chess:0.0.1 .'
The fen argument is based on the format given in the python chess document. https://python-chess.readthedocs.io/en/latest/ The '/' is replaced with _ in the url. This represents the current board position
The depth determines the depth of the decision tree. One move means one move by the current player and the opponent combined. eg, A depth of 0 means that the algorithm considers all next positions two levels deep (ie, after white moves and then black moves). A depth of 1 means that the algorithm considers all positions 4 levels deep (ie, after white moves, then black moves, then white moves, then black moves). ... and so on.
The model is able to distinguish a "white wins" positions from a "black wins" position with ~84.5% accuracy. However, there are inefficiencies in the algorithm that prevent the tree from going deeper without consuming too much time. This can be improved by hashing the feature extraction for positions that will be evaluated more than once and compressing the network.