MadChess 3.1 Beta d691b32 (Pawn Structure)

I added evaluation of two pawn structure features to MadChess 3.1 Beta.

  • Isolated Pawns
  • Doubled Pawns

In addition to pawn structure evaluation, I made other code quality improvements in a series of Pull Requests.

Evaluating pawn structure increased the playing strength of MadChess 3.1 Beta by 15 Elo.

 

Feature Category Date Commit1 WAC2 Elo Rating3 Improvement
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

Banks 90th Amateur Series Division 7

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

                              1   2   3   4   5   6   7   8   9   0   1   2   
1   Blunder 7.6.0 64-bit      *** 00  ½01 ½1  100 110 111 1½½ 111 110 1½  1½   19.0/29
2   Drosophila 1.6 64-bit     11  *** 11  000 11  010 ½0½ 01  1½  110 110 111  17.5/28
3   Protej 0.6.1 64-bit       ½10 00  *** ½01 ½1½ 1½  ½½  1½½ 110 ½1  011 ½1   16.5/28
4   Zevra 2.5 64-bit          ½0  111 ½10 *** 10  0½1 01½ 00  01  11½ 1½  1½½  16.0/28
5   MadChess 3.0 64-bit       011 00  ½0½ 01  *** 1½  10  11½ 0½½ 0½1 01  1½1  15.0/28  200.00
6   Betsabe II 2020           001 101 0½  1½0 0½  *** 001 1½  10  11  011 110  15.0/28  199.25
7   Odonata 0.5.1 64-bit      000 ½1½ ½½  10½ 01  110 *** 0½  1½0 ½1  1½1 010  14.5/29
8   Nawito 2103 64-bit        0½½ 10  0½½ 11  00½ 0½  1½  *** ½½½ 01  10  111  14.0/27
9   Raven 1.20 64-bit         000 0½  001 10  1½½ 01  0½1 ½½½ *** ½0½ ½0  111  13.0/29
10  Myrddin 0.88 64-bit       001 001 ½0  00½ 1½0 00  ½0  10  ½1½ *** 1½½ 10   11.0/28
11  paulchen332 0.1.1 64-bit  0½  001 100 0½  10  100 0½0 01  ½1  0½½ *** ½1   10.5/27
12  Loki 3.5.0 64-bit         0½  000 ½0  0½½ 0½0 001 101 000 000 01  ½0  ***   7.0/29

Games

Banks 89th Amateur Series Division 7

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

                                1    2    3    4    5    6    7    8    9    0    1    2    
1   KnightX 3.1 64-bit          **** 1100 0½11 ½11½ ½110 ½½10 1111 1111 ½½10 ½01½ ½1½1 1½11  30.5/44
2   Mantissa 2.5.0 64-bit       0011 **** 0110 ½01½ 1010 10½½ ½111 1101 1½11 ½111 ½1½1 1011  29.5/44
3   RookieMonster 1.9.4 64-bit  1½00 1001 **** ½000 1½½½ 01½1 ½1½1 1111 ½0½1 011½ 1000 1111  25.5/44
4   Lozza 2.0 64-bit            ½00½ ½10½ ½111 **** 1½0½ 1010 100½ 0½11 ½½½½ ½1½½ 1½1½ ½½1½  24.5/44  518.00
5   Supernova 2.4 64-bit        ½001 0101 0½½½ 0½1½ **** 1½01 0½½0 011½ 1½1½ ½½½1 0111 1½½1  24.5/44  509.00
6   Drosophila 1.6 64-bit       ½½01 01½½ 10½0 0101 0½10 **** 00½1 1010 1011 0110 1111 ½01½  23.5/44
7   MadChess 3.0 64-bit         0000 ½000 ½0½0 011½ 1½½1 11½0 **** 0½½0 01½½ 0011 111½ 011½  20.5/44
8   Betsabe II 2020             0000 0010 0000 1½00 100½ 0101 1½½1 **** 01½½ 1½½1 101½ 111½  20.0/44
9   Raven 1.20 64-bit           ½½01 0½00 ½1½0 ½½½½ 0½0½ 0100 10½½ 10½½ **** ½001 0½10 ½111  19.0/44
10  Myrddin 0.88 64-bit         ½10½ ½000 100½ ½0½½ ½½½0 1001 1100 0½½0 ½110 **** 1½00 100½  17.5/44
11  paulchen332 0.1.1 64-bit    ½0½0 ½0½0 0111 0½0½ 1000 0000 000½ 010½ 1½01 0½11 **** 01½1  16.5/44
12  CT800 1.43 64-bit           0½00 0100 0000 ½½0½ 0½½0 ½10½ 100½ 000½ ½000 011½ 10½0 ****  12.5/44

Games

Banks 88th Amateur Series Division 7

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

                                1    2    3    4    5    6    7    8    9    0    1    2    
1   Delocto 200419 64-bit       **** 1½½0 111½ 1001 ½001 ½½0½ 1½½1 ½½11 1111 ½11½ 1011 011½  29.0/44
2   Nawito 2103 64-bit          0½½1 **** ½10½ 100½ 1010 11½½ ½11½ ½11½ ½½11 ½111 1011 ½1½0  28.0/44
3   Zevra 2.5 64-bit            000½ ½01½ **** 1111 ½101 1½½1 ½½0½ ½111 1½0½ 1110 1010 111½  27.5/44
4   Drosophila 1.6 64-bit       0110 011½ 0000 **** 0110 ½111 110½ ½½10 111½ ½½½0 1½11 1111  27.0/44
5   MadChess 3.0 64-bit         ½110 0101 ½010 1001 **** ½101 ½1½1 ½101 1½0½ 1½1½ ½0½½ ½111  26.0/44
6   Betsabe II 2020             ½½1½ 00½½ 0½½0 ½000 ½010 **** 0111 ½111 ½01½ 1½01 10½1 0001  21.0/44
7   paulchen332 0.1.1 64-bit    0½½0 ½00½ ½½1½ 001½ ½0½0 1000 **** 01½½ 0½11 ½011 ½111 1½½0  20.5/44
8   Raven 1.20 64-bit           ½½00 ½00½ ½000 ½½01 ½010 ½000 10½½ **** 0½0½ ½½½1 111½ 1110  18.5/44
9   RookieMonster 1.9.2 64-bit  0000 ½½00 0½1½ 000½ 0½1½ ½10½ 1½00 1½1½ **** 0½10 ½110 100½  17.5/44
10  FoxSEE 7.27.0 64-bit        ½00½ ½000 0001 ½½½1 0½0½ 0½10 ½100 ½½½0 1½01 **** 1½½0 1½0½  17.0/44
11  Myrddin 0.88 64-bit         0100 0100 0101 0½00 ½1½½ 01½0 ½000 000½ ½001 0½½1 **** 111½  16.5/44
12  Galjoen 0.41.2 64-bit       100½ ½0½1 000½ 0000 ½000 1110 0½½1 0001 011½ 0½1½ 000½ ****  15.5/44

Games

MadChess 3.1 Beta 26e5323 (Threats)

I added evaluation of threats in the middlegame to MadChess 3.1 Beta. A bonus is given if a pawn or minor piece threatens to capture a more valuable piece on its next move.

The evaluation code does not determine if the threatening piece is defended. That is left to the Search.GetQuietScore method to resolve. In other words, Search.GetQuietScore may determine the opponent can capture the threatening piece, eliminating the threat and rendering the evaluation bonus moot (because loss of a piece greatly outweighs the threat bonus).

Evaluating threats increased the playing strength of MadChess 3.1 Beta by 7 Elo.

 

Feature Category Date Commit1 WAC2 Elo Rating3 Improvement
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