Chess-Engine-Lovers Forum
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Go down
supersharp77
supersharp77
Posts : 253
Join date : 2023-04-09
Location : SW USA

Mida v1.2.1 Chess Engine Empty Mida v1.2.1 Chess Engine

Sat Aug 19, 2023 8:01 pm
Mida V 1.2.1 Chess Engine......This project is a chess engine called "Mida" built entirely in C++. The engine is built to work with UCI (Universal Chess Interface), and you can easily find all the commands online.

Rating CEDR=2586
v1.2.1:
* Improved search function, with reverse futility pruning and a more aggressive null move pruning
* New attack evaluation, inspired by Loki engine


https://workupload.com/file/JZFXZXrpJj6





Mida v1.2.1 Chess Engine Mida
supersharp77
supersharp77
Posts : 253
Join date : 2023-04-09
Location : SW USA

Mida v1.2.1 Chess Engine Empty Mida v2.3 Engine

Fri Mar 01, 2024 2:26 am
https://katfile.com/wg08qd0njrdt/Mida_2.3.7z.html


Mida Chess Engines

https://github.com/GiacomoPorpiglia/Mida

"Overview

Mida is a chess engine built entirely in C++. From version 2.0 it uses NNUE for evaluation.
Engine strength
Version CCRL 40/15 CCRL Blitz
2.3 3148 3111
2.2 3088 3088
2.1 2941 /
2.0 / (~2600) / (~2600)
1.2.1 / 2360
1.2 / /
1.1 / 2331
1.0 / 2233
Representation of the board

To represent various board states, most chess engines, including Mida, use bitboards, which are 64-bits unsigned integers: this representation is convenient because there are 64 squares on a chess board: therefore, we can represent the occupied squares, attacked squares ecc... by setting to 1 (or "hot") the bits that correspond to an occupied or attacked square, for example.
This implementation is faster because bit-wise operations are very efficient. You can explore further here, understanding the full potential of bitboards implementation.
Move generation

Move genearation consists in generating all the legal moves for a given side and a given position. While this task may seem easy at first, I can assure you will find many obstacles along the way. To do this, I followed this article that I strongly recommend.
Evaluation

From version 2.0, Mida uses Neural Network evaluation, with HalfKP structure.

The network was very briefly trained, because for now that's not what I want to focus on. Still, it does the job. More specifically, it was trained for 35 epochs on a small set of Leela and Stockfish data of around 600 million positions. A small part of these were from DFRC games, but I haven't had the chance to test Mida in this chess variant, so I don't know how it could perform.
Search

The search is based on Alpha-beta pruning algorithm, with various pruning and reduction techniques to reduce the number of visited nodes and increase the reached depth:

Move ordering (MMV/LVA)
History heuristic
Zobrist hashing
Reverse futility pruning
Null move pruning
Razoring
Mate distance pruning
Late move pruning
Futility pruning
SEE (static exchange evaluation) used in move ordering as well as pruning for quiet and non-quiet moves
Late move reduction
Delta pruning


How to use

To compile the code, just run the commands:

git clone https://github.com/GiacomoPorpiglia/Mida
cd Mida/src
make
./Mida

The engine is built to work with UCI (Universal Chess Interface), and you can easily find all the commands online. The most useful are:

"position startpos" to initialize the engine to the starting position
"position fen <fen_string>" to load a position from its FEN string
"go perft <search_depth>" to run a performance test (count how many positions occur at a certain depth starting from a certain position)
"go depth <search_depth>" to get the best move according to the engine up to a certain depth <search_depth>, starting from a previously loaded position

Special thanks

For this project I used a lot of awesome resources:

Chess programming Wiki
Chess programming Youtube Series by Maksim Korzh
dshawul and his NNUE-probe library
rafid-dev, author of the Rice engine, who clarified some doubts about NNUEs.
SaccoVinc for creating Mida's logo

Also, thanks to Graham Banks, admin of CCRL, for helping me compile the code properly so that it can execute also on machines without GCC installed, and to all the testers for the useful work they do.
Donations
Thank you for supporting Mida developement and training through PAYPAL"


Mida v2.3: https://github.com/GiacomoPorpiglia/Mida/releases/download/v2.3/mida_engine-2.3.exe


Mida v2.2: https://github.com/GiacomoPorpiglia/Mida/releases/download/v2.2/mida_engine-2.2.exe:


Mida v2.1: https://github.com/GiacomoPorpiglia/Mida/releases/download/v2.1/mida_engine-2.1.exe


Mida v2.0 NN: https://github.com/GiacomoPorpiglia/Mida/releases/download/v2.0/mida_engine-2.0.exe



















Mida v1.2.1 Chess Engine Logo_no_bg
Back to top
Permissions in this forum:
You cannot reply to topics in this forum