Banks 64th Amateur Series Division 6

MadChess 2.1 participated in Graham Banks’ 64th amateur tournament in division 6.

                           1    2    3    4    5    6    7    8    9    0    1    2    
1   chess22k 1.3 64-bit    **** 11½1 1000 1½11 1100 ½111 11½0 0011 111½ 0101 011½ 0111  29.0/44
2   Gogobello 1.2 64-bit   00½0 **** 01½1 110½ 01½½ 01½½ ½½11 111½ 0111 111½ 1½½½ 1½11  28.5/44
3   Maverick 1.5 64-bit    0111 10½0 **** 0½10 ½1½1 011½ 0½0½ 1011 111½ ½111 1½01 001½  26.5/44
4   Dorky 4.5 64-bit       0½00 001½ 1½01 **** 1110 0½½½ 1110 ½½11 1½11 1½01 11½½ 0½½½  25.5/44
5   Betsabe II 1.66        0011 10½½ ½0½0 0001 **** 0½01 1101 110½ ½101 ½11½ 11½0 ½1½½  23.5/44
6   MadChess 2.1 64-bit    ½000 10½½ 100½ 1½½½ 1½10 **** 001½ 01½0 0010 01½½ ½½1½ 1½10  20.0/44  434.50
7   ECE-X2                 00½1 ½½00 1½1½ 0001 0010 110½ **** 1011 ½½00 0½½½ 1100 1½10  20.0/44  431.75
8   Nemeton 1.5            1100 000½ 0100 ½½00 001½ 10½1 0100 **** 0111 ½½10 1½1½ ½0½½  19.0/44  401.50
9   Lozza 1.17 64-bit      000½ 1000 000½ 0½00 ½010 1101 ½½11 1000 **** 0½10 1011 1½11  19.0/44  383.00
10  Schooner 1.7.0 64-bit  1010 000½ ½000 0½10 ½00½ 10½½ 1½½½ ½½01 1½01 **** ½010 110½  18.5/44
11  TJchess 1.3 64-bit     100½ 0½½½ 0½10 00½½ 00½1 ½½0½ 0011 0½0½ 0100 ½101 **** ½011  17.5/44
12  Bagatur 1.5c 64-bit    1000 0½00 110½ 1½½½ ½0½½ 0½01 0½01 ½1½½ 0½00 001½ ½100 ****  17.0/44

Games

Missed Opportunity in the Endgame

I’ve been playing chess against my engine recently, using a beautiful 23″ wooden board by Drueke, with my notebook PC off to the side.  I set the time control to 25 min + 10 sec / move and give myself an extra 5 minutes per game (more time than MadChess) to make the moves on the board and the PC.  I figure that’s fair- it averages to 5 seconds per move over 60 moves.

Since MadChess plays chess as well as an international master (slightly below a grand master), and I am nowhere near that strong, I handicapped it to play at 1300 Elo.  This is made possible by the UCI_LimitStrength algorithm I implemented in the engine.

25 + 10 is an enjoyable pace. It’s slow enough to think through each move, yet fast enough to complete a game in an hour.  After 48 moves (and numerous missed opportunities as post-game analysis revealed), I reach the following position.  Playing the black pieces, thinking I needed to move my king up the board to support my passed pawn, I played Kc5, a blunder.  Can you find the correct move for black?

Of course! I overlooked the move, thinking it lost material. It does, but only temporarily. The pawn will queen.

I am a better chess programmer than player.  I need to play more games and write less code.  I must say though, what a strange feeling is produced by playing a game against an artificial intelligence I have created, purposefully handicapping it to get an even game, then unleashing its full potential after the game is concluded so it may identify all the moments I erred.  A bit magical and eerie all at once.

The full game, with MadChess’ post-game analysis (at 10 seconds per move), is available by clicking the share icon in the diagram above (the rightmost icon).

Banks 63rd Amateur Series Division 6

MadChess 2.1 participated in Graham Banks’ 63rd amateur tournament in division 6.

                                  1    2    3    4    5    6    7    8    9    0    1    2    
1   CyberPagno 3.0 64-bit         **** 111½ 0½½½ 000½ ½11½ ½010 0011 ½101 1½01 1011 1110 1111  27.0/44
2   Maverick 1.5 64-bit           000½ **** 0½10 ½1½1 1100 ½½½1 00½1 1110 ½11½ ½0½½ 11½1 ½111  25.5/44
3   Dorky 4.5 64-bit              1½½½ 1½01 **** ½110 ½½½½ 0½00 1110 00½1 11½½ 0½½1 1111 ½½½0  25.0/44  539.50
4   ECE-X2                        111½ ½0½0 ½001 **** 0101 011½ 101½ ½01½ 1½½0 11½1 0½10 1½½1  25.0/44  536.25
5   Bagatur 1.4d 64-bit           ½00½ 0011 ½½½½ 1010 **** 1011 010½ ½00½ 0½11 1111 101½ 1011  24.5/44
6   Lozza 1.17 64-bit             ½101 ½½½0 1½11 100½ 0100 **** 0½½½ ½10½ ½1½½ ½010 0111 01½1  23.0/44  498.00
7   Betsabe II 1.66               1100 11½0 0001 010½ 101½ 1½½½ **** ½1½0 10½0 011½ ½0½1 11½½  23.0/44  494.75
8   MadChess 2.1 64-bit           ½010 0001 11½0 ½10½ ½11½ ½01½ ½0½1 **** ½½½0 ½½10 01½1 1½00  21.5/44
9   Nemeton 1.5                   0½10 ½00½ 00½½ 0½½1 1½00 ½0½½ 01½1 ½½½1 **** 1½1½ 1010 11½0  21.0/44
10  TJchess 1.3 64-bit            0100 ½1½½ 1½½0 00½0 0000 ½101 100½ ½½01 0½0½ **** 0½0½ ½011  16.5/44
11  Bumblebee 1.0.36898e1 64-bit  0001 00½0 0000 1½01 010½ 1000 ½1½0 10½0 0101 1½1½ **** ½0½0  16.0/44  347.75
12  Shallow r694 64-bit           0000 ½000 ½½½1 0½½0 0100 10½0 00½½ 0½11 00½1 ½100 ½1½1 ****  16.0/44  340.25

Games

MadChess 2.1 Released

I have released version 2.1 of my chess engine. I built this version of MadChess using .NET Core, Microsoft’s new cross-OS development platform. I have provided source code and binaries for Windows on the Downloads page.

I do not have access to a Linux or Mac machine. If you are feeling adventurous and would like to build Linux or Mac binaries, please refer to Getting Started with .NET Core on Windows / Linux / MacOS for instructions on how to build .NET Core applications.

I have configured the MadChess project to build a self-contained application. All binaries required to run MadChess are included in the ZIP file. Unlike previous versions of MadChess, no prerequisite .NET framework must be installed prior to running the engine.

MadChess 2.1 is about 60 or 70 Elo stronger than version 2.0. It includes the following improvements, some impacting playing strength, some more focused on code quality.

  • Converted cached position from a class to a ulong primitive with bitwise operations.
  • Tuned evaluation using the technique described by Peter Österlund.
  • Include static exchange score when determining move futility.
  • Update history heuristic value of previously played quiet moves that failed to produce a cutoff.
  • Extract principal variation from a triangular array (rather than from hash table).
  • Simplified time management.

Banks 62nd Amateur Series Division 7

MadChess 2.0 participated in Graham Banks’ 62nd amateur tournament in division 7.

                                  1    2    3    4    5    6    7    8    9    0    1    2    
1   Shallow r694 64-bit           **** 1110 1111 ½110 ½½10 1011 ½½11 1½½1 ½1½½ 1111 1½11 1111  34.5/44
2   Waxman 2016                   0001 **** 0010 ½0½1 0011 0½½1 1011 1111 1111 101½ ½111 ½1½0  27.0/44
3   Jazz 840 64-bit               0000 1101 **** ½0½1 ½½10 1010 0½1½ ½½½0 ½½11 ½½11 11½1 11½1  25.5/44
4   Ares 1.005.2 64-bit           ½001 ½1½0 ½1½0 **** 0½10 1011 010½ 101½ ½½½1 10½1 ½101 1½11  25.0/44
5   MadChess 2.0 64-bit           ½½01 1100 ½½01 1½01 **** 0100 0110 ½½10 1011 0½01 1110 111½  24.5/44
6   Jumbo 0.4.17 64-bit           0100 1½½0 0101 0100 1011 **** 1110 0001 ½0½1 0101 1111 11½½  24.0/44  481.00
7   Gibbon 2.69a 64-bit           ½½00 0100 1½0½ 101½ 1001 0001 **** 1½11 ½1½0 1110 ½½11 1½½1  24.0/44  478.50
8   Schooner 1.5 64-bit           0½½0 0000 ½½½1 010½ ½½01 1110 0½00 **** 1½0½ 1½11 11½1 ½½½1  22.0/44
9   Fischerle 0.9.70 SE 64-bit    ½0½½ 0000 ½½00 ½½½0 0100 ½1½0 ½0½1 0½1½ **** ½111 1½½½ 1½0½  19.0/44
10  Absolute Zero 2.4.7.2 64-bit  0000 010½ ½½00 01½0 1½10 1010 0001 0½00 ½000 **** ½½11 ½101  16.0/44
11  RamJet 0.13                   0½00 ½000 00½0 ½010 0001 0000 ½½00 00½0 0½½½ ½½00 **** ½111  11.5/44
12  Tunguska 1.0 64-bit           0000 ½0½1 00½0 0½00 000½ 00½½ 0½½0 ½½½0 0½1½ ½010 ½000 ****  11.0/44

Games