New engine: a0lite

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

jhellis3
Posts: 546
Joined: Sat Aug 17, 2013 12:36 am

Re: New engine: a0lite

Post by jhellis3 »

Ok, I've forked it, done some tinkering, and I *think* I have badgyal installed and working properly. Played a few games against Crystal and it seems to make mostly reasonable moves before getting destroyed.

I am not very familiar with python though.... been at least 20 years...

Question: Once I make the changes, they take effect immediately and there is nothing to compile? All of this is done at runtime?

So if I make a local branch with some changes and want to test it against master should I just copy to another folder and run from there?
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: New engine: a0lite

Post by dkappe »

jhellis3 wrote: Tue Mar 31, 2020 6:31 pm
Question: Once I make the changes, they take effect immediately and there is nothing to compile? All of this is done at runtime?

So if I make a local branch with some changes and want to test it against master should I just copy to another folder and run from there?
Yes, just make a new folder. Also check if using the a different network in engine.py makes a difference (and obviously using cuda).
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: New engine: a0lite

Post by dkappe »

I decided to test the virtual loss and tree reuse branch at 30 min + 5 sec against Crafty on 1 cpu. Using Noomen 3.

Code: Select all


   # PLAYER    :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
   1 Crafty    :       0   ----    26.5      40  66.2     100   14   25    1  62.5
   2 A0Lite    :    -126     67    13.5      40  33.8     ---    1   25   14  62.5

Not quite there yet. :-)
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: New engine: a0lite

Post by dkappe »

I added another branch, 'batching-prune,' that has smart pruning. Seems to make a fair bit of difference.

[pgn]
[Event "?"]
[Site "?"]
[Date "2020.04.01"]
[Round "5"]
[White "A0Lite-Pruning"]
[Black "A0Lite-Batch"]
[Result "1-0"]
[ECO "B06"]
[GameDuration "00:02:33"]
[GameEndTime "2020-04-01T16:49:34.165 CDT"]
[GameStartTime "2020-04-01T16:47:00.955 CDT"]
[Opening "Robatsch defense"]
[PlyCount "91"]
[TimeControl "60+1"]

1. e4 {book} g6 {book} 2. d4 {book} Bg7 {book} 3. Nc3 {book} c6 {book}
4. Nf3 {+0.54/1 3.2s} d6 {-0.48/1 2.6s} 5. h3 {+0.54/1 3.1s} Nf6 {-0.49/1 2.5s}
6. Be2 {+0.52/1 3.0s} O-O {-0.43/1 2.4s} 7. O-O {+0.45/1 2.7s}
Nbd7 {-0.45/1 2.4s} 8. a4 {+0.45/1 2.8s} e5 {-0.36/1 2.3s}
9. dxe5 {+0.42/1 2.2s} Nxe5 {-0.43/1 2.3s} 10. Nxe5 {+0.35/1 2.5s}
dxe5 {-0.31/1 2.2s} 11. Be3 {+0.37/1 2.6s} Qc7 {-0.33/1 2.2s}
12. a5 {+0.38/1 2.5s} Rd8 {-0.41/1 2.1s} 13. Qc1 {+0.36/1 2.5s}
Be6 {-0.23/1 2.1s} 14. Bg5 {+0.13/1 2.4s} b5 {+0.01/1 2.0s}
15. axb6 {+0.04/1 2.0s} axb6 {+0.02/1 2.0s} 16. Qe3 {+0.06/1 2.1s}
b5 {-0.16/1 2.0s} 17. Rfb1 {+0.25/1 2.2s} b4 {-0.29/1 1.9s}
18. Na4 {+0.19/1 1.8s} h6 {-0.09/1 1.9s} 19. Bxf6 {+0.29/1 2.1s}
Bxf6 {-0.14/1 1.8s} 20. Nc5 {+0.20/1 1.2s} Ba2 {-0.08/1 1.8s}
21. Rd1 {+0.10/1 1.8s} Rxd1+ {+0.05/1 1.8s} 22. Bxd1 {+0.10/1 1.8s}
Bg5 {-0.04/1 1.8s} 23. Qe1 {+0.14/1 1.6s} Qd6 {+0.05/1 1.7s}
24. Nd3 {0.00/1 1.8s} c5 {+0.14/1 1.7s} 25. Be2 {-0.03/1 1.6s}
Kg7 {+0.07/1 1.7s} 26. g3 {+0.06/1 1.8s} Qd4 {+0.06/1 1.6s}
27. h4 {+0.13/1 1.7s} Be7 {-0.16/1 1.6s} 28. Bf1 {+0.37/1 1.4s}
h5 {-0.23/1 1.6s} 29. c3 {+0.34/1 1.4s} Qd6 {-0.22/1 1.6s}
30. Nc1 {+0.30/1 1.6s} b3 {-0.27/1 1.5s} 31. Bc4 {+0.35/1 1.7s}
Ra4 {-0.30/1 1.5s} 32. Qe2 {+0.70/1 1.7s} Qd7 {-0.73/1 1.5s}
33. Bb5 {+2.37/1 1.6s} Qa7 {-1.96/1 1.5s} 34. Bxa4 {+2.25/1 1.1s}
Qxa4 {-1.98/1 1.5s} 35. c4 {+2.38/1 1.6s} Bf6 {-2.39/1 1.4s}
36. Qd3 {+2.14/1 1.6s} Qb4 {-2.47/1 1.4s} 37. Nxa2 {+2.46/1 1.5s}
bxa2 {-2.02/1 1.4s} 38. Rxa2 {+2.57/1 1.5s} Qe1+ {-2.12/1 1.4s}
39. Kg2 {+3.44/1 1.3s} Be7 {-4.58/1 1.4s} 40. Ra3 {+3.82/1 1.5s}
Qc1 {-4.20/1 1.4s} 41. Ra7 {+5.85/1 1.4s} Bf6 {-6.47/1 1.3s}
42. Qd5 {+6.80/1 1.4s} Be7 {-12.98/1 1.3s} 43. Rxe7 {+4.22/1 1.4s}
Qf1+ {-3.48/1 1.3s} 44. Kxf1 {+95.27/1 0.81s} Kh6 {-122.48/1 1.3s}
45. Qxf7 {+106.08/1 1.4s} g5 {-127.13/1 1.3s}
46. Re6# {+320.00/1 0.004s, White mates} 1-0
[/pgn]
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
giovanni
Posts: 142
Joined: Wed Jul 08, 2015 12:30 pm

Re: New engine: a0lite

Post by giovanni »

@dkappe
Impressive, many thanks. One thing I was curious about is the following. Is there any resource available that I could use If I would like to replicate the generation of the Bad Gyal neural net? I mean a resource that would tell me: these are the games and these are the scripts you need to use. Ideally, it would be also a little tutorial for people like me that know next to zero about this topic, but notheless found fascinating what have done.
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: New engine: a0lite

Post by dkappe »

Well, a description of the Bad Gyal nets can be found here: https://github.com/dkappe/leela-chess-w ... i/Bad-Gyal

Bad Gyal data can be found here: https://github.com/dkappe/leela-chess-w ... -Gyal-Data

Training is a bit more challenging. Daniel Shawul’s Keras training code on github is a lot cleaner and easier to understand than leela’s, but it’s a deep subject.

https://github.com/dshawul/nn-train
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: New engine: a0lite

Post by dkappe »

Using a endgame_net branch, I combined bad Gyal 8 and little Ender, switching at 16 pieces. (Need to update the badgyal package for this.) Getting closer. Next is basic certainty propagation. Will put the a0lite games up on lichess. TC 3 min + 2 sec

Code: Select all


   # PLAYER       :  RATING  ERROR  POINTS  PLAYED   (%)  CFS(%)    W    D    L  D(%)
   1 Crafty       :       0   ----    56.5     100  56.5      99   30   53   17  53.0
   2 A0Lite-LE    :     -52     46    43.5     100  43.5     ---   17   53   30  53.0

White advantage = 122.70 +/- 25.27
Draw rate (equal opponents) = 62.88 % +/- 6.31

Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
jhellis3
Posts: 546
Joined: Sat Aug 17, 2013 12:36 am

Re: New engine: a0lite

Post by jhellis3 »

FWIW, I ran a couple of my crazy tests.... and the results showed my assumption to be more or less exactly wrong.

Only incrementing visit count for own moves turned out much worse, while only doing it for opponent moves turned out about equal (in my very limited sample size).

My guess is that when the opponent doesn't have a good move, you search for another & another... which leads to more opponent visits, and somewhat oddly end ups being the search criteria of primary importance.
dkappe
Posts: 1631
Joined: Tue Aug 21, 2018 7:52 pm
Full name: Dietrich Kappe

Re: New engine: a0lite

Post by dkappe »

I debugged the certainty propagation (essentially alpha/beta backup of terminals) in MCTS. Now that it's working, it seems to make a huge difference. No oops! checkmates or won endgames slipping away into a draw.

This is with Bad Gyal 8 and Little Ender at 3+2. Will add tree reuse tomorrow.

Stay safe everyone.

[pgn]
[Event "?"]
[Site "?"]
[Date "2020.04.18"]
[Round "2"]
[White "A0Lite-LE-Certainty"]
[Black "Crafty"]
[Result "1-0"]
[ECO "A01"]
[GameDuration "00:11:51"]
[GameEndTime "2020-04-18T01:22:10.502 CDT"]
[GameStartTime "2020-04-18T01:10:19.260 CDT"]
[Opening "Nimzovich-Larsen attack"]
[PlyCount "206"]
[Termination "adjudication"]
[TimeControl "180+2"]
[Variation "English Variation"]

1. b3 {book} c5 {book} 2. Bb2 {book} Nc6 {book} 3. e3 {book} Nf6 {book}
4. Bb5 {+0.10/1 7.6s} e6 {-0.02/22 5.4s} 5. Nf3 {+0.16/1 7.3s}
Be7 {+0.04/23 5.3s} 6. Bxc6 {+0.15/1 7.1s} bxc6 {+0.07/23 5.2s}
7. d3 {+0.17/1 6.9s} O-O {+0.07/22 9.2s} 8. e4 {+0.22/1 6.7s} d5 {-0.08/23 5.0s}
9. Nbd2 {+0.18/1 6.5s} Ba6 {-0.08/22 4.9s} 10. Qe2 {+0.44/1 6.3s}
Nd7 {-0.06/22 4.8s} 11. O-O {+0.39/1 6.2s} Bd6 {-0.06/22 4.8s}
12. c4 {+0.39/1 6.0s} Rb8 {-0.04/19 5.2s} 13. Rae1 {+0.52/1 5.8s}
Qa5 {-0.12/20 10s} 14. Ra1 {+0.35/1 5.7s} Rfe8 {-0.06/19 15s}
15. e5 {+0.44/1 5.5s} Be7 {-0.17/21 7.4s} 16. h4 {+0.59/1 5.4s}
Rb7 {-0.10/20 19s} 17. h5 {+0.85/1 5.3s} Rc8 {-0.08/19 8.4s}
18. h6 {+1.39/1 5.1s} gxh6 {-0.47/21 8.2s} 19. Nh2 {+1.77/1 5.0s}
Bf8 {-0.07/21 23s} 20. f4 {+1.92/1 4.9s} Bg7 {0.00/20 7.6s}
21. f5 {+2.01/1 4.8s} exf5 {0.00/19 3.3s} 22. Rxf5 {+1.77/1 4.7s}
Re8 {+0.23/18 7.1s} 23. Ng4 {+1.74/1 4.6s} Re6 {+0.24/19 7.2s}
24. Nf1 {+1.79/1 4.5s} Qb4 {+0.32/19 4.6s} 25. Rc1 {+1.89/1 4.4s}
Qa5 {+0.11/21 6.8s} 26. Bc3 {+1.85/1 4.3s} Qc7 {+0.54/21 7.3s}
27. Ng3 {+2.08/1 4.2s} d4 {+1.37/19 4.4s} 28. Bd2 {+1.92/1 4.1s}
Nxe5 {+1.67/21 5.0s} 29. Nxe5 {+1.88/1 4.0s} Rxe5 {+0.98/20 5.6s}
30. Qf3 {+2.04/1 3.9s} Re7 {+1.35/21 11s} 31. Rf1 {+2.32/1 3.8s}
Qd7 {+2.37/20 7.0s} 32. Nh5 {+3.37/1 3.8s} Re6 {+4.98/22 2.8s}
33. Nxg7 {+2.20/1 3.7s} Kxg7 {+5.24/23 1.6s} 34. Qg3+ {+1.95/1 3.6s}
Rg6 {+1.25/21 1.9s} 35. Qe5+ {+2.08/1 3.6s} Kg8 {+1.15/23 1.9s}
36. Re1 {+2.12/1 3.5s} Qd6 {+0.96/22 2.4s} 37. Qxd6 {+2.36/1 3.4s}
Rxd6 {+1.10/25 1.6s} 38. Re8+ {+2.05/1 3.4s} Kg7 {+0.73/10 0.005s}
39. Bf4 {+2.32/1 3.3s} Rg6 {+0.97/24 1.8s} 40. Rxc5 {+2.09/1 3.3s}
Rd7 {+1.06/24 1.6s} 41. Ra5 {+1.97/1 3.2s} Bb7 {+1.02/24 4.5s}
42. g3 {+1.95/1 3.2s} a6 {+0.84/24 2.2s} 43. b4 {+1.92/1 3.1s}
f6 {+0.83/25 2.8s} 44. Kf2 {+1.93/1 3.1s} Kf7 {+0.96/25 1.8s}
45. Rh8 {+1.97/1 3.0s} Kg7 {+0.95/28 1.6s} 46. Rb8 {+1.96/1 3.0s}
Kf7 {+0.97/28 1.6s} 47. a4 {+2.03/1 3.0s} Rg8 {+0.71/25 1.9s}
48. Rxg8 {+1.69/1 2.9s} Kxg8 {+0.90/24 2.4s} 49. Rh5 {+1.66/1 2.9s}
Ba8 {+0.90/25 4.2s} 50. Rxh6 {+2.07/1 2.9s} Kg7 {+0.80/24 1.6s}
51. Rh4 {+1.98/1 2.8s} Kg6 {+0.97/25 2.1s} 52. Rg4+ {+1.96/1 2.8s}
Kf5 {+1.02/23 1.6s} 53. Rg8 {+2.08/1 2.8s} Bb7 {+0.96/24 1.6s}
54. Bh6 {+2.21/1 2.7s} Ke6 {+1.26/23 6.8s} 55. Rb8 {+2.37/1 2.7s}
Kd6 {+1.26/23 1.9s} 56. Bf8+ {+2.67/1 2.7s} Kc7 {+1.20/24 2.0s}
57. Re8 {+2.09/1 2.6s} Rd8 {+1.23/25 1.5s} 58. Re7+ {+2.48/1 2.6s}
Rd7 {+1.24/25 1.5s} 59. Re4 {+2.46/1 2.6s} c5 {+1.47/22 4.1s}
60. Rf4 {+2.55/1 2.6s} cxb4 {+1.49/22 1.4s} 61. Bxb4 {+2.57/1 2.5s}
Rf7 {+1.47/22 1.5s} 62. Bc5 {+3.28/1 2.5s} f5 {+1.56/22 4.8s}
63. Bxd4 {+4.88/1 2.5s} Bc6 {+1.56/21 4.6s} 64. a5 {+6.43/1 2.5s}
Ba4 {+1.86/20 2.9s} 65. Ke3 {+5.86/1 2.5s} Kd6 {+1.82/20 2.8s}
66. Rh4 {+8.48/1 2.4s} Re7+ {+1.83/21 1.4s} 67. Kd2 {+13.19/1 2.4s}
Be8 {+1.43/22 1.3s} 68. Be3 {+7.18/1 2.4s} Kd7 {+2.01/21 3.1s}
69. Rd4+ {+5.20/1 2.4s} Ke6 {+1.75/22 1.6s} 70. Rd8 {+10.28/1 2.4s}
Bc6 {+1.90/23 1.3s} 71. Bf4 {+7.97/1 2.4s} Kf7 {+2.10/21 2.8s}
72. Kc3 {+7.37/1 2.3s} Re8 {+2.79/22 2.7s} 73. Rd6 {+13.44/1 2.3s}
Rc8 {+2.94/22 2.3s} 74. Rh6 {+9.92/1 2.3s} Kg7 {+2.69/20 1.9s}
75. Rd6 {+10.42/1 2.3s} Kf7 {0.00/56 1.4s} 76. Rh6 {+10.54/1 2.3s}
Kg7 {0.00/60 1.6s} 77. Re6 {+7.54/1 2.3s} Kf7 {+2.90/20 1.8s}
78. Rd6 {+14.64/1 2.3s} Kg7 {+3.11/24 2.8s} 79. d4 {+7.10/1 2.3s}
Bb5 {+2.77/18 2.4s} 80. c5 {+9.22/1 2.3s} h5 {+3.21/19 2.2s}
81. Kb4 {+9.23/1 2.3s} Kf7 {+3.91/16 2.1s} 82. Rh6 {+8.42/1 2.2s}
Kg7 {+3.22/18 2.0s} 83. Rxh5 {+11.29/1 2.2s} Rd8 {+4.05/20 2.0s}
84. Be5+ {+6.35/1 2.2s} Kg6 {+2.99/30 1.2s} 85. Rh4 {+7.08/1 2.2s}
Re8 {+3.56/21 2.4s} 86. Rh2 {+4.90/1 2.2s} Kg5 {+3.45/19 2.2s}
87. Bf4+ {+8.85/1 2.2s} Kg4 {+4.42/21 1.7s} 88. Rh6 {+6.94/1 2.2s}
Re4 {+4.98/20 2.3s} 89. Rd6 {+6.19/1 2.2s} Kf3 {+7.11/26 1.8s}
90. c6 {+7.82/1 2.2s} Bxc6 {+7.11/27 1.3s} 91. Rxc6 {+12.36/1 2.2s}
Rxd4+ {+7.11/25 1.3s} 92. Kc5 {+10.32/1 2.2s} Rd1 {+7.14/25 2.1s}
93. Rxa6 {+8.89/1 2.1s} Ra1 {+7.14/27 1.3s} 94. Ra7 {+6.78/1 2.1s}
Ke4 {+7.85/22 3.2s} 95. Ra8 {+7.53/1 2.1s} Kf3 {+7.85/24 2.2s}
96. a6 {+9.01/1 2.1s} Ke2 {+8.11/23 2.5s} 97. a7 {+8.36/1 2.1s}
Kf3 {+10.03/27 2.0s} 98. Be5 {+8.32/1 2.1s} Ra6 {+10.03/23 1.6s}
99. Kb5 {+9.60/1 2.1s} Ra3 {2.2s} 100. Bd6 {+8.90/1 2.1s} Ra2 {2.2s}
101. Bc5 {+8.13/1 2.1s} Kxg3 {+9.93/20 1.3s} 102. Rg8+ {+6.87/1 2.1s}
Kf4 {+10.17/23 1.6s} 103. a8=Q {+6.76/1 2.1s}
Rxa8 {+10.43/23 1.9s, White wins by adjudication: SyzygyTB} 1-0
[/pgn]
Fat Titz by Stockfish, the engine with the bodaciously big net. Remember: size matters. If you want to learn more about this engine just google for "Fat Titz".
Joerg Oster
Posts: 937
Joined: Fri Mar 10, 2006 4:29 pm
Location: Germany

Re: New engine: a0lite

Post by Joerg Oster »

dkappe wrote: Sat Apr 18, 2020 8:30 am I debugged the certainty propagation (essentially alpha/beta backup of terminals) in MCTS. Now that it's working, it seems to make a huge difference. No oops! checkmates or won endgames slipping away into a draw.

This is with Bad Gyal 8 and Little Ender at 3+2. Will add tree reuse tomorrow.

Stay safe everyone.

[pgn]
[Event "?"]
[Site "?"]
[Date "2020.04.18"]
[Round "2"]
[White "A0Lite-LE-Certainty"]
[Black "Crafty"]
[Result "1-0"]
[ECO "A01"]
[GameDuration "00:11:51"]
[GameEndTime "2020-04-18T01:22:10.502 CDT"]
[GameStartTime "2020-04-18T01:10:19.260 CDT"]
[Opening "Nimzovich-Larsen attack"]
[PlyCount "206"]
[Termination "adjudication"]
[TimeControl "180+2"]
[Variation "English Variation"]

1. b3 {book} c5 {book} 2. Bb2 {book} Nc6 {book} 3. e3 {book} Nf6 {book}
4. Bb5 {+0.10/1 7.6s} e6 {-0.02/22 5.4s} 5. Nf3 {+0.16/1 7.3s}
Be7 {+0.04/23 5.3s} 6. Bxc6 {+0.15/1 7.1s} bxc6 {+0.07/23 5.2s}
7. d3 {+0.17/1 6.9s} O-O {+0.07/22 9.2s} 8. e4 {+0.22/1 6.7s} d5 {-0.08/23 5.0s}
9. Nbd2 {+0.18/1 6.5s} Ba6 {-0.08/22 4.9s} 10. Qe2 {+0.44/1 6.3s}
Nd7 {-0.06/22 4.8s} 11. O-O {+0.39/1 6.2s} Bd6 {-0.06/22 4.8s}
12. c4 {+0.39/1 6.0s} Rb8 {-0.04/19 5.2s} 13. Rae1 {+0.52/1 5.8s}
Qa5 {-0.12/20 10s} 14. Ra1 {+0.35/1 5.7s} Rfe8 {-0.06/19 15s}
15. e5 {+0.44/1 5.5s} Be7 {-0.17/21 7.4s} 16. h4 {+0.59/1 5.4s}
Rb7 {-0.10/20 19s} 17. h5 {+0.85/1 5.3s} Rc8 {-0.08/19 8.4s}
18. h6 {+1.39/1 5.1s} gxh6 {-0.47/21 8.2s} 19. Nh2 {+1.77/1 5.0s}
Bf8 {-0.07/21 23s} 20. f4 {+1.92/1 4.9s} Bg7 {0.00/20 7.6s}
21. f5 {+2.01/1 4.8s} exf5 {0.00/19 3.3s} 22. Rxf5 {+1.77/1 4.7s}
Re8 {+0.23/18 7.1s} 23. Ng4 {+1.74/1 4.6s} Re6 {+0.24/19 7.2s}
24. Nf1 {+1.79/1 4.5s} Qb4 {+0.32/19 4.6s} 25. Rc1 {+1.89/1 4.4s}
Qa5 {+0.11/21 6.8s} 26. Bc3 {+1.85/1 4.3s} Qc7 {+0.54/21 7.3s}
27. Ng3 {+2.08/1 4.2s} d4 {+1.37/19 4.4s} 28. Bd2 {+1.92/1 4.1s}
Nxe5 {+1.67/21 5.0s} 29. Nxe5 {+1.88/1 4.0s} Rxe5 {+0.98/20 5.6s}
30. Qf3 {+2.04/1 3.9s} Re7 {+1.35/21 11s} 31. Rf1 {+2.32/1 3.8s}
Qd7 {+2.37/20 7.0s} 32. Nh5 {+3.37/1 3.8s} Re6 {+4.98/22 2.8s}
33. Nxg7 {+2.20/1 3.7s} Kxg7 {+5.24/23 1.6s} 34. Qg3+ {+1.95/1 3.6s}
Rg6 {+1.25/21 1.9s} 35. Qe5+ {+2.08/1 3.6s} Kg8 {+1.15/23 1.9s}
36. Re1 {+2.12/1 3.5s} Qd6 {+0.96/22 2.4s} 37. Qxd6 {+2.36/1 3.4s}
Rxd6 {+1.10/25 1.6s} 38. Re8+ {+2.05/1 3.4s} Kg7 {+0.73/10 0.005s}
39. Bf4 {+2.32/1 3.3s} Rg6 {+0.97/24 1.8s} 40. Rxc5 {+2.09/1 3.3s}
Rd7 {+1.06/24 1.6s} 41. Ra5 {+1.97/1 3.2s} Bb7 {+1.02/24 4.5s}
42. g3 {+1.95/1 3.2s} a6 {+0.84/24 2.2s} 43. b4 {+1.92/1 3.1s}
f6 {+0.83/25 2.8s} 44. Kf2 {+1.93/1 3.1s} Kf7 {+0.96/25 1.8s}
45. Rh8 {+1.97/1 3.0s} Kg7 {+0.95/28 1.6s} 46. Rb8 {+1.96/1 3.0s}
Kf7 {+0.97/28 1.6s} 47. a4 {+2.03/1 3.0s} Rg8 {+0.71/25 1.9s}
48. Rxg8 {+1.69/1 2.9s} Kxg8 {+0.90/24 2.4s} 49. Rh5 {+1.66/1 2.9s}
Ba8 {+0.90/25 4.2s} 50. Rxh6 {+2.07/1 2.9s} Kg7 {+0.80/24 1.6s}
51. Rh4 {+1.98/1 2.8s} Kg6 {+0.97/25 2.1s} 52. Rg4+ {+1.96/1 2.8s}
Kf5 {+1.02/23 1.6s} 53. Rg8 {+2.08/1 2.8s} Bb7 {+0.96/24 1.6s}
54. Bh6 {+2.21/1 2.7s} Ke6 {+1.26/23 6.8s} 55. Rb8 {+2.37/1 2.7s}
Kd6 {+1.26/23 1.9s} 56. Bf8+ {+2.67/1 2.7s} Kc7 {+1.20/24 2.0s}
57. Re8 {+2.09/1 2.6s} Rd8 {+1.23/25 1.5s} 58. Re7+ {+2.48/1 2.6s}
Rd7 {+1.24/25 1.5s} 59. Re4 {+2.46/1 2.6s} c5 {+1.47/22 4.1s}
60. Rf4 {+2.55/1 2.6s} cxb4 {+1.49/22 1.4s} 61. Bxb4 {+2.57/1 2.5s}
Rf7 {+1.47/22 1.5s} 62. Bc5 {+3.28/1 2.5s} f5 {+1.56/22 4.8s}
63. Bxd4 {+4.88/1 2.5s} Bc6 {+1.56/21 4.6s} 64. a5 {+6.43/1 2.5s}
Ba4 {+1.86/20 2.9s} 65. Ke3 {+5.86/1 2.5s} Kd6 {+1.82/20 2.8s}
66. Rh4 {+8.48/1 2.4s} Re7+ {+1.83/21 1.4s} 67. Kd2 {+13.19/1 2.4s}
Be8 {+1.43/22 1.3s} 68. Be3 {+7.18/1 2.4s} Kd7 {+2.01/21 3.1s}
69. Rd4+ {+5.20/1 2.4s} Ke6 {+1.75/22 1.6s} 70. Rd8 {+10.28/1 2.4s}
Bc6 {+1.90/23 1.3s} 71. Bf4 {+7.97/1 2.4s} Kf7 {+2.10/21 2.8s}
72. Kc3 {+7.37/1 2.3s} Re8 {+2.79/22 2.7s} 73. Rd6 {+13.44/1 2.3s}
Rc8 {+2.94/22 2.3s} 74. Rh6 {+9.92/1 2.3s} Kg7 {+2.69/20 1.9s}
75. Rd6 {+10.42/1 2.3s} Kf7 {0.00/56 1.4s} 76. Rh6 {+10.54/1 2.3s}
Kg7 {0.00/60 1.6s} 77. Re6 {+7.54/1 2.3s} Kf7 {+2.90/20 1.8s}
78. Rd6 {+14.64/1 2.3s} Kg7 {+3.11/24 2.8s} 79. d4 {+7.10/1 2.3s}
Bb5 {+2.77/18 2.4s} 80. c5 {+9.22/1 2.3s} h5 {+3.21/19 2.2s}
81. Kb4 {+9.23/1 2.3s} Kf7 {+3.91/16 2.1s} 82. Rh6 {+8.42/1 2.2s}
Kg7 {+3.22/18 2.0s} 83. Rxh5 {+11.29/1 2.2s} Rd8 {+4.05/20 2.0s}
84. Be5+ {+6.35/1 2.2s} Kg6 {+2.99/30 1.2s} 85. Rh4 {+7.08/1 2.2s}
Re8 {+3.56/21 2.4s} 86. Rh2 {+4.90/1 2.2s} Kg5 {+3.45/19 2.2s}
87. Bf4+ {+8.85/1 2.2s} Kg4 {+4.42/21 1.7s} 88. Rh6 {+6.94/1 2.2s}
Re4 {+4.98/20 2.3s} 89. Rd6 {+6.19/1 2.2s} Kf3 {+7.11/26 1.8s}
90. c6 {+7.82/1 2.2s} Bxc6 {+7.11/27 1.3s} 91. Rxc6 {+12.36/1 2.2s}
Rxd4+ {+7.11/25 1.3s} 92. Kc5 {+10.32/1 2.2s} Rd1 {+7.14/25 2.1s}
93. Rxa6 {+8.89/1 2.1s} Ra1 {+7.14/27 1.3s} 94. Ra7 {+6.78/1 2.1s}
Ke4 {+7.85/22 3.2s} 95. Ra8 {+7.53/1 2.1s} Kf3 {+7.85/24 2.2s}
96. a6 {+9.01/1 2.1s} Ke2 {+8.11/23 2.5s} 97. a7 {+8.36/1 2.1s}
Kf3 {+10.03/27 2.0s} 98. Be5 {+8.32/1 2.1s} Ra6 {+10.03/23 1.6s}
99. Kb5 {+9.60/1 2.1s} Ra3 {2.2s} 100. Bd6 {+8.90/1 2.1s} Ra2 {2.2s}
101. Bc5 {+8.13/1 2.1s} Kxg3 {+9.93/20 1.3s} 102. Rg8+ {+6.87/1 2.1s}
Kf4 {+10.17/23 1.6s} 103. a8=Q {+6.76/1 2.1s}
Rxa8 {+10.43/23 1.9s, White wins by adjudication: SyzygyTB} 1-0
[/pgn]
Very nice!
Jörg Oster