Skip to content

Latest commit

 

History

History
113 lines (94 loc) · 5.58 KB

README.md

File metadata and controls

113 lines (94 loc) · 5.58 KB

Elixir Chess Engine


License
GitHub release (latest by date) Commits since latest release

Elixir is a UCI-compliant chess engine developed in C++. It is the successor of my previous engine, Shuffle, and is under development with the goal of achieving an ELO rating of 3500+

Ratings

CCRL BLitz CCRL 40/15
v3.0 - -
v2.0 3018 2938
v1.0 2828 -

Instructions to build

Building Elixir requires Make and latest versions of clang++ or g++ with C++20 support

make CXX=<compiler>
  • Replace <compiler> with your preferred compiler - either clang++ or g++
    • If not specified, the compiler defaults to clang++
  • Upon successful compilation, the binary file will appear in the root directory as elixir or elixir.exe depending on your operating system
    • You can also give a custom name to the binary by specifying it as EXE=<name> during compilation

Alternatively, you can download pre-compiled binaries from the Releases page

Note

Elixir utilizes a third-party tool - INCBIN to embed NNUE weights into the binary. However, INCBIN is not fully compatible with clang++ on Windows. If you're using clang++ to compile Elixir on a Windows system, ensure that the nnue.bin file is located in the same directory as the compiled binary.

UCI Options

Name Type Default value Valid values Description
Hash integer 64 [4, 1048576] Memory allocated to the Transposition Table (in MB).
Threads integer 1 [1, 1024] Number of Threads used to search.

Features

  • Search : Standard PVS with Quiescence Search and Iterative Deepening
    • Aspiration Windows Search
    • Check Extension
    • Repetition Draw Detection
    • Insufficient Material Draw Detection
    • Mate Distance Pruning
    • Transposition Table (TT) cutoff
    • Internal Iterative Reduction
    • Razoring
    • Reverse Futility Pruning
    • Null Move Pruning
    • Late Move Pruning
    • Futility Pruning
    • Static Exchange Evaluation (SEE) Pruning
    • Late Move Reductions
    • Improving Heuristic
  • Move Ordering
    • TT Move ordering
    • Good and Bad Captures ordering using SEE
    • Killer Move Ordering
    • Counter Move History
    • Continuation History
      • 1-ply Continuation History
      • 2-ply Continuation History
    • Butterfly History
  • Evaluation : Neural Network based evaluation (NNUE)
    • Architecture: (768 -> 1024)x2 -> 8
    • Material Output Buckets: 8
    • Input King Buckets: $${\color{yellow} \text{Not implemented yet}}$$
    • Data Size: 3.3B positions

Important

As of version 2.0, Elixir no longer utilizes Hand-Crafted Evaluation (HCE). The following information is retained here for reference purposes.

  • Evaluation : Hand Crafted Evaluation (HCE) using texel-tuned values
    • Tapered Evaluation
    • Material + Piece Square Table Evaluation
    • Piece Mobility Evaluation
    • Supported Pawn Bonus
    • Pawn Duo Bonus
    • Pawn Bonus attacking opponent Majors & Minors
    • Pawn Bonus if opponent has no Majors
    • Stacked Pawn Penalty
    • Isolated Pawn Penalty
    • Knight Outpost Bonus
    • Bishop Pair Bonus
    • Passed Pawn Bonus
    • Rook Open & Semi-Open File Bonus
    • King Open & Semi-Open File Penalty
    • King Zone Attacker Bonus
    • Pawn Shelter Bonus
    • Pawn Storm Penalty
    • Tempo Bonus

Acknowledgements

  • A special thanks to Ciecke, Zuppa, Yoshie, Shawn, A_randoomnoob, Gabe and everyone else on the StockFish Discord server for their continuous help in developing and bug-fixing Elixir.
  • This project would never have been where it is right now, if it was not for the help of everyone on my OpenBench instance - Aron, Yoshie, Shawn, Mid. Massive CPU time donations by these guys is what enabled me to heavily test and tune Elixir.
  • Andrew Grant for developing the OpenBench platform.