Speed improvements
Implemented magic bitboard lookups for sliding pieces
Reduced memory allocations in several places, again
Optimized variable types
New evaluation terms
Rooks on open and semi-open files
Knight outposts
More aggressive pruning
Null move pruning search reduced by 3 if depth > 6 (kept at 2 otherwise)
Razoring at depth 1 with margin of 300 cp (instead of 400)
Futility pruning extended to depth 3 with margin of 300 cp
Overhauled transposition table
Based on std::vector (no more std::unordered_map)
Replacement policy: always if hash is different, otherwise if depth is greater or equal
Stores depth and best move
Size calculated dynamically based on Hash parameter
Use debug hashalloc to show hash information
Added Clear Hash option
Not yet optimized (uses 24 bytes per entry)
Move ordering changes
Now based on MVV-LVA instead of material difference
Trying PV moves early only on the PV line
Uses the best move from the transposition table
Collecting more search statistics
First move beta cutoff rate, transposition table hit rate
Statistics are organized in its own struct
Updated method for node counting
Now incremented on SearchRecursive() and SearchQuiescence() calls (instead on evaluation)
Inflates node counts by about 25%
Evaluations are still counted and can be displayed by toggling ExtendedOutput
Better compatibility
Defaulting to statically linked libraries (shouldn't require external dll's)
Providing an exe that should work on older processors (untested, and it seems slightly slower)
Minor changes
New commands: debug isdraw (shows whether the position is a draw), debug plys (show game ply count), ch (shorthand for Clear Hash)
Simplified search code
Bugfixes
No longer draws in winning positions due to threefold repetitions (hopefully)
Fixed and expanded drawn game evaluation
Regression testing results: (time control: 10s+0.1)
Score of Renegade 0.9.0 vs Renegade 0.8.1: 1472 - 200 - 328 [0.818] 2000
... Renegade 0.9.0 playing White: 744 - 77 - 179 [0.834] 1000
... Renegade 0.9.0 playing Black: 728 - 123 - 149 [0.802] 1000
... White vs Black: 867 - 805 - 328 [0.515] 2000
Elo difference: 261.1 +/- 16.8, LOS: 100.0 %, DrawRatio: 16.4 %
General notes:
The plan was to speed up the engine, both in nps terms, and make the search more efficient by applying more aggressive pruning to combat the low search depth. Both of these worked, more or less.
I've added a exe that hopefully should work with older processors, but I'm unable to verify this. I would like to support a wider range of systems in general, but it's a bigger challenge than I thought.
Feel free to ping me if there's any issues.
Critter 1.6a : 6 (+ 0,= 0,- 6), 0.0 %
Houdini 1.5a : 2 (+ 0,= 0,- 2), 0.0 %
Delocto 0.61n : 1 (+ 0,= 0,- 1), 0.0 %
ECE 20.1 : 2 (+ 0,= 0,- 2), 0.0 %
Fritz 17 : 2 (+ 0,= 0,- 2), 0.0 %
Jinx 1.0 : 1 (+ 0,= 0,- 1), 0.0 %
Hiarcs 15.5 : 2 (+ 0,= 0,- 2), 0.0 %
Coiled 1.1 : 2 (+ 0,= 0,- 2), 0.0 %
Fritz 18 : 2 (+ 0,= 0,- 2), 0.0 %
Lc0 0.29.0 : 2 (+ 0,= 0,- 2), 0.0 %
Raven 1.30 : 2 (+ 0,= 0,- 2), 0.0 %
Peacekeeper 1.1 : 3 (+ 0,= 0,- 3), 0.0 %
Akimbo 0.1.1 : 2 (+ 0,= 0,- 2), 0.0 %
BlackCore 5.0 : 4 (+ 0,= 0,- 4), 0.0 %
Stockfish 20230114 : 6 (+ 0,= 0,- 6), 0.0 %
4ku 1.1 : 2 (+ 2,= 0,- 0), 100.0 %
Igel 3.3.0 : 8 (+ 0,= 0,- 8), 0.0 %
Inanis 1.2.0 : 8 (+ 0,= 2,- 6), 12.5 %
Koivisto 9.0 : 4 (+ 0,= 0,- 4), 0.0 %
Polyfish 230115 : 6 (+ 0,= 0,- 6), 0.0 %
Caissa 1.5 : 8 (+ 0,= 0,- 8), 0.0 %
CorChess 20230114 : 2 (+ 0,= 0,- 2), 0.0 %
Charisma Saphir : 6 (+ 0,= 0,- 6), 0.0 %
ShashChess 27.2 : 6 (+ 0,= 0,- 6), 0.0 %
Koivisto 9.0 Ipman : 8 (+ 0,= 0,- 8), 0.0 %
Frozenight 6.0.0 : 10 (+ 0,= 0,- 10), 0.0 %
Jangine 2023-01-15 : 8 (+ 4,= 2,- 2), 62.5 %
Mess 0.0.2 : 7 (+ 2,= 0,- 5), 28.6 %
Clovis II : 4 (+ 0,= 0,- 4), 0.0 %
Durandal 0.1.1 : 3 (+ 3,= 0,- 0), 100.0 %
Princhess 0.9.0 : 5 (+ 1,= 1,- 3), 30.0 %
Wasabi 1.5.0 : 2 (+ 0,= 0,- 2), 0.0 %
Sturddle 1.27 : 4 (+ 0,= 0,- 4), 0.0 %
Zagreus 2.0.0 alpha-2 : 4 (+ 4,= 0,- 0), 100.0 %
Durandal 0.1.2 : 1 (+ 1,= 0,- 0), 100.0 %
Sting Black Hole 4 : 2 (+ 0,= 0,- 2), 0.0 %
Rapcschess 2022-12-08 : 1 (+ 0,= 0,- 1), 0.0 %
Comments
Post a Comment