Banks 74th Amateur Series Division 7

MadChess 2.2 participated in Graham Banks’ 74th amateur tournament in division 7.

                                Orio Jumb Dork Rook Fran Bets Lozz Neme Dros MadC Galj Axol 
 1. Orion 0.6 64-bit            #### 1010 0==1 0110 ===1 0101 1==1 101= 111= =11= 1111 ===1  66%  29.0 (940.0, 598.0)
 2. Jumbo 0.6.107 64-bit        0101 #### ==== 1=== 1==1 10=1 1101 0=1= 1101 1101 101= =1=1  65%  28.5 (942.0, 598.0)
 3. Dorky 4.8 64-bit            1==0 ==== #### =110 =11= =11= =10= =101 00== 11== 1=0= 1111  61%  27.0 (948.0, 570.5)
 4. RookieMonster 1.6.7 64-bit  1001 0=== =001 #### 0=10 =111 010= ==10 1=11 11== =1== 1110  58%  25.5 (954.0, 530.3)
 5. FrankWalter 2.4.0 64-bit    ===0 0==0 =00= 1=01 #### 0101 11=0 1=11 =000 =111 =10= =1==  51%  22.5 (966.0, 472.3)
 6. Betsabe II 1.84             1010 01=0 =00= =000 1010 #### 11=1 101= 1101 10=0 1==1 =01=  51%  22.5 (966.0, 471.5)
 7. Lozza 1.18 64-bit           0==0 0010 =01= 101= 00=1 00=0 #### 1==1 1==1 011= 0=1= =0=1  48%  21.0 (972.0, 444.5)
 8. Nemeton 1.81                010= 1=0= =010 ==01 0=00 010= 0==0 #### =11= =0=0 1111 1===  47%  20.5 (974.0, 434.0)
 9. Drosophila 1.5.1 64-bit     000= 0010 11== 0=00 =111 0010 0==0 =00= #### 0111 0=11 01==  43%  19.0 (980.0, 402.0)
10. MadChess 2.2 64-bit         =00= 0010 00== 00== =000 01=1 100= =1=1 1000 #### =101 =011  40%  17.5 (986.0, 367.0)
11. Galjoen 0.39.2 64-bit       0000 010= 0=1= =0== =01= 0==0 1=0= 0000 1=00 =010 #### 1==1  36%  16.0 (992.0, 344.3)
12. Axolotl 1.8 64-bit          ===0 =0=0 0000 0001 =0== =10= =1=0 0=== 10== =100 0==0 ####  34%  15.0 (996.0, 329.3)

Games

Banks 73rd Amateur Series Division 7

MadChess 2.2 participated in Graham Banks’ 73rd amateur tournament in division 7.

                                Baga Donn Dork Orio Ghos MadC Bets Rook Dros Jumb Lozz Romi
 1. Bagatur 1.7 64-bit          #### =0== ==0= 1==0 ===1 =111 11=1 =10= ==1= 110= =111 1=1= 64%  28.0 (944.0, 583.8)
 2. Donna 4.1 64-bit            =1== #### =101 =11= 1=00 1=1= 1110 ===1 1==0 ==== 1110 101= 62%  27.5 (946.0, 592.0)
 3. Dorky 4.8 64-bit            ==1= =010 #### 1=== 111= 1=00 10== =011 1110 0=11 ===1 =0=1 59%  26.0 (952.0, 561.3)
 4. Orion 0.5 64-bit            0==1 =00= 0=== #### 0100 1==1 =001 =1=1 1011 1111 ==1= =1=1 58%  25.5 (954.0, 519.0)
 5. Ghost 3.1 64-bit            ===0 0=11 000= 1011 #### 1101 =101 ==== =111 10=0 10=0 111= 57%  25.0 (956.0, 528.8)
 6. MadChess 2.2 64-bit         =000 0=0= 0=11 0==0 0010 #### 0=1= 11=1 1011 0111 =110 =1=1 52%  23.0 (964.0, 462.3)
 7. Betsabe II 1.84             00=0 0001 01== =110 =010 1=0= #### 1=10 ==0= 1111 ==10 1110 51%  22.5 (966.0, 462.8)
 8. RookieMonster 1.6.6 64-bit  =01= ===0 =100 =0=0 ==== 00=0 0=01 #### 11=0 01=1 001= ===1 43%  19.0 (980.0, 408.3)
 9. Drosophila 1.5.1 64-bit     ==0= 0==1 0001 0100 =000 0100 ==1= 00=1 #### ==01 =110 11=1 43%  19.0 (980.0, 394.0)
10. Jumbo 0.6.96 64-bit         001= ==== 1=00 0000 01=1 1000 0000 10=0 ==10 #### =1=1 =11= 41%  18.0 (984.0, 379.5)
11. Lozza 1.18 64-bit           =000 0001 ===0 ==0= 01=1 =001 ==01 110= =001 =0=0 #### 0011 40%  17.5 (986.0, 380.8)
12. RomiChess P3n 64-bit        0=0= 010= =1=0 =0=0 000= =0=0 0001 ===0 00=0 =00= 1100 #### 30%  13.0 (1004.0, 295.8)

Games

Banks 72nd Amateur Series Division 7

MadChess 2.2 participated in Graham Banks’ 72nd amateur tournament in division 7.

                                Asym Topp Dork Ghos Jumb MadC Rook Bets Baga Lozz Dros Neme  
 1. Asymptote 0.4 64-bit        #### 1=00 =1=1 101= 11=1 1=11 0=== 0110 11== 0=1= 111= =111  67%  29.5 (938.0, 616.3)
 2. Topple 0.3.3 64-bit         0=11 #### ==10 0=11 1=01 0111 ==0= 0111 0011 ==1= 11=1 1111  66%  29.0 (940.0, 601.8)
 3. Dorky 4.8 64-bit            =0=0 ==01 #### 1011 000= 111= 1111 1110 0111 0110 1001 ==11  61%  27.0 (948.0, 562.5)
 4. Ghost 3.1 64-bit            010= 1=00 0100 #### 1=01 0101 010= 1101 =110 1==1 1001 11=1  55%  24.0 (960.0, 494.8)
 5. Jumbo 0.6.96 64-bit         00=0 0=10 111= 0=10 #### 0=== ==11 =1== 101= 0==0 1111 1==0  53%  23.5 (962.0, 495.8)
 6. MadChess 2.2 64-bit         0=00 1000 000= 1010 1=== #### 1010 010= 0100 1111 1=11 1=1=  49%  21.5 (970.0, 426.3)
 7. RookieMonster 1.6.6 64-bit  1=== ==1= 0000 101= ==00 0101 #### ===0 110= ===1 0==1 1010  48%  21.0 (972.0, 458.3)
 8. Betsabe II 1.84             1001 1000 0001 0010 =0== 101= ===1 #### ==== 10== 1110 1010  47%  20.5 (974.0, 432.5)
 9. Bagatur 1.6 64-bit          00== 1100 1000 =001 010= 1011 001= ==== #### 1=1= ===0 =01=  45%  20.0 (976.0, 428.3)
10. Lozza 1.18 64-bit           1=0= ==0= 1001 0==0 1==1 0000 ===0 01== 0=0= #### =0=0 ==1=  40%  17.5 (986.0, 395.8)
11. Drosophila 1.5.1 64-bit     000= 00=0 0110 0110 0000 0=00 1==0 0001 ===1 =1=1 #### 1100  36%  16.0 (992.0, 336.0)
12. Nemeton 1.8                 =000 0000 ==00 00=0 0==1 0=0= 0101 0101 =10= ==0= 0011 ####  33%  14.5 (998.0, 303.5)

Games

MadChess 3.0 Beta Build 103 (Passed Pawns)

I added passed pawn evaluation to MadChess 3.0 Beta. The passed pawn evaluation code scores the following features:

  • Passed Pawns
  • Free Passed Pawns (no pieces blocking promotion path)
  • King Escorted Passed Pawns
  • Unstoppable Passed Pawns (Rule of the Square)

Middlegame Passed Pawns:            000  000  003  008  015  024  034  000
Endgame Passed Pawns:               000  004  018  042  075  118  170  000
Endgame Free Passed Pawns:          000  008  034  077  138  216  311  000
Endgame King Escorted Passed Pawn:  11
Unstoppable Passed Pawn:            775

 

This code improved the engine’s understanding of threats created by pushing passed pawns. It increased the playing strength of MadChess 3.0 Beta by 119 Elo.

 

Feature Category Date Rev1 WAC2 Elo Rating3 Improvement
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. Subversion source code revision
  2. Win At Chess position test, 3 seconds per position
  3. Bullet chess, 2 min / game + 1 sec / move

MadChess 3.0 Beta Build 093 (Staged Move Generation)

I increased the speed at which MadChess 3.0 Beta examines nodes by implementing staged move generation. Previously, in the main search, the chess engine would generate all pseudo-legal moves, sort them by move priority, then iterate through them: testing move legality (does move expose own king to check) and playing the legal moves. This is wasteful if a beta cutoff occurs early in the move list. Usually a capture is responsible for a beta cutoff, so time is wasted generating non-captures. Now the chess engine generates moves in stages.

I could have implemented more stages (QueenCaptures, RookCaptures, BishopKnightCaptures, etc) but I wanted to keep the code simple. Implementing a stage for captures of each piece type involves calculating all attacks to a square, not from a square as the engine already does. To test move legality I have already implemented an IsSquareAttacked(int Square) method that returns a boolean value. This does not generate moves though. If I were to implement a GetAttackingMoves(int Square) method I’d need to write debug code that validates the captures generated by calling GetAttackingMoves for all enemy pieces matches the captures generated by calling GenerateMoves(MoveGeneration.OnlyCaptures). Perhaps I’ll investigate this more fine-grained staged move generation later. For now, the code remains simple.

Search.cs

Search.cs GetDynamicScore

Search.cs GetQuietScore

This improved MadChess 3.0 Beta’s move generation speed (Nodes Per Second) while searching and gained 39 Elo points. MadChess 3.0 Beta searches typical middlegame positions at > 5 million NPS. The evaluation function still is limited to material, piece location, draw detection, and checkmate.

 

Feature Category Date Rev1 WAC2 Elo Rating3 Improvement
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. Subversion source code revision
  2. Win At Chess position test, 3 seconds per position
  3. Bullet chess, 2 min / game + 1 sec / move