Heimdall - UCI chess engine written in Nim.
Author: Mattia Giambirtone
More info
Heimdall is available on Lichess under its old name (Nimfish), feel free to challenge it! I try to keep the engine running on there always up to date with the changes on the master branch
More info
Heimdall is available on Lichess under its old name (Nimfish), feel free to challenge it! I try to keep the engine running on there always up to date with the changes on the master branch
Heimdall 1.4.0 what's new?
Fixed a critical bug in the alpha-beta implementation of both PVS and Quiescence where a beta cutoff would not be considered an alpha raise, causing the best move not to be stored (see test above)
Merged a slightly improved neural network trained on the new data from mistilteinn-v2 using a training schedule cooked up by @ciekce, thanks!
Implemented ttpv tracking: nodes that were previously part of a principal variation are now reduced less aggresively
Some fixes to time management which should hopefully address the time loss issues in high concurrency environments at fast time controls (bullet) like at CCC (Thanks Andrew for the precious debugging help and time on the chesscom machines!)
Both RFP and NMP are now avoided in nodes that were previously in the principal variation
History depth is now increased if bestScore beats beta by some threshold
Added threat indexing to capture history
Added support for static contempt with the Contempt UCI option
TT scores are now used in qsearch standpat cutoffs when possible
The ShowWDL option was renamed to UCI_ShowWDL to comply with the UCI specification
Tweaked the initial size of the aspiration window
Improving is no longer true if we were in check 2 plies ago
The evaluation is now immediately cached to the TT if we didn't get a hit in the current node
Separated the weights used for material scaling from the ones used for SEE and made both sets tunable
Parameterized RFP to allow tuning the improving margin separately
Implemented mate distance pruning
Search is reduced less when improving is true
Futility pruning is now more aggressive
Fixed an overflow bug when handling mated TT scores
Fixed some rare PV reporting bugs and optimize clearing the triangular table
The position's static evaluation is now returned instead of 0 when hitting the ply limit
When SIMD is available (in the avx2 and avx512 targets), it's used to speed up refreshes and finny table updates
SEE is not re-run for known good/bad moves in qsearch
All captures are now ordered by their MVV score, not just losing ones
Killer and counter moves are reduced less aggressively
Captures are reduced far less aggressively (reduction is halved)
A bunch of internal code changes. Refactoring, cleanup, etc.
The neural network is now embedded in the engine in a way that avoids weight duplication even across multiple, independent processes
A healthy dose of SPSA tuning
Game Strength Change/Tests
STC:
Elo | 99.70 +- 8.95 (95%)
Conf | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 2012 W: 807 L: 245 D: 960
Penta | [5, 73, 363, 485, 80]
LTC:
Elo | 117.55 +- 8.24 (95%)
Conf | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 2000 W: 841 L: 189 D: 970
Penta | [0, 48, 320, 564, 68]
STC:
Elo | 88.92 +- 8.62 (95%)
Conf | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 2000 W: 621 L: 120 D: 1259
Penta | [3, 60, 453, 401, 83]
LTC:
Elo | 93.57 +- 7.40 (95%)
Conf | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 2000 W: 569 L: 43 D: 1388
Penta | [0, 22, 485, 438, 55]
Heimdall 1.3.0 vs other engines:
Horsie 1.0.6 JA | 1.5/12 | -9 | 12 Games |
Viridithas 16.0.0 | 1/8 | -6 | 8 Games |
Sting Black Hole 9 | 6/6 | +6 | 6 Games |
Deep HIARCS 15.4u | 4/6 | +2 | 6 Games |
Ethereal 14.25 | 2/6 | -2 | 6 Games |
Chess-System-Tal-2 | 2/6 | -2 | 6 Games |
Caissa 1.21 | 2/6 | -2 | 6 Games |
Alexandria 7.0.14 JA | 2/6 | -2 | 6 Games |
Revenge 4.0 | 2/6 | -2 | 6 Games |
Motor 0.8.0 JA | 2/6 | -2 | 6 Games |
Lizard 11.2.0 | 1.5/6 | -3 | 6 Games |
PlentyChess 4.0.1 | 1.5/6 | -3 | 6 Games |
Clover 8.1 JA | 1.5/6 | -3 | 6 Games |
HypnoS ++ 1.01 | 1.5/6 | -3 | 6 Games |
Artemis 7TR | 1.5/6 | -3 | 6 Games |
Dragon 3.3 | 1.5/6 | -3 | 6 Games |
Velvet 8.1.1 JA | 1/6 | -4 | 6 Games |
Obsidian 15.01 SE | 1/6 | -4 | 6 Games |
Starzix 6.0 | 1/6 | -4 | 6 Games |
Igel 3.6.0 JA | 1/6 | -4 | 6 Games |
Stockfish dev-20250202 | 0.5/6 | -5 | 6 Games |
Github: https://github.com/nocturn9x/heimdall
Comments
Post a Comment