Skip to content

Java chess AI using Principal Variation Splitting, Piece Square Tables, Opening Book and Tapered Evaluation.

Notifications You must be signed in to change notification settings

Wazzabeee/chess_AI

Repository files navigation

Chess Engine : PVS

About

This chess AI was developed by Justin Aubin and myself for an end-of-term project part of 8INF878 : AI course at UQAC. You can find the written report about this project (in French) in the repo.

It uses the UCI protocol. We implemented :

  • principal variation splitting (distributed algorithm)
  • depth limited minimax with fail-soft alpha-beta pruning
  • material evaluation
  • tapered evaluation
  • piece square tables
  • transposition table
  • quiescense search
  • move ordering
  • opening book (20 000 games)

It can deliver a move in less than a second at depth 5 on most computers. If your computer has lot of cores, you may want to try at depth 7 and modify the 1 second time limit in Timer.java.

Thanks to it we won the small tournament organized between the AI of the students of the class.

This has been possible thanks to Chesslib for the chess rules and Carballo for the reading of Polyglot files.

How to use

The repo is a Maven project. Use the IDE of your choice to play with it. You can play against the AI using the console and UCI commands or build a .JAR file and use it on a Graphical User Interface supporting UCI protocol : Arena.

Stats on Chess.com

Games history can be found here.