MadChess 1.1 Released

I’ve made many changes to MadChess, detailed below. I tested at my usual bullet time control (2 min + 1 sec / move) and found only a 30 ELO gain, a bit disappointing for so many changes. However, informal testing at 40 moves in 4 min shows a much larger gain- potentially 60 ELO. This makes sense because my engine is a relatively slow searcher. Perhaps the CCRL testers can verify?

I removed 174 lines of code and gained 30 ELO. At this rate, if I remove all the code my engine will play with super Grandmaster strength, ha ha!

Source code and EXEs available on the Downloads page.

  1. Added tapered evaluation.
    1. Calculate static score for middlegame and endgame.
    2. Determine game phase from material on board.
    3. Calculate weighted average of middlegame and endgame static scores.
    4. This eliminates the discontinuity of a sudden jump from middlegame to endgame static scores.
    5. Static score slowly tapers from middlegame to endgame.
  2. Moved piece location values (aka piece square tables) to text files and made configurable via a UCI option.
  3. Separated passed pawn static score into middlegame score and endgame score.
  4. Added knight mobility static score.
  5. Separated piece mobility static scores into middlegame mobility and endgame mobility.
  6. Improved evaluation of king safety, especially evaluation of coordination of attacking pieces.
  7. Eliminated Reduce Pawn Push, Reduce Capture, Reduce Killer Move, Reduce In Check, and Reduce Check UCI options.  (All reductions disallowed.)
  8. Eliminated all reductions and lazy evaluation in principal variation.
  9. Simplified late move reductions.
  10. Added Reduce Root UCI option (default = false).
  11. Improved performance of Score Inaccuracy code. Renamed UCI option from Score Inaccuracy to Score Error.
  12. Added a UCI option, Max Nodes Per Second, to throttle search speed. Eliminated Evaluation Delay UCI option.
  13. Consult best move cache in main search and quiet search instead of only in main search.
  14. Age values in history cache when receiving new position (reduce 90%) and during search (reduce 50% if value exceeds maximum).
  15. Eliminated Middlegame Time Factor UCI option. (All moves given equal time.)
  16. Improved time management, especially for traditional time controls (such as 40 moves in 4 minutes).  Interrupt if ply takes four times longer than expected to search.
  17. Refactored code.
    1. Removed 174 lines of code.
    2. Rewrote to comply with Microsoft managed recommended rules.
    3. Rewrote to comply with JetBrains ReSharper default rules.
Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *