Renegade 0.9.0
Renegade 0.9.0 (March 15, 2023)
- 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 morestd::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)
- Based on
- 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()
andSearchQuiescence()
calls (instead on evaluation) - Inflates node counts by about 25%
- Evaluations are still counted and can be displayed by toggling
ExtendedOutput
- Now incremented on
- 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
- New commands:
- 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.
- Strength: ~2200