MadChess 2.0 Beta Build 021 (Tapered Evaluation)

I added tapered evaluation to MadChess 2.0 Beta. The evaluation assigns a material score, a middlegame piece location score, and an endgame piece location score. Then calculates the game phase and returns a weighted average of the middlegame and endgame scores. By separating piece location scores into middlegame and endgame phases, I can encourage MadChess to hold its queen back during the middlegame, and bring its king to the center during the endgame, for example. This added 107 Elo to the playing strength of MadChess 2.0 Beta. MadChess 2.0 1596 : 800 (+42,=72,-686), 9.8 % vs. : games ( +,… Continue Reading

MadChess 2.0 Beta Build 020 (Baseline)

I’ve reached an important milestone in the development of my new chess engine. MadChess 2.0 Beta can play a timed game of chess. I’ve implemented an alpha / beta negamax search with aspiration windows and a capture / check evasion quiescence search. Evaluation is limited to material and middlegame piece square tables. No tapered evaluation, no passed pawn bonus, no piece mobility, no king safety, no reductions or pruning of moves, etc. I ran a gauntlet tournament, pitting MadChess 2.0 Beta against weak chess engines. MadChess 2.0 1489 : 800 (+17,=56,-727), 5.6 % vs. : games ( +, =, -),… Continue Reading

MadChess 2.0 Beta Build 001 (Procedural Code)

I’ve been writing a new version of MadChess. For this 2.0 version, I’m writing code using procedural techniques rather than the object-oriented techniques I used in MadChess 1.x. When I say the code is “procedural”, I mean it has two primary traits. The code uses primitive data structures instead of classes. The code emphasizes performance over readability and maintainability. I’m writing the code in C# with a mailbox board representation, similar to MadChess 1.x. The board has an array of Positions. Each Position has an integer array of Squares. Moves are encoded into an unsigned integer. I’m using a copy-make… Continue Reading

Banks 49th Amateur Series Division 5

MadChess 1.4 participated in Graham Banks’ 49th amateur tournament in division 5. 1 2 3 4 5 6 7 8 9 0 1 2 3 4 1 Jazz 721 64-bit **** 1011 1½10 ½1½1 010½ 0100 110½ 1111 ½0½1 1100 ½11½ 1½11 1101 0100 32.0/52 2 Bagatur 1.3a 64-bit 0100 **** ½10½ ½½1½ 0½½1 1½½½ 10½½ 11½1 00½1 1½10 1111 1110 ½10½ 0111 31.5/52 783.50 3 Waxman 2014 0½01 ½01½ **** 1011 ½½½0 1000 1110 ½½11 0110 11½½ 1011 ½11½ 1110 ½110 31.5/52 781.00 4 Tigran 2.4n 64-bit ½0½0 ½½0½ 0100 **** ½½½½ ½111 1111 1½½1 111½ 1½½1 ½½½½ 0011… Continue Reading

A Game with All the Right Moves

I played a blitz game recently on Chess.com where throughout the entire game I felt a sense of heightened alertness- that I just understood the position and was quickly spotting threats and tactics. My opponent made a number of weak moves (yes, we’re both patzers), but I felt I found all the right moves- the most forcing, decisive replies to capitalize on his mistakes. After the game I asked my chess engine, MadChess, to analyze the game and suggest where I could have played better. To my surprise, MadChess could not find any improvements in my play. OK, I thought,… Continue Reading