MadChess 3.1 Beta 2b475bc (Color-Agnostic Code)

I removed 350 lines of code from MadChess and increased its playing strength by 12 Elo. I’m happy with the ratio. The bulk of changes since my last blog post involve replacing redundant, color-specific code with color-agnostic code, mostly in the Eval class. I replaced code such as this… … with code that’s generalized for multiple pieces and colors. The above is just one example of refactored code. There are many others in PR 22 that adds 2,641 lines of code and removes 3,336 lines of code (net -695 lines of code). This refactoring took a lot of time. I… Continue Reading

The Mad Lot

MadChess 3.0 participated in a tournament Graham Banks arranged, named The Mad Lot. “The Mad Lot”, ha ha. My engine’s namesake tournament. Rising to the occasion, MadChess 3.0 won the tournament! That’s two consecutive tournament victories for MadChess. 1 2 3 4 5 6 7 8 9 0 1 2 3 4 1 MadChess 3.0 64-bit **** ½½0½ 0111 1½01 0011 ½½½1 11½0 ½10½ ½½½½ 1½11 1½11 ½111 1½1½ 1½11 35.0/52 2 Nalwald 1.10 64-bit ½½1½ **** 101½ 1½10 01½1 1010 1100 10½1 ½1½0 11½1 1½11 ½011 ½11½ 11½1 34.5/52 3 Coiled 0.6 64-bit 1000 010½ **** 1111 ½101 0½11… Continue Reading

Banks 86th Amateur Series Division 7

MadChess 3.0 participated in Graham Banks’ 86th amateur tournament in division 7. MadChess 3.0 won the tournament! I believe this is MadChess’ first tournament win. 1 2 3 4 5 6 7 8 9 0 1 2 1 MadChess 3.0 64-bit **** ½1½1 ½½11 1010 ½111 1½01 0101 ½10½ 1000 ½001 ½1½½ 1111 27.0/44 586.25 2 Drosophila 1.6 64-bit ½0½0 **** 00½1 1½½1 ½½½0 01½½ 11½½ ½½1½ 1110 ½1½½ 0111 1111 27.0/44 558.50 3 KnightX 2.8 64-bit ½½00 11½0 **** 1010 1011 ½½1½ 01½½ 11½0 01½½ 101½ 1011 01½½ 25.0/44 536.00 4 Supernova 2.3 64-bit 0101 0½½0 0101 **** ½0½0… Continue Reading

MadChess 3.1 Beta 0c601ea (Singular Move)

I strengthened MadChess by extending the search horizon of singular moves. I gleaned the idea from the Stockfish chess engine. Quoting from my Pull Request #17: In the GetSearchHorizon method, added call to a new method, IsBestMoveSingular, that determines if best move that had failed high in recent searches is best by a significant margin. If so, extend the search by one ply. A code comment explains why: The best move (from the cache) is singular. That is, it’s the only good move in the position. Evaluation of the current position relies on the accuracy of the singular move’s score.… Continue Reading

Banks 85th Amateur Series Division 7

MadChess 3.0 participated in Graham Banks’ 85th amateur tournament in division 7. 1 2 3 4 5 6 7 8 9 0 1 2 1 Nawito 2103 **** 0½11 11½0 11½1 ½01½ 1½11 ½½00 ½001 1½11 0111 1111 ½½11 30.0/44 2 Betsabe II 2020 1½00 **** 101½ 1110 0110 0½1½ ½½10 111½ 1101 1½1½ 101½ 1111 29.0/44 3 FrankWalter 2.4.0 64-bit 00½1 010½ **** ½½10 110½ 01½0 1011 1½11 0101 ½110 ½½1½ 01½½ 24.5/44 4 MadChess 3.0 64-bit 00½0 0001 ½½01 **** 11½0 ½010 1001 ½11½ 1100 1010 ½½1½ 1111 23.0/44 5 Jumbo 0.7.0 64-bit ½10½ 1001 001½ 00½1 ****… Continue Reading