Gandalf And The Spinning Blade

MadChess 3.0 participated in a tournament Graham Banks arranged, named Gandalf And The Spinning Blade.

                           1    2    3    4    5    6    7    8    9    0    1    2    
1   Blunder 8.0.0 64-bit   **** 0½10 ½111 ½½11 0001 1½½½ ½½1½ 10½½ ½½½½ 111½ 1011 ½11½  27.5/44
2   CM9000 Enforcer        1½01 **** 000½ 1½½1 1010 1100 0½10 ½011 ½1½1 0½11 10½1 1½1½  25.0/44  534.00
3   Gandalf 7 64-bit       ½000 111½ **** ½0½0 ½½½1 ½00½ ½101 1111 1½0½ 11½1 1½10 0½1½  25.0/44  531.00
4   Drosophila 1.6 64-bit  ½½00 0½½0 ½1½1 **** ½10½ 0101 1011 000½ ½111 ½½10 1111 01½0  23.5/44
5   Zevra 2.5 64-bit       1110 0101 ½½½0 ½01½ **** ½100 0011 ½½10 ½½1½ ½½10 ½1½½ 1½0½  23.0/44
6   MadChess 3.0 64-bit    0½½½ 0011 ½11½ 1010 ½011 **** 1000 110½ 00½0 1½1½ 00½½ 111½  22.5/44
7   Rotor 0.8              ½½0½ 1½01 ½010 0100 1100 0111 **** 0110 0½1½ 0010 1½½0 1½½½  21.0/44  460.00
8   Nebula 2.0 64-bit      01½½ ½100 0000 111½ ½½01 001½ 1001 **** ½011 ½½1½ ½½½½ 010½  21.0/44  459.25
9   Lozza 2.3 64-bit       ½½½½ ½0½0 0½1½ ½000 ½½0½ 11½1 1½0½ ½100 **** 01½1 0½01 ½½½1  20.5/44
10  Philou 3.7.1 64-bit    000½ 1½00 00½0 ½½01 ½½01 0½0½ 1101 ½½0½ 10½0 **** ½110 1½11  19.5/44
11  Raven 1.20 64-bit      0100 01½0 0½01 0000 ½0½½ 11½½ 0½½1 ½½½½ 1½10 ½001 **** 0½11  19.0/44
12  Leorik 2.1 64-bit      ½00½ 0½0½ 1½0½ 10½1 0½1½ 000½ 0½½½ 101½ ½½½0 0½00 1½00 ****  16.5/44

Games

Banks 94th Amateur Series Division 7

MadChess 3.0 participated in Graham Banks’ 94th amateur tournament in division 7.

                              1    2    3    4    5    6    7    8    9    0    1    2    
1   Zevra 2.5 64-bit          **** ½1½0 ½½11 110½ ½½11 10½1 ½½10 1½11 1011 1½½½ 1½1½ 1111  31.0/44
2   MadChess 3.0 64-bit       ½0½1 **** ½½½½ ½110 ½0½½ 0½1½ ½111 11½½ ½11½ 0½11 11½0 1½1½  27.5/44
3   Blunder 7.6.0 64-bit      ½½00 ½½½½ **** ½½½0 11½½ 1½0½ ½½½1 00½½ 1½½½ 1½0½ ½111 011½  23.5/44
4   Leorik 2.1 64-bit         001½ ½001 ½½½1 **** ½0½0 1110 ½1½0 1001 0011 ½½1½ 0111 ½0½1  23.0/44
5   Betsabe II 2020           ½½00 ½1½½ 00½½ ½1½1 **** 11½½ 0001 00½0 11½1 ½001 1½½1 01½½  22.0/44
6   Raven 1.20 64-bit         01½0 1½0½ 0½1½ 0001 00½½ **** 1½1½ ½½1½ 1100 ½1½0 110½ 0100  20.5/44  450.75
7   Myrddin 0.89 64-bit       ½½01 ½000 ½½½0 ½0½1 1110 0½0½ **** 01½½ 1½½½ 10½½ ½½10 ½½½½  20.5/44  445.75
8   Tantabus 2.0.0 64-bit     0½00 00½½ 11½½ 0110 11½1 ½½0½ 10½½ **** ½½½0 00½1 10½0 1½10  20.5/44  437.50
9   paulchen332 0.1.1 64-bit  0100 ½00½ 0½½½ 1100 00½0 0011 0½½½ ½½½1 **** 1111 0½½½ 0111  20.5/44  430.25
10  Admete 1.5.0 64-bit       0½½½ 1½00 0½1½ ½½0½ ½110 ½0½1 01½½ 11½0 0000 **** 0½½½ 1½½1  20.0/44
11  Odonata 0.5.1 64-bit      0½0½ 00½1 ½000 1000 0½½0 001½ ½½01 01½1 1½½½ 1½½½ **** 0111  19.0/44
12  CT800 1.43 64-bit         0000 0½0½ 100½ ½1½0 10½½ 1011 ½½½½ 0½01 1000 0½½0 1000 ****  16.0/44

Games

Banks 93rd Amateur Series Division 6

MadChess 3.0 participated in Graham Banks’ 93rd amateur tournament in division 6.

                                1    2    3    4    5    6    7    8    9    0    1    2    
1   GreKo 2021.12 64-bit        **** 0½1½ 0½½1 ½½11 11½½ 10½1 0½½1 0111 101½ 111½ 0½01 ½111  28.5/44
2   Shallow 4 64-bit            1½0½ **** 0½½1 ½101 0010 1110 1½01 01½½ ½1½½ 1½11 ½½½1 ½1½0  25.5/44  545.75
3   Delocto 200419 64-bit       1½½0 1½½0 **** 0111 1½½0 ½0½0 ½½½1 ½1½½ ½½01 ½110 ½½1½ 1½11  25.5/44  542.50
4   Colossus 2021b 64-bit       ½½00 ½010 1000 **** ½100 10½½ 1½½1 1011 ½1½1 ½11½ 101½ ½110  24.0/44
5   Devel 4.0.2.3               00½½ 1101 0½½1 ½011 **** ½½10 1½01 00½0 0½10 ½01½ 1½½0 1111  23.0/44
6   RookieMonster 1.9.8 64-bit  01½0 0001 ½1½1 01½½ ½½01 **** 10½½ 0½01 0½11 0½11 ½01½ 1½½½  22.5/44
7   Inanis 1.0.1 64-bit         1½½0 0½10 ½½½0 0½½0 0½10 01½½ **** 011½ 10½1 1110 ½1½½ 001½  21.5/44
8   Supernova 2.4 64-bit        1000 10½½ ½0½½ 0100 11½1 1½10 100½ **** 0½½1 ½½00 1101 0011  21.0/44
9   Nawito 2103 64-bit          010½ ½0½½ ½½10 ½0½0 1½01 1½00 01½0 1½½0 **** 01½0 1110 1½0½  20.0/44
10  K2 0.99                     000½ 0½00 ½001 ½00½ ½10½ 1½00 0001 ½½11 10½1 **** 11½½ 1010  18.5/44
11  MadChess 3.0 64-bit         1½10 ½½½0 ½½0½ 010½ 0½½1 ½10½ ½0½½ 0010 0001 00½½ **** 01½½  17.5/44
12  KnightX 3.2 64-bit          ½000 ½0½1 0½00 ½001 0000 0½½½ 110½ 1100 0½1½ 0101 10½½ ****  16.5/44

Games

Banks 92nd Amateur Series Division 7

MadChess 3.0 participated in Graham Banks’ 92nd amateur tournament in division 7.

MadChess 3.0 won the tournament!

                                    1    2    3    4    5    6    7    8    9    0    1    2    
1   MadChess 3.0 64-bit             **** ½½½½ 0½½½ ½1½½ 1001 1110 1½01 1111 ½½11 0011 1111 1111  30.5/44  605.00
2   Delocto 200419 64-bit           ½½½½ **** ½½1½ 0½½½ ½100 1½1½ ½½½½ 1111 ½111 ½111 1111 1110  30.5/44  600.75
3   RookieMonster 1.9.6-dev 64-bit  1½½½ ½½0½ **** ½½01 1111 011½ 110½ ½111 101½ 00½1 11½1 1011  29.0/44
4   Lozza 2.2 64-bit                ½0½½ 1½½½ ½½10 **** 00½1 ½10½ 011½ 0½11 ½½½1 1111 ½111 0½11  27.0/44
5   Keele 1.0 64-bit                0110 ½011 0000 11½0 **** ½110 1111 0100 0111 1111 0½10 111½  26.5/44
6   Betsabe II 2020                 0001 0½0½ 100½ ½01½ ½001 **** 10½½ ½110 ½½½½ 1110 ½111 1½10  22.5/44
7   Myrddin 0.88 64-bit             0½10 ½½½½ 001½ 100½ 0000 01½½ **** ½½1½ 1101 1½1½ ½½01 ½11½  22.0/44
8   Loki 3.5.0 64-bit               0000 0000 ½000 1½00 1011 ½001 ½½0½ **** 1110 ½100 0111 110½  18.0/44
9   Raven 1.20 64-bit               ½½00 ½000 010½ ½½½0 1000 ½½½½ 0010 0001 **** 0½10 1½½½ 01½½  15.5/44  325.50
10  paulchen332 0.1.1 64-bit        1100 ½000 11½0 0000 0000 0001 0½0½ ½011 1½01 **** 100½ ½½10  15.5/44  324.00
11  CT800 1.43 64 bit               0000 0000 00½0 ½000 1½01 ½000 ½½10 1000 0½½½ 011½ **** 11½½  14.0/44
12  Leorik 2.0 64-bit               0000 0001 0100 1½00 000½ 0½01 ½00½ 001½ 10½½ ½½01 00½½ ****  13.0/44

Games

MadChess 3.1 Beta 533e382 (Move Legality Performance Improvement)

I improved the performance of code that determines the legality of pseudo-legal moves. Previously, move legality was tested prior to playing a move. This consisted of playing a move (to test whether it exposed its own king to check and whether it delivered check on the enemy king), undoing the move, updating the “check” move property, then re-playing the move. Now a move is played, move legality and check is tested, and the Board.PlayMove method returns a (bool isLegal, bool deliversCheck) tuple.

The calling method (such as Search.GetDynamicScore or Search.GetQuietScore) then either 1) undoes the move (if illegal or futile) and continues to the next pseudo-legal move or 2) searches the resulting position.

In addition to move legality, I experimented with other performance improvements. None of these experiments succeeded except PR 33: Trust Move Capture Victim, which eliminated redundant calls to Position.GetPiece(Square square) in move generation and when playing moves.

Eliminating redundant double-playing of a move (to test move legality) during search increased the search speed of MadChess 3.1 Beta and produced a 36 Elo gain in playing strength.

 

Feature Category Date Commit1 WAC2 Elo Rating3 Improvement
Move Legality
Performance Improvement
Search 2022 Mar 18 533e382 289 2687 +36
Pawn Structure Evaluation 2022 Jan 11 d691b32 288 2651 +15
Threats Evaluation 2021 Oct 24 26e5323 289 2636 +7
Color-Agnostic Code Evaluation 2021 Sep 13 2b475bc 286 2629 +12
Singular Move Search 2021 Jun 14 0c601ea 290 2617 +13
Endgame Eval Scaling Evaluation 2021 Apr 08 4d22dec 286 2604 +12
Bishop Pair Evaluation 2021 Mar 14 2960ec9 285 2592 +22
Position Cache Optimization Search 2021 Feb 23 42d7702 286 2570 +8
Move Generation Optimization Search 2021 Feb 17 22002dc 287 2562 +12
PVS and Null Move Search 2021 Feb 09 f231dac 285 2550 +20
Remove Aspiration Windows Search 2020 Dec 20 4b7963b 290 2530 +9
Time Management Search 2020 Dec 19 d143bb5 286 2521 +8
Crash Bug Search 2020 Aug 29 2d855ec 288 2513 +0
King Safety Evaluation 2020 Aug 16 6794c89 288 2513 +63
Eval Param Tuning Evaluation 2020 Jul 23 bef88d5 283 2450 +30
Late Move Pruning Search 2020 Feb 08 6f3d17a 288 2420 +29
Piece Mobility Evaluation 2020 Feb 01 5c5d4fc 282 2391 +62
Passed Pawns Evaluation 2018 Dec 27 103 279 2329 +119
Staged Move Generation Search 2018 Dec 15 93 275 2210 +39
History Heuristics Search 2018 Dec 03 84 275 2171 +28
Eval Param Tuning Evaluation 2018 Nov 24 75 272 2143 +47
Sophisticated Search
Material and Piece Location
Baseline 2018 Nov 08 58 269 2096 0
  1. GitHub commit (hash) or Subversion source code revision (integer)
  2. Win At Chess position test, 3 seconds per position
  3. Bullet chess, 2 min / game + 1 sec / move