16/2/17 Checkers version 1.0
Overview This project is intended to showcase the ability of neural networks to learn to play a game of checkers. No serious attempts have been made to optimise either the code itself or the overall performance of resulting network. This project represents my own work and relies only on standard libraries included with C# .Net framework version 4.5.2.
Background A few months I was looking for some project with which I could expand my rather basic knowledge of C# (I’d really only completed a few introductory tutorials online at this point), when I decided to try and code a simple game which employed a windows form interface to play. To that end I decided to focus on checkers (https://en.wikipedia.org/wiki/Draughts). While the interface I created has gone through several incarnations prior to the one now present in the code my original attempt was limited to only human vs human gameplay. Realising the need for an AI I did some browsing online looking for some suggestions on how to implement one. My first attempt was to include a MinMax player (https://en.wikipedia.org/wiki/Minimax|), which while successful I still found rather simplistic. Wishing to further improve the complexity of my AI player and after some more research online I came across the idea of implementing a neural network as the scoring function within the MinMax algorithm. In particular this method, first proposed by Fogel in his work on the checkers playing bot Blondie24 (https://en.wikipedia.org/wiki/Blondie24), showed that such an implantation led to an expert player capable of beating most humans. Being new to both coding and machine learning I decided that rather than just finding a library that implements neural networks behind the scenes I would implement my own from scratch, with the help of both Wikipedia and stackexchange. The result as shown here is capable of not only playing checkers but also constant improvement though either interaction with a human opponent or playing against itself/a second neural network.
the file NeuralNetPlayer.net contains an example network that while not the best player ever is capable of playing checkers. inorder to use it it needs to be copied to the \bin directory (I'm using Visual Studio and Git so my full path is C:\Users\Alan\Source\Repos\Checkers\Checkers\bin) this is one level higher than the checkers.exe file generated when compiled in visual studio.