Since you’re here...

We hope you will consider supporting us today. We need your support to continue to exist, because good entries are more and more work time. Every reader contribution, however big or small, is so valuable. Support "Chess Engines Diary" even a small amount– and it only takes a minute. Thank you.
============================== My email: jotes@go2.pl



New version chess engines: CalvinChess 4.1.0 (java)



Calvin Chess - java chess engine
Author:Dan Kelsey

v.4.1.0:
Calvin 4.1.0 brings major improvements to time management and move ordering, many minor enhancements to search, and a very embarrassing bugfix.

Results from self-play suggest a strength jump of around 110-140 elo and an estimated CCRL strength of at least 3100.

STC: Elo difference: 116.8 +/- 20.7
LTC: Elo difference: 140.9 +/- 28.2

🐛 Very embarrassing bugfix
On the one hand I am ashamed. On the other hand, this was the easiest free elo ever.

Stop searching first PV node with a null window (#69)
⏳ Time management
Implemented soft/hard time limits. The soft limit is checked at the start of each ID loop to determine whether a new iteration should be started. This saves a lot of unnecessary time from unfinished searches. The soft limit is also scaled using two heuristics: best move stability and eval stability.

Add soft/hard time limit (#54)
Add best move stability (#56)
Add eval stability (#59)
🔢 Move ordering
Added a history malus, meaning a penalty, for all quiets that did not fail high. And history bonuses are adjusted by a 'gravity' formula that scales up bonuses when the fail high was unexpected, and scales them down when it was expected.

Add history malus (#64)
Add history gravity (#65)
Add MovePicker.skipQuiets (#68)
🔍 Search
Just a bunch of random, tiny tweaks to search, resulting from trying stuff out and getting lucky.

Don't do IIR in check, and only when TT move is null (#49)
Move LMP before search extensions (#50)
Allow RFP at depth 5 (#51)
Don't expand aspiration window on the side that didn't fail (#52)
Futility prune before makeMove, allow FP for checks (#53)
Use best move from partial search (#55)
Don't TT cut in PV nodes (#57)
Increase NMP reduction (#63)
Allow full LMR reduction when in check (#67)
⚡ Minor optimisations
Fix TT mate scores and optimise TT (#62)
Optimise move sorting in MovePicker (#61)
⚙️ Refactoring / Quality of life
Significantly refactor and improve UCI code (#60)
Significantly refactor history/killer/move ordering code (#66)
Add bench (#60)
How to run
Please download one of the jar files from this release. There are two release jars: calvin-chess-engine and calvin-chess-engine-no-simd. The no-simd release is specifically for CCRL testers: since ChessGUI does not support passing Java opts to a jar file, the Vector API which Calvin uses for NNUE must be disabled.

For the standard calvin-chess-engine release, Calvin can be started by running the command:
java --add-modules jdk.incubator.vector -jar path/to/calvin-chess-engine-4.1.0.jar

For the CCRL calvin-chess-engine-no-simd release, the Java opt can be ommited:
java -jar path/to/calvin-chess-engine-no-simd-4.1.0.jar

CalvinChess 4.1.0 download


Comments