

Supra chess engine
The first Portuguese chess engine

Introduction
Supra chess is the first Portuguese chess engine.
The source code is totally original, open, written in c ++ and is available to download at the bottom of webpage. ↓
Creator and developer: Pedro Mourão Soares Correia.
News
Supra 29.1 is available for download below on the page↓
- More efficient executable due to the use of a compiler with improved features.
Supra 29.0 is available for download below on the page↓
Among the improvements, the following stand out:
- Substantial improvement of the Shashin algorithm, through implementation in the final nodes of the decision process based on the algorithm's specific positional criteria, as it is executed at levels 0 and 1.
- Unlocking the imposition of a maximum pawn value for positional evaluation in the end nodes means that positional evaluation can assume values greater than a pawn, leading to effective material sacrifices in the end nodes in favor of positional criteria, namely degrees of freedom, compactness, and king defense criteria, among others.
- A true conception of degrees of freedom at levels 0 and 1 of deeph. Through a check_king function over all possible moves.
- Enhanced understanding of endgames with minor pieces, with or without pawns.
- Substantial improvement of the Late move reductions algorithm and application at all depth levels. Implementation of a new algorithm called early move reductions.
Datasheet:
• Type: UCI chess engine (that is, a totally logical program, without its own graphic structure, requiring a graphic chess program to be able to interfere and visualize. It can be connected with any graphic chess program, such as fritz , light chessbase, hiarcs, among others).
• Language: C ++
• Size: approx: 15 000 lines of code foreseen for version 1.0 executable size: approx. 1.5 MB.
• Creator and implementer: Pedro Mourão Correia.
• Year of creation: 2010.

Algorithms used:
Main Algorithm:
- *Base algorithm (equivalent to minimax): A recursive algorithm that, for each node, finds the strongest child (min or max) according to the perspective of the side being played. This Base algorithm was designed by me in 2011 in Version Supra 2.0. Later I realized it had already been discovered much earlier!
Algorithms related to the base algorithm:
- Alpha-beta algorithm: when Supra analyzes the children of a given node, it stops the search whenever beta <= alpha, because even if beta could still decrease further, it doesn't matter, as it won't be relevant to increasing alpha. When this cutoff occurs, it means that the node in question is no longer better than the strongest node at that depth level and section of the tree.
- *Wormhole: This algorithm applies the same condition as the alpha beta algorithm, but extends it to all previous levels: For example, at the level deph=5: the condition instead of "if (beta5 <= alpha4)" is "if (beta5) <= alpha4 || beta5 <= alpha2 || beta5 <= alpha0)". The gain is overwhelming!
Data sorting algorithms to speed up cuts in the alpha beta algorithm:
- Internal Iterative Deepening: This algorithm performs successive full scans with increasing depth with each scan. This allows for better grouping of nodes in order (improving alpha beta cutting) and better management of the time spent searching.
- Killer moves: Allows Supra to always analyze first the move that caused the alpha beta cut in the previous section at the same depth level. Often, even in different positions, the same piece move produces an alpha beta cut if it previously did so as well.
Conditional filtering algorithms:
- *vertical filter: Powerful filter of variants frankly bad from deph=3.
- *Turbo filter: Allows SUPRA use a method of searching a bit faster by staged increments of alpha.
Pre-search filtering algorithm with lower depth level:
- Null move prunning: The side to move do not move and leaves the opponent play: if the result of this analysis (with deph = deph-2) is still bad for the opponent exists a full cut at this node.
- Late move redutions: Late move reductions analyze the first children of a node with normal deph. If after the analysis of these first (about 5) nodes there is no alpha beta cut the research is continued but now with a lower deph. This procedure saves a lot of time in research, as alpha beta cutting is normally not produced other than in the first nodes.If a cut is produced then Supra will have to re-analyze the remaining nodes with normal deph. Supra uses a more radical version of this algorithm and only searches for the node again with normal deph if that node produced alpha beta cut and not all nodes indiscriminately. In other words, if alpha beta cut with lower deph is produced in a given node (after the initial 5) then supra analyzes that node with normal deph and then if it is not confirmed the alpha beta cut Supra analyzes the next node with lower deph and executes the same procedure.
- Principal Variation Search: Supra for each node starts with a scan with very reduced size window (<1) if the beta value does not get out of the window the search with unlimited window is not performed and Supra saves a lot of time searching for this node.
*: algorithms discovered by me or independently discovered by me.
