Official Repository of the Crazyhouse-Bot CrazyAra which is powered by a Deep Convolutional Neural Network
Clone or download
QueensGambit Merge pull request #22 from Matuiss2/master
Final cleaning - reformatting(for now)
Latest commit 6d3e76e Jan 19, 2019

README.md

CrazyAra - Deep Learning for Crazyhouse

                                  _                                                                      
                   _..           /   ._   _.  _        /\   ._   _.                                      
                 .' _ `\         \_  |   (_|  /_  \/  /--\  |   (_|                                      
                /  /e)-,\                         /                                                      
               /  |  ,_ |                                                                                
              /   '-(-.)/       An open-source neural network based engine for the chess variant         
            .'--.   \  `        Crazyhouse. The project is mainly inspired by the techniques described   
           /    `\   |          in the Alpha-(Go)-Zero papers by Silver, Hubert, Schrittwieser et al.    
         /`       |  / /`\.-.   It started as a semester project at the Technische Universität Darmstadt 
       .'        ;  /  \_/__/   as part of the course "Deep Learning: Architectures & Methods" held by   
     .'`-'_     /_.'))).-` \    Prof. Kristian Kersting, Prof. Johannes Fürnkranz et al. in summer 2018. 
    / -'_.'---;`'-))).-'`\_/                                                                             
   (__.'/   /` .'`              Developers:           Johannes Czech, Moritz Willig, Alena Beyer  
    (_.'/ /` /`                 Source Code (GitHub): QueensGambit/CrazyAra-AI (GPLv3-License)            
      _|.' /`                   Website:              http://www.crazyara.org/                           
jgs.-` __.'|                    Lichess:              https://lichess.org/@/CrazyAra                           
    .-'||  |                    ASCII-Art:            Joan G. Stark (http://www.oocities.org/spunk1111/)                  
       \_`/                     ASCII-Font:           Mini by Glenn Chappell 4/93, Paul Burton           

Official Repository of the Crazyhouse-Bot CrazyAra which is powered by a Deep Convolutional Neural Network and is compatible with the Universial-Chess-Interface (UCI).

Installation Guide

Please follow the instructions in the wiki-page at:

Documentation

For more details about the training procedure visit the wiki pages:

You can also find our original project proposal document as well as our presentation about CrazyAra 0.1:

How strong is CrazyAra 0.3.1?

CrazyAra 0.3.1 played multiple world champion Justin Tan (LM JannLee) at 18:00 GMT on 21st December in five official matches and won 4-1. You can find a detailed report about the past event published by okei here:

CrazyAra 0.3.1 was also put to the test against known crazyhouse engines:

License

This source-code including all project files is licensed under the GPLv3-License if not stated otherwise.

See LICENSE for more details.

Project Links:

Main libraries used in this project

  • python-chess: A pure Python chess library
  • MXNet: A flexible and efficient library for deep learning
  • numpy: The fundamental package for scientific computing with Python
  • zarr: An implementation of chunked, compressed, N-dimensional arrays

Human influence

CrazyAra's knowledge in the game of crazhyouse is only based on human played games of lichess.org database.

The most active players which influence the playstyle of CrazyAra the most are:

  1. mathace
  2. ciw
  3. retardedplatypus123
  4. xuanet
  5. dovijanic
  6. KyleLegion
  7. LM JannLee
  8. crosky
  9. mariorton
  10. IM opperwezen

Please have a look at Supervised training for more detailed information.

Links to other similar projects

chess-alpha-zero

In CrazyAra v.0.1.0 the Monte-Carlo-Tree-Search (MCTS) was imported and adapted from the following project:

For CrazyAra v.0.2.0 the MCTS was rewritten from scratch adding new functionality:

  • Reusing the old search tree for future positions
  • Node and child-nodes structure using numpy-arrays
  • Always using mate-in-one connection if possible in the current search tree

64CrazyhouseDeepLearning

Leela-Chess-Zero

Research links:

AlphaGo Zero paper: https://arxiv.org/pdf/1712.01815.pdf

Journal Nature: https://storage.googleapis.com/deepmind-media/alphago/AlphaGoNaturePaper.pdf

DeepMind Blogpost: https://deepmind.com/blog/alphago-zero-learning-scratch/

How AlphaGo Zero works - Google DeepMind https://www.youtube.com/watch?v=MgowR4pq3e8

Deep Mind's AlphaGo Zero - EXPLAINED https://www.youtube.com/watch?v=NJBLx29JuHs

A Simple Alpha(Go) Zero Tutorial https://web.stanford.edu/~surag/posts/alphazero.html

AlphaGo Zero - How and Why it Works: http://tim.hibal.org/blog/alpha-zero-how-and-why-it-works/

Simple Chess AI implementation https://github.com/mnahinkhan/Chess/blob/master/Chess/chess.py