Odds Games Versus Elite Engines

I read a Wikipedia article about the popularity of chess handicaps in the 18th and 19th centuries. Many master players would offer odds to a weaker player in order to convince them to wager money on a game of chess. I was curious how MadChess would fare in such conditions, so I created an opening book of typical chess odds, and ran a series of matches against elite engines.

MadChess had “move” odds in all the games. That is, MadChess played white. Two move odds means MadChess played white and made two moves to open the game. The time control was 2 minutes / game + 1 second / move.

I was surprised how well my engine performed, considering it’s a 2200 Elo engine competing with 2800+ Elo engines. I was confident it would win games with queen or two rook odds, but was surprised to see it draw and win games with only pawn and a move odds. Also, I was surprised to find Stockfish the weakest competition, while a relatively old elite engine, Sjeng, was the strongest.

Odds Stockfish Rybka Junior Sjeng Shredder
Two Moves (e4) 0 0 0 0 0
Two Moves (d4) 0 0 0 0 0
Two Moves (c4) 0 0 0 0 0
Pawn Odds (f7) 0 0 0 0 0
Pawn and Move (e4, f7) 0 1 0 0 0
Pawn and Move (d4, f7) 0 0 0 0 0
Pawn and Move (c4, f7) ½ 0 0 0 0
Knight Odds (b8) 0 0 0 0 1
Rook Odds (a8) 1 0 1 0 1
Rook and Pawn Odds (a8, f7) 1 0 1 1 1
Two Minors Odds (b8, f8) 1 1 1 1 1
Two Minors Odds (b8, g8) 1 1 1 1 1
Two Minors Odds (c8, f8) 1 1 1 0 1
Two Minors Odds (c8, g8) 1 1 1 1 1
Rook and Knight Odds (a8, b8) 1 1 1 1 ½
Queen Odds 1 1 1 1 1
Two Rooks Odds 1 1 1 1 1
MadChess Score 9.5 / 17 8 / 17 9 / 17 7 / 17 9.5 / 17

Opening Book
Games

Graham Banks 47th Amateur Tournament Division 6

MadChess 1.4 participated in Graham Banks’ 47th Amateur Tournament in Division 6.

47th Amateur D6  2014
                             1    2    3    4    5    6    7    8    9    0    1    2    
1   Jazz 721 64-bit          **** 1½1½ 0011 11½½ ½11½ 0100 11½1 1010 1100 1111 1111 0½10  29.0/44
2   Waxman 2013              0½0½ **** 1½01 110½ ½111 0½1½ 0100 ½½01 ½110 1½½1 1001 1110  25.0/44
3   Maverick 0.51 64-bit     1100 0½10 **** ½½00 1010 1100 1011 1½1½ 1011 0½11 1½0½ ½110  24.5/44
4   Protej 0.5.8c            00½½ 001½ ½½11 **** 11½1 1000 0010 01½1 1½½1 0010 0111 ½½1½  23.0/44  495.75
5   Mediocre 0.5             ½00½ ½000 0101 00½0 **** ½111 ½½½1 111½ 10½½ 110½ 1001 1110  23.0/44  482.50
6   Absolute Zero 2.4.0.0    1011 1½0½ 0011 0111 ½000 **** 1100 ½010 01½1 0001 ½0½1 101½  22.0/44
7   Bagatur 1.3a 64-bit      00½0 1011 0100 1101 ½½½0 0011 **** 0½10 010½ 10½½ ½101 1001  20.5/44
8   FireFly 2.7.0 64-bit     0101 ½½10 0½0½ 10½0 000½ ½101 1½01 **** 100½ ½0½½ 1101 0½½1  20.0/44  438.00
9   Fischerle 0.9.50 64-bit  0011 ½001 0100 0½½0 01½½ 10½0 101½ 011½ **** 010½ 1001 011½  20.0/44  436.75
10  Exacto 0.e 64-bit        0000 0½½0 1½00 1101 001½ 1110 01½½ ½1½½ 101½ **** 0½0½ ½0½½  19.5/44
11  MadChess 1.4 64-bit      0000 0110 0½1½ 1000 0110 ½1½0 ½010 0010 0110 1½1½ **** 11½0  19.0/44
12  MangoPaolaAjedrez 4.1    1½01 0001 ½001 ½½0½ 0001 010½ 0110 1½½0 100½ ½1½½ 00½1 ****  18.5/44

Games

Graham Banks 46th Amateur Tournament Division 6

MadChess 1.4 participated in Graham Banks’ 46th Amateur Tournament in Division 6.

46th Amateur D6  2014
                                 1  2  3  4  5  6  7  8  9  0  1  2  3  4  5  6  
1   Capivara LK 0.09b02c 64-bit  ** 11 ½1 11 11 11 11 1½ ½1 1½ 11 11 11 11 11 1½  27.5/30
2   MangoPaolaAjedrez 4.1        00 ** ½1 10 11 11 ½0 1½ 10 10 1½ ½1 ½½ 1½ 00 ½0  16.5/30
3   Gibbon 2.57a 64-bit          ½0 ½0 ** 10 0½ ½1 1½ 10 1½ 01 10 ½0 1½ 10 11 ½½  16.0/30  228.00
4   EveAnn 1.71a                 00 01 01 ** 10 1½ 01 10 10 01 ½½ 11 01 ½0 10 11  16.0/30  221.00
5   Maverick 0.51 64-bit         00 00 1½ 01 ** ½½ ½½ ½1 10 1½ 0½ 01 1½ 10 11 1½  16.0/30  218.25
6   Bagatur 1.3a 64-bit          00 00 ½0 0½ ½½ ** 0½ 0½ ½1 1½ 11 1½ 10 11 ½1 11  16.0/30  212.75
7   Mediocre 0.5                 00 ½1 0½ 10 ½½ 1½ ** ½1 00 11 ½1 01 0½ ½½ 0½ 01  14.5/30
8   MadChess 1.4 64-bit          0½ 0½ 01 01 ½0 1½ ½0 ** ½1 1½ ½1 1½ ½0 00 ½0 1½  14.0/30  203.50
9   Absolute Zero 2.4.0.0        ½0 01 0½ 01 01 ½0 11 ½0 ** 10 0½ ½1 ½0 10 1½ 01  14.0/30  203.00
10  FireFly 2.7.0 64-bit         0½ 01 10 10 0½ 0½ 00 0½ 01 ** 00 ½½ ½1 ½1 11 11  14.0/30  195.00
11  Waxman 2013                  00 0½ 01 ½½ 1½ 00 ½0 ½0 1½ 11 ** 0½ 01 10 11 ½½  14.0/30  194.00
12  Pedone 0.3 64-bit            00 ½0 ½1 00 10 0½ 10 0½ ½0 ½½ 1½ ** 01 11 11 ½½  14.0/30  192.25
13  Butcher 1.64 64-bit          00 ½½ 0½ 10 0½ 01 1½ ½1 ½1 ½0 10 10 ** 0½ 0½ ½1  13.5/30
14  Exacto 0.e 64-bit            00 0½ 01 ½1 01 00 ½½ 11 01 ½0 01 00 1½ ** 0½ ½1  13.0/30
15  ChessKiss 1.7 64-bit         00 11 00 01 00 ½0 1½ ½1 0½ 00 00 00 1½ 1½ ** 11  12.0/30
16  Fischerle 0.9.30b 64-bit     0½ ½1 ½½ 00 0½ 00 10 0½ 10 00 ½½ ½½ ½0 ½0 00 **   9.0/30

Games

MadChess 1.4 Released

I’ve added features to improve MadChess’ value as a sparring partner and analysis tool. I spent a lot of time implementing an algorithm that reduces the playing strength of MadChess. In chess GUIs that support the feature, MadChess will automatically adjust its playing strength to match the user. See the User Guide for details.

Source code and EXEs available on the Downloads page.

  1. Added UCI_LimitStrength and UCI_Elo options.
  2. Added chess personalities from young child to expert.
  3. Added MultiPV (display multiple principal variations).
  4. Enabled PVS search for MultiPV or when ScoreError > 0.
  5. Do not reduce search horizon of pawn pushes.
  6. Added bonus for trading material (when behind trade pawns, when ahead trade pieces).
  7. Added rook versus rook draw detection.
  8. Simplified killer move update logic.
  9. Added NodesLazyEvaluated statistic.
  10. Replaced many “if not continue” conditions with if conditions (to improve code readability).
  11. Eliminated all structs (converted to sealed classes with static methods).
  12. Eliminated uneccessary allocations (replaced with private class members).
  13. Eliminated SideToMove from UndoMove class.
  14. Eliminated PvsMinToHorizon UCI option.
  15. Added a logo.

Graham Banks 45th Amateur Tournament Division 6

MadChess 1.3 participated in Graham Banks’ 45th Amateur Tournament in Division 6.

45th Amateur D6  2014
                                 1  2  3  4  5  6  7  8  9  0  1  2  3  4  5  6  
1   RomiChess P3L 64-bit         ** 0½ 1½ 00 11 1½ 11 11 11 ½0 1½ 11 11 11 ½0 11  22.0/30
2   Sjakk 2.0 64-bit             1½ ** ½1 11 01 ½0 10 ½0 ½1 ½½ 1½ 11 ½1 ½1 11 11  21.0/30
3   OliThink 5.3.2 64-bit        0½ ½0 ** 01 01 11 ½1 ½½ 11 11 0½ ½½ 11 ½0 ½½ 11  18.5/30
4   Myrddin 0.86 64-bit          11 00 10 ** 10 ½1 00 01 ½½ 10 11 10 10 ½1 11 11  18.0/30
5   Maverick 0.51 64-bit         00 10 10 01 ** 01 10 01 10 00 10 11 11 1½ ½1 11  17.0/30
6   Capivara LK 0.09a02c 64-bit  0½ ½1 00 ½0 10 ** 11 1½ 11 ½0 ½0 01 ½0 11 1½ 10  16.0/30  231.25
7   Waxman 2013                  00 01 ½0 11 01 00 ** ½0 1½ ½½ 01 01 10 1½ 11 11  16.0/30  218.25
8   Bagatur 1.3a 64-bit          00 ½1 ½½ 10 10 0½ ½1 ** ½1 ½½ 10 1½ ½1 ½1 00 ½0  15.0/30
9   Butcher 1.64 64-bit          00 ½0 00 ½½ 01 00 0½ ½0 ** 11 ½1 01 10 11 10 11  14.0/30
10  EveAnn 1.71a                 ½1 ½½ 00 01 11 ½1 ½½ ½½ 00 ** 00 0½ ½1 0½ 11 00  13.5/30  212.75
11  Absolute Zero 2.4.0.0        0½ 0½ 1½ 00 01 ½1 10 01 ½0 11 ** 0½ 0½ 10 01 10  13.5/30  198.00
12  Gibbon 2.57a 64-bit          00 00 ½½ 01 00 10 10 0½ 10 1½ 1½ ** ½0 10 11 ½1  13.5/30  180.75
13  FireFly 2.7.0 64-bit         00 ½0 00 01 00 ½1 01 ½0 01 ½0 1½ ½1 ** 01 01 01  12.0/30  167.25
14  MadChess 1.3 64-bit          00 ½0 ½1 ½0 0½ 00 0½ ½0 00 1½ 01 01 10 ** 1½ 11  12.0/30  161.25
15  MangoPaolaAjedrez 4.1        ½1 00 ½½ 00 ½0 0½ 00 11 01 00 10 00 10 0½ ** 1½  10.5/30
16  Mediocre 0.5                 00 00 00 00 00 01 00 ½1 00 11 01 ½0 10 00 0½ **   7.5/30

Games