Rating Chess Engines Diary CEDR=3426
Renegade is a chess engine written in C++ using Visual Studio 2019. It values readability and simplicity, and uses the UCI protocol to communicate, making it easy to connect it to chess frontends. Under construction since October 7, 2022 and released publicly on January 15, 2023.
The project can be compiled using Visual Studio 2019 with C++20 features enabled. The engine makes heavy use of `popcnt` and `lzcnt` instructions, thus only processors from 2013 or so are supported, but the calls to these instructions are wrapped in a custom function, and replacing them with something more compatible is relatively straightforward. Currently only Windows binaries are compiled, but in the future I would like to make them for Linux as well.
v.1.1.0:
It's been a while, but it's time for another release!
Renegade now features a bigger and much better neural network. The final iteration was trained on over 2.7 billion positions obtained from self-play of various development versions. FRC support was added, and the training dataset now includes a small portion of DFRC games as well.
A few search improvements had been made, but the more notably, a big part of the code was rewritten now that I'm more experienced with engine development. This has little effect on playing strength, but it is good for my sanity, and for everyone who dares to look at the source code, though still plenty of work left to be done in this regard.
As always, huge thanks to everyone who ran tests, tournaments, and to those who helped me and gave me feedback, I appreciate you all!
Changelog
Neural net improvements
Regenerated the whole dataset, now amounting to over 2.78 billion positions
Increased arch size, now (768->1024)x2->1
Using QA=255 quantization again with improved order of operations
Training with tapered WDL proportion
Search improvements
Added double extensions
Added multicut for non-PV nodes
Adjusting reductions in LMR based on cutoff count
Changed RFP margin calculations when improving
When not improving, reduced move counts before LMP kicks in
Reduced default aspiration window size
Not performing futility pruning if the history score is high enough
Added FRC (and DFRC) support
Simplifications
No longer reducing less when giving check
Removed fallback move ordering method when history score is 0
Removed additional en passant threat calculations when previous move was a pawn double push
Support for search parameter tuning
Performance improvements
Using static move lists in move generation
Partial insertion sort for faster move ordering
Not recalculating the whole hash after a null move
More efficient calculation of threats
Prefetching for null-move pruning
Added a proper (but not great) way of checking
Refactored code
Saner separation of files
Rewritten position handling
Updated WDL models
Progression testing: (10s+0.1, Pohl.pgn)
Score of Renegade 1.1.0 vs Renegade 1.0.0: 520 - 87 - 393 [0.717] 1000
... Renegade 1.1.0 playing White: 417 - 3 - 81 [0.913] 501
... Renegade 1.1.0 playing Black: 103 - 84 - 312 [0.519] 499
... White vs Black: 501 - 106 - 393 [0.698] 1000
Elo difference: 161.1 +/- 17.2, LOS: 100.0 %, DrawRatio: 39.3 %
You know the drill, expect less for balanced books and against other engines.
The provided binaries are targeting x86-64-bmi2 (v3 microarchitecture level).
Renegade 1.0.0 results:
Counter 5.5 | 3/6 | +0 | 6 Games |
Avalanche 2.1.0 | 2.5/4 | +1 | 4 Games |
Midnight 9 | 2/4 | +0 | 4 Games |
Starzix 4.0 | 2/4 | +0 | 4 Games |
Halogen 11 | 2/3 | +1 | 3 Games |
Obsidian 10.0 | 1.5/3 | +0 | 3 Games |
LTChess 9.3 | 1.5/3 | +0 | 3 Games |
Pawn 3.0 | 1.5/3 | +0 | 3 Games |
Minic 3.41 | 1.5/3 | +0 | 3 Games |
Arasan 24.1 | 1/3 | -1 | 3 Games |
Texel 1.11 | 1/3 | -1 | 3 Games |
Uralochka 3.41 dev1 | 1/3 | -1 | 3 Games |
Pedantic 0.6.2 | 2/2 | +2 | 2 Games |
Sloth 1.6 | 2/2 | +2 | 2 Games |
Puffin 2.0 | 2/2 | +2 | 2 Games |
Fatalii 0.6.0 | 2/2 | +2 | 2 Games |
Lynx 1.2.0 | 2/2 | +2 | 2 Games |
Shuffle 5.0.0 | 2/2 | +2 | 2 Games |
Jet 1.1 | 2/2 | +2 | 2 Games |
Leorik 3.0 | 1.5/2 | +1 | 2 Games |
github:https://github.com/pkrisz99/Renegade/releases/tag/v0.12.0
Comments
Post a Comment