Author:Dan Kelsey
v.5.1.0:
Calvin 5.1.0 brings significant improvements in both search and evaluation.
Calvin has a bigger and better neural network, with a hidden layer size of 1024 and 4 king buckets, horizontally mirrored.
In search, the biggest improvement was fixing Calvin's bugged SEE algorithm, which enabled many search and move ordering techniques.
Tests against the previous release suggest a strength increase of 124 elo LTC / 106 elo STC:
Elo | 124.80 +- 7.10 (95%)
Conf | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 4000 W: 1801 L: 423 D: 1776
Penta | [6, 139, 620, 941, 294]
Elo | 105.98 +- 7.84 (95%)
Conf | 8.0+0.08s Threads=1 Hash=8MB
Games | N: 4008 W: 1855 L: 669 D: 1484
Penta | [46, 157, 702, 763, 336]
This puts Calvin's estimated rating somewhere between 3400-3500.
⚖️ Evaluation
New net, (768x4->1024)x2->1, horizontally mirrored, screlu, 2.7 billion positions (#270)
Finny tables for faster accumulator refreshes (#270)
π Search
Improved SEE algorithm (#236)
PVS SEE quiet pruning (#193)
PVS SEE noisy pruning (#237)
Cut-node IIR (#268)
Use cut-node in TT cutoff condition (#269)
Use TT hit in NMP condition (#271)
Stop excluding killers + promos from history bonuses (#252)
Remove history ageing (#260)
Don't correct static eval if ttMove != null (#267)
Tweak aspiration windows (#272)
Stop doing futility pruning in check (#273)
Always overwrite TT entry if we have an exact score (#230)
Don't drop into Q-search when in check (#274)
Increase LMP depth (#275)
History bonus if when bestScore > beta + margin (#278)
Do check extension inside the move loop (#279)
π’ Move ordering
Use SEE for good/bad noisy move ordering (#238)
Use negative pawn threshold for SEE move ordering (#239)
Use capthist score in SEE threshold (#249)
π Bugfix
Stop excluding killers + promos from history bonuses (#252)
Include positions before root in repetition detection (#259)
How to run
To run the jar file, you will need to enable the Vector API package which Calvin uses for SIMD, via this command:
java --add-modules jdk.incubator.vector -jar path/to/calvin-chess-engine-5.1.0.jar
For CCRL testers who use ChessGUI, please also download the calvin-wrapper.jar file and place it in the same folder as the calvin jar. When loading Calvin in ChessGUI, pass this file instead of the engine jar. This wrapper allows you to run Calvin without passing in the required JVM args (which ChessGUI does not support).
--
And finally, many thanks to the kind people who have tested Calvin, and to those who have offered their advice and expertise in the chess programming Discord channels!
Comments
Post a Comment