Supra 24.0 pro 64bit:
- Special version with search extension disabled.
- More efficient compiler used in binary creation.
My project in chess engine was and is a challenge that I set myself as an answer to the passion that i always had for chess. Supra Engine is a program written by an amateur programmer (and amateur player!). Being a genuine program suffers a little (yet!) on the performance of its intelligence strategic-positional. However in its first version, SUPRA engine, already knows all the rules of chess, including past pawns, small and large castling and promotion of pawns, having already won a few amateur chess programs, for example, XADRECO.
The current version Supra 24.0 is now much stronger than Prédateur 0.1.5
Type: UCI chess engine (only logical program, not have graphic structure, so need a graphical chess program in order to interfere and view. You can connect with any graphics program Chess, for example, fritz, ChessBase Light, Hiarcs, among others).
Language: C + +
Size: approx. 280 000 lines of code provided to version 22.2 (15 000 for version 1.0)
executable size: approx. 5.0 MB
Creator and implementer: Pedro Mourão Correia (Creator and owner of the mark SUPRASISTEMA
Current operational characteristics:
- SUPRA is based on an algorithm (Base algorithm) of analysis of material flow similar to the usual minimax.
- Additionally SUPRA still have the alpha beta algorithm with wormhole filtering, Null move pruning, Turbo search, vertical filter, positive/negative float filter and deep memory in a way to cut the number of nodes examined and traverse the search tree faster. Supra has also Internal iterative deepening, Principal variation search, Iterative deepening and killer moves heuristic to sorting the nodes in order of eficience
- SUPRA also has fixed positional matrices that tend in general to make the pieces occupy the center and help pawns moving for promotions. There are still dynamic arrays configurable through the option aggressiveness and temperament that help SUPRA analyze first most advantageous positions. SUPRA now also has extra evaluation to better distinguish and differentiate positions more or less advantageous. the extra evaluation factors are varied such as pawn structure, the number of degrees of freedom and attack to kings.
Explanation of operation of the algorithms used in SUPRA:
Algorithm Base*: Equivalent to the minimax with evaluation function based on material gradient and pawn structure.
Filtering algorithms in order of efficiency:
1- Alpha-beta algorithm (filtering horizontal / vertical: all nodes hereafter condition alpha>=beta will be discarded without loss of accuracy. 100% sure that is the answer is the same but much faster.
2- Wormhole pruning*: works within the alpha beta and can not exist without it. Its effect is increasingly effective as the deph will increase as more cuts trough relationship with prior levels of deph are possible. 100% sure that is the answer is the same but much faster than regular alfa beta algorithm.
3- Null move pruning: the opponent instead of throwing passes and leaves Supra play (with deep = deep-2.
If Supra still can not catch beta> alpha then is not worth analyzing in depth this nodethis filtering is not 100% sure but I think surely be very safe
4- TURBO search*: Turbo filter dynamically enhances the effect of the positive float filter since it allows an fragmentary increase of alpha allowing a much faster scanning of tree for each alternate move of SUPRA in deph=1. with IID, Turbo (in SUPRA 14.0) is much enhanced since the increment value equals 1/3 of the pawn over previously computed value for the variant (without risk: because the value of this is pre calculated initially with deph = deph-2)this filtering is not 100% sure but I think surely be very safe .
5- Vertical filter*: reduces deph locally whenever we are in a "region" of the search tree in which SUPRA is definitely not just benefit so the research need not be as expanded as it is highly unlikely to see a rise Thurs alfa0 (best value found so far) However the study only deph ends in pairs so with the response of the enemy to ensure the setting. (Vertical filtering: only the child nodes are discarded). this filtering is not 100% sure but I think surely be very safe and only happens above deph 7.
6- Positive and negative float filter*: this filter works in sync with alpha and beta acts through a condition of sufficiency: if the value of alpha is very high (high advantage for SUPRA) or very low beta (high advantage to the opponent ) suspending the search engine in this section even if no have the condition alpha> = beta. (Filtering horizontal / vertical). this filtering is not 100% sure but I think surely be very safe.
7- Deep memory: 100% secure
Sorting algorithms of nodes in order of efficiency:
1- Principal variation search (PVS): 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. 100% safe.
2- Internal Iterative Deepening: IID permits a higher sorting of children nodes of each parent node since it allows to identify the most promising node through a pre scan with deph=deph-2 or deph=deph-4 depending on the original deph. This pre-scan is very effective saving lots of time to research and enhancing the alpha beta algorithm. IID make stronger the capabilities of TURBO filt of SUPRA. IID is present since version 13.0 and was greatly improved in version 14.0. 100% safe.
3- killer moves heuristic: At all levels deph whenever there is a court of alpha beta SUPRA memorizes the node corresponding to this cut. And whenever a node starts a expand (analyzing the children of a node) SUPRA always begins by examining first the last killer move of this level deph . 100% safe.
4 - Iterative Deepening: 100% safe.
* algorithms totaly designed by me or independently designed by me (if already available)
All code of SUPRA program was designed and executed by me.
Central objective of the program SUPRA:
Develop an alternative algorithm and 100% original (and starting from a zero base) capable of competing with the usual algorithms of the chess engine even the time for it tends to infinity ...
1- Early January 2010: Birth of the idea of creating a chess engine.
2- During the first week of January 2010: Referral to Web sites of programming and amateur chess engines. Surface contact with some programming languages (pascal, java and C++).
3- Second half of January 2010: In-depth study of C++
4- Early February: Birth of the first test (main 1)
5- From February to August 2010: Creation of the program algorithm. Massive increase in the size of the code. Many syntactic errors to amend and some of the most obvious logical errors resolved. Many sleepless nights ...
6- From September to December 2010: Consolidation of the algorithm. Slow recovery from logical errors in the program. One hell of puzzles.
7- 3 January 2011: Birth of the first version of the SUPRA chess engine .
I should mention the importance of the following sources:
Silvestro Fantacci website for their help in understanding of UCI protocol
Manual "Notes on Programming in C / C "by Paulo Jorge Santos and Baltarejo, help me to begin understanding the c++ language http://www.dei.isep.ipp.pt/~jsantos/docs/Sebenta-cpp-04-2006.pdf
(you have to paste this adress in address bar)
The book "Programming in C + +" by Joyanes Luis aguilar in resolution of some problems with the program.
My name is Pedro and i am addicted to chess.
Sometimes I play with friends and relatives
I am very assiduos player in chessbase (www.playchess.com) with nickname SUPRASISTEMA.
I work on studies center SUPRASISTEMA as teacher of mathematics and physics.
I am an official member of TORR high IQ society (www.torr.org) and of the international high IQ society (www.highiqsociety.org)
I deeply appreciate the comments of support and encouragement as well as all tournaments conducted by various people which I highlight (in Immortal chess forum: herbanmusic, IndianaJones, Dydolec, shahinjy, juandelacruza chessgod101, Fidelio, Silversurfer, CS29797, Behovodec, Кевин, batatas, Adam5 and more!) and (Toposcar in playchess.com) and (Paul and Saemon_Havarian in Torre).
Thanks also to Oliver Deville for having made the first tournament on a grand scale in which SUPRA.