I’ve managed to add another 100+ Elo to MadChess. I estimate MadChess’ playing strength is ~ 2090 Elo at bullet time control. At blitz, I estimate its strength is ~ 2140 Elo. The strength improvement is mostly due to more efficient move generation and an improved principal variation search algorithm. Those and other more cosmetic changes are detailed below.
Source code and EXEs available on the Downloads page.
- Implemented a check evasion move selector.
- Improved principal variation search algorithm.
- Improved efficiency of aspiration windows. Window is increased in configurable steps instead of doubling.
- Decreased positional bonuses.
- Added bonuses for backward pawns, connected rooks (on file) and good attacks (attacks of greater value pieces).
- Updated pawn endgame location values to encourage pawn pushes.
- Improved time management of classical time controls (x moves in y seconds).
- Improved memory usage of position cache.
- Decreased allocations of move collection classes during search.
- Removed duplicate search code at root node. Consolidated into a single search method.
- Removed duplicate pawn promotion and en passant code. Consolidated into pawn class.
- Added debug code to detect move generation errors.