perplexity-cli
🧠 A simple command-line client for the Perplexity API. Ask questions and receive answers directly from the terminal! 🚀🚀🚀
A top superhuman chess engine made in c++
git clone https://github.com/Alex2262/AltairChessEngine.gitAlex2262/AltairChessEngine
Altair is a superhuman UCI-protocol chess engine named after the star Altair.
Last Updated 2/8/24
(All rankings are based on single-CPU only for fairness of comparison,
ratings without rankings are either old versions or on lists where the best engine version ranking is not shown)
CCRL Rating List
CEGT Rating List
MCERL Rating list
| Version | CCRL Blitz 2+1 | CCRL 40/15 | CCRL FRC 40/2 | CEGT 40/4 | MCERL |
|---|---|---|---|---|---|
| 7.0.0 | #24 3582 | #28 3476 | #12 3779 | ---- | 3602 |
| 6.0.0 | 3524 | 3430 | 3655 | 3398 | 3504 |
| 5.0.0 | 3207 | 3172 | 3230 | 3043 | 3210 |
| 4.0.0 | 3069 | 3079 | 3082 | 2924 | 3071 |
| 3.0.0 | 3000 | 3038 | ---- | 2874 | 2988 |
| 2.0.0 | 2854 | 2822 | ---- | 2674 | 2656 |
| 1.0.0 | ---- | 2374 | ---- | 2205 | 2469 |
The release page provides different binaries.
Altair's binaries in its newer releases follow the x86-64 Micro-architecture Level scheme.
Most modern computers will support x86-64-v3.
Altair can also be built from the source code with its makefile; however, it's mainly intended for testing purposes on frameworks. Building requires make and a C++20 compiler (Clang is suggested)
Example:
git clone git@github.com:Alex2262/AltairChessEngine.git
cd AltairChessEngine
make
Altair currently supports standard chess and Fischer Random Chess (AKA Chess960)
Altair can be played by connecting it to GUIs such as Arena, Cutechess, Banksia, and other UCI-protocol supporting chess GUIs.
You can also play against Altair on lichess here, but it is not always online. Note: Lichess BOT ratings are deflated compared to their actual human relative strengths.
Altair can be used for analyzing positions with software such as ChessBase and other GUIs.
It can also be used in lichess using its APIs with the external-engine repository.
Altair supports a configurable hash size, thread number, and MultiPV for analyzing multiple variations.
Altair currently uses Bitboards, binary representations of the chessboard, as the internal board representation as of version 4.0.1
Versions 4.0.0 and prior used a mailbox (12x10), array board representation
Altair uses the magic Bitboard approach for decently fast move generation speeds.
Altair utilizes many techniques for its search—the calculation of moves and different positions. At the basis, Altair uses a version of minimax called negamax. On top of this, it uses the traditional alpha-beta pruning algorithm.
Furthermore, different methods of selection, pruning, and reductions enables it to narrow down the amount of positions and moves it has to calculate.
A brief description of Altair's search layout:
It is advantageous for a chess engine to look at the best moves first, so worse moves can be easily pruned and discarded.
Altair's Move Ordering is structured like so:
The evaluation function is a heuristic function used to determine a non-terminal position's value to aid the search. Since the engine cannot possibly calculate all lines to a terminal state, it must estimate the evaluation of a position it reaches.
Altair used a classical evaluation from its creation to version 5.0.8, and currently uses NNUE (Efficiently Updatable Neural Networks) from version 5.0.9 and onwards.
Implemented as NNUE
Altair's neural networks are trained on completely original data.
The data was originally trained from Altair's classical evaluation, which was specifically tuned from zero values from 5.0.0 and onwards.
The current data has been repeatedly trained on previous data in a cycle of reinforcement learning of sorts from an initial state of zero knowledge.
Europa is a neural network trained on over 3.1B FENs including a portion of standard data and DFRC (Double Fischer Random Chess) data. Altair currently has king buckets in the input layer, and material output buckets in the output layer.
Architecture:
+----------+----------+----------+
| Input | Hidden | Output |
| 768x5 -> | 768*2 -> | 1x8 |
+----------+----------+----------+
The x5 in the input layer indicates input buckets,
*2 in the Hidden Layer for perspective,
and x8 in the Output for output buckets.
This is the legacy evaluation with specifically defined terms, features, and values. It is not used anymore due to strength reasons; however, it can still be used by setting UseNNUE to false.
Note: Altair 5.0.0, the last release using a classical evaluation, is stronger than any other version of Altair using a classical evaluation—including current releases with UseNNUE turned off.
Altair's classical evaluation from versions 1.3.6 to 5.0.0 was tuned on public Zurichess data, Lichess data, and Ethereal data.
From version 5.0.1 and onwards, Altair's classical evaluation was completely reset to zero values and re-tuned on self generated data from an initial state of zero knowledge.
These are some evaluation features present in Altair's classical evaluation (a more detailed list can be found in src/evaluation_constants.h):
Altair was created with the help of many people and usage of many resources, and has taken inspiration from other strong and notable engines.
Altair uses @jw1912's Bullet for training neural networks as of version 5.0.9
Altair uses Dale Weiler's incbin utility for including binary files
Versions 1.3.6 to 5.0.8 used @GediminasMasaitis's Texel Tuner for tuning Altair's classical evaluation.
All mentions above are in no particular order
Furthermore, thank you to all contributors and everyone who has helped to test Altair.
Many people have helped me along the development of this chess engine. Without them, Altair would have never reached this stage.
more like this
🧠 A simple command-line client for the Perplexity API. Ask questions and receive answers directly from the terminal! 🚀🚀🚀
Portable chess game in C. Commodore 64, Apple 2, Atari, Oric, Commander X16, curses terminal, etc.
search projects, people, and tags