Skip to content

Renegade 0.9.0

Compare
Choose a tag to compare
@pkrisz99 pkrisz99 released this 15 Mar 19:55
· 343 commits to main since this release

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 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.
  • Strength: ~2200