This weekend the 13th International CSVN Tournament was held in Leiden. Of course Rookie was going to play.
During my registration I had some wild programming plans, but as motivation was lacking to realize them I decided to play with the same version as in the last HGM blitz tournaments. So no planned Trojanbases (sorry Ronald), and no check generation in the quiescence search yet. Those have to wait for later this year. But also no stress because the playing version had proved to be stable and doing quite well in the blitz tournaments.
Also the book I used was the same as during HGM's May blitz tournament, with the same settings and no updates between rounds. I had planned an update but the new book iteration couldn't finish in time. I normally update Rookie's book in batches of about one month.
Also no hardware upgrade, as I had no ambition to go for a win among some much stronger competition. This was about having a good time with other hobbyists. The AMD Phenom 1100T is now about three years old, but still quite decent.
Day 1
Round 1: Dirty - Rookie
For the ICT I used the same machine and OS installation as the previous on-site tournament two years ago (Tilburg), with the same installation of XBoard. I can't be bothered to upgrade systems when there is no functional need. With Linux (Ubuntu in this case) you always see that afterwards things don't work anymore the way you expect and a lot of frustration is caused by that. "Linux is only free if your time is worth nothing", is a well-known saying. I do Rookie's programming on a MacBook Pro by the way.
So the motto is "what works works". Can't go wrong there. Except when it does...
The opening against Dirty played fine until Rookie had to make its first move out of book: Instead of moving after about two minutes or so, all cores went idle and XBoard showed the game had ended in a draw... what is that???
Ok, nothing in my setup had indeed changed, except the chess program... And what changed is that on the chess servers Rookie can offer and accept draws, because that is really needed for unsupervised server play.
For debugging the courtesy draw rules the program outputs some of its internal state after each search. You guessed it: this information contains the word 'draw' and xboard happily accepts that as a command, ending the game right away. A recompile to suppress this output fixed it and the game could continue. Those were anxious minutes.
The actual game never left the draw margins and ended in an unwinnable endgame with all pawns on the King side and only Queens. I proposed the draw to Fons as I didn't feel like playing it out and I had given myself too little operator time for a long game. For the remainder of the tournament I changed that from 10 minutes to 15, which is very comfortable. No stress is more important than winning.
[Site "Leiden"]
[Date "2013.06.02"]
[Round "1.3"]
[White "Dirty"]
[Black "Rookie"]
[Result "1/2-1/2"]
[ECO "A22 English, Carls' Bremen system"]
1. c4 e5 2. Nc3 Nf6 3. g3 Bc5 4. Bg2 O-O 5. e3 Nc6 6. Nge2 d6 7. O-O Bf5 8. d4
Bb6 9. d5 Nb8 10. Na4 Nbd7 11. Nxb6 axb6 12. a4 e4 13. h3 Ne5 14. b3 Nf3+ 15.
Kh1 Ne5 16. Bb2 Re8 17. Nf4 g6 18. Kg1 h5 19. Ra2 c5 20. dxc6 bxc6 21. Bc3 Qe7
22. Rd2 Rad8 23. Qa1 Nfd7 24. Ra2 Nf3+ 25. Bxf3 exf3 26. Rd1 Ne5 27. Rad2 Rd7
28. Bb4 c5 29. Bc3 Qd8 30. a5 bxa5 31. Qa4 Kf8 32. Rd5 f6 33. Bxa5 Qe7 34. b4
Ra8 35. bxc5 dxc5 36. Qb5 Kf7 37. Bc3 Raa7 38. Qb8 Be4 39. Bxe5 fxe5 40. Rxd7
Rxd7 41. Nd5 Bxd5 42. cxd5 e4 43. Ra1 Qd6 44. Qc8 Rc7 45. Qa8 c4 46. Ra2 Kg7
47. Qb8 Rd7 48. Qe8 Qe7 49. Qc8 Rc7 50. Qb8 Rb7 51. Qf4 Rd7 52. Ra8 Kh7 53. Qb8
Qg7 54. Qe8 Re7 55. Qd8 c3 56. Rc8 Rd7 57. Qa5 Qe5 58. h4 c2 59. Rxc2 Qxd5 60.
Qa4 Qd3 61. Rc1 Qd2
{[%clk 0:14:25]} 1/2-1/2
Round 2: Rookie - Kallisto
Kallisto is always a dangerous opponent, tactically very sharp and well-balanced. It hasn't been updated since Aegon days, even running in 16-bit DOS mode (but with 32-bit hash tables). On the i3 laptop it still easily reaches 1 to 2 milion nodes per second, so you have to be careful. Bart mentioned he was planning to change his DOS dependency because of the trouble modern computers give him to run DOS natively.
During the previous encounter several years ago Rookie couldn't break Kallisto's defense. This time it was much easier and the first full point was in. The bruter force won.
[Event "Int. CSVN Tournament"]
[Site "Leiden"]
[Date "2013.06.02"]
[Round "2.2"]
[White "Rookie"]
[Black "Kallisto"]
[Result "1-0"]
[ECO "C77 Ruy Lopez, Morphy defence"]
1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. d4 exd4 6. O-O Be7 7. e5 Ne4 8.
Nxd4 Bc5 9. c3 Qh4 10. g3 Qh3 11. Qf3 Bxd4 12. cxd4 b5 13. Bd1 d5 14. exd6 f5
15. Re1 Bd7 16. dxc7 O-O 17. Qb3+ Rf7 18. Qd5 Nf6 19. Qd6 Na5 20. Nc3 Nc4 21.
Qc5 Rc8 22. f4 h5 23. Bf3 Ng4 24. Bxg4 Qxg4 25. Nd5 h4 26. Kg2 Kh7 27. b3 Na5
28. Bd2 Nc6 29. a4 b4 30. Rac1 a5 31. Re3 Qg6 32. Be1 Qg4 33. Qd6 Nxd4 34. Nb6
Ne2 35. h3 Rf6 36. hxg4 Rxd6 37. Nxc8
{[%clk 0:36:31]} 1-0
Round 3: The King - Rookie
More or less the same as the last Chessmaster release. Johan is running on somewhat older hardware, so here lies an opportunity for Rookie. Rookie went for the attack but misplaced its Rook on h5, which got cut off by White's f5. Rookie has no individual piece mobility evaluation so this had to be resolved by search. The Rook was rescued in exchange for an unbalanced endgame with Pawns for a piece, but with serious weaknesses of the White's Queen-side Pawns. Rookie seemed to hesitate, but eventually the Pawns become mightier, pieces could be sacrificed for unstoppable connected passers and the game was over.
Personally this game is a big milestone: The King's performance in the DOCCC of 1992(!) was one of the motivations to convert my mate solver into a playing program at the time. My first tournament in 1993 didn't go too well for Rookie and the gap with the top programs of the time seemed unbridgeable. This point is Rookie's first against The King. After two decades it is about time one would say... Of course hardware makes a big difference, but so was the case in 1993.
[Event "Int. CSVN Tournament"]
[Site "Leiden"]
[Date "2013.06.02"]
[Round "3.4"]
[White "The King"]
[Black "Rookie"]
[Result "0-1"]
[ECO "C92 Ruy Lopez, closed, 9.h3"]
1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3
O-O 9. h3 Re8 10. d4 Bb7 11. Nbd2 Bf8 12. a3 h6 13. Bc2 d5 14. Nxe5 Nxe5 15.
dxe5 Rxe5 16. f4 Bc5+ 17. Kh2 Bc8 18. g3 Rh5 19. f5 g6 20. Nb3 Bf2 21. Re2 Nxe4
22. Rxe4 Bxf5 23. Rg4 Bxg4 24. Qxg4 Qf6 25. Kg2 Bb6 26. Bf4 Re8 27. Rf1 d4 28.
Qf3 dxc3 29. bxc3 Qe6 30. g4 Qe2+ 31. Kg3 Qxf3+ 32. Rxf3 Rd5 33. h4 g5 34. hxg5
hxg5 35. Bc1 Re1 36. Bf5 f6 37. Bd2 Rg1+ 38. Kh3 Re5 39. Bc2 Kf7 40. Rg3 Rxg3+
41. Kxg3 Be3 42. Kf3 Bxd2 43. Nxd2 Re1 44. Nb3 Rf1+ 45. Ke3 Rf4 46. Nc5 Rxg4
47. Nxa6 c6 48. Be4 Ke7 49. Bxc6 Rc4 50. Bxb5 Rxc3+ 51. Kd4 Rxa3 52. Nc7 Rf3
53. Bc6 Rf2 54. Bb7 Rd2+ 55. Ke4 Re2+ 56. Kf5 Rf2+ 57. Ke4 Rf4+ 58. Kd3 Rh4 59.
Nd5+ Ke6 60. Ne3 Ke5 61. Bc8 Rd4+ 62. Ke2 Kf4 63. Ng2+ Kg3 64. Ne3 Rd8 65. Bb7
g4 66. Bc6 Kf4 67. Nd5+ Kg5 68. Ke3 Rd6 69. Bb7 f5 70. Nf4 Rd7 71. Ne6+ Kf6 72.
Nc5 Re7+ 73. Kd3 Ke5 74. Ba8 f4 75. Kd2 Ra7 76. Bb7 Ra2+ 77. Kc3 Re2 78. Nd3+
Kf5 79. Nc1 Re7 80. Ba8 Ra7 81. Bd5 Rc7+ 82. Kb2 f3 83. Nb3 Ke5 84. Ba8 Rc8 85.
Bb7 Rb8 86. Bc6 Kf4 87. Ka3 Rxb3+ 88. Kxb3 g3 89. Kc4 g2 90. Kd5 g1=Q 91. Bb5
Qb6 92. Bf1 Ke3 93. Bh3 Qb5+ 94. Kd6 Qb6+ 95. Kd5 Qd4+ 96. Kc6 Qe4+ 97. Kb5
Qd3+ 98. Kc6 Qg6+ 99. Kc5 Qh5+ 100. Kc4 Qxh3
{[%clk 0:15:41]} 0-1
Day 2
Round 4: Spartacus - Rookie
HGM's program searches deep but its evaluation is not as advanced and many programs eventually take advantage of that. The real problem playing Spartacus is to demonstrate that you don't have bugs progressing towards mate. This is notoriously buggy in many programs and HG always plays out until mate. This tournament Dirty exposed some difficulties with that for example.
I just hoped my game wouldn't end in KRK because I have seen some cases where the null move prevents Rookie from executing this. It is easy to solve, but not high on the todo list. Fortunately Rookie could mate before that.
[Event "Int. CSVN Tournament"]
[Site "Leiden"]
[Date "2013.06.02"]
[Round "4.1"]
[White "Spartacus"]
[Black "Rookie"]
[Result "0-1"]
[ECO "A02 Bird, From gambit"]
1. f4 e5 2. fxe5 d6 3. exd6 Bxd6 4. Nf3 Nf6 5. e3 Ng4 6. d4 O-O 7. Bd3 Re8 8.
O-O Nxe3 9. Bxe3 Rxe3 10. Nbd2 Bf4 11. Nc4 Re8 12. c3 Be6 13. Qc2 g6 14. Nfe5
Bg5 15. Na5 Nd7 16. Nxb7 Be3+ 17. Kh1 Qh4 18. Nf3 Qh6 19. Bb5 Re7 20. Na5 a6
21. Bc4 Rae8 22. Bxa6 Nf6 23. Nc6 Nh5 24. Nxe7+ Rxe7 25. Nh4 g5 26. Be2 gxh4
27. Bxh5 Qxh5 28. h3 Qg5 29. c4 Bxd4 30. Rad1 c5 31. b3 Bd7 32. Rd3 Bc6 33. a3
Qh5 34. Rd2 Re3 35. Rdf2 Rxh3+ 36. Kg1 Qg5 37. Qxh7+ Kxh7 38. a4 Qxg2#
{[%clk 0:20:21]} 0-1
Round 5: Rookie - Booot
At this point Rookie was leading the ranking because Dirty had just beaten The Baron. I wasn't too excited about that because there was some major opposition still to be faced. Alex's Delphi program is very strong with a fully developed modern search and evaluation. I was just hoping for a single draw from one of the games against Booot and The Baron, not expecting too much after losing helplessly to both of them in Tilburg.
How different events turned out: Rookie played the Sicilian with 3.d4 flawlessly and step by step strangled Black with logical moves and no wild adventures. White didn't give Black counterplay and took initiative on both flanks and center. Once the b-file could be opened and taken Black's fate was sealed. I'm very happy with the style of this game.
[Event "Int. CSVN Tournament"]
[Site "Leiden"]
[Date "2013.06.02"]
[Round "5.4"]
[White "Rookie"]
[Black "Booot"]
[Result "1-0"]
[ECO "B90 Sicilian, Najdorf, Lipnitzky attack"]
1. e4 c5 2. Nf3 d6 3. d4 cxd4 4. Nxd4 Nf6 5. Nc3 a6 6. Bc4 e6 7. O-O Nc6 8.
Nxc6 bxc6 9. Rb1 Qc7 10. Bf4 Be7 11. Bg3 O-O 12. Qe2 e5 13. h3 a5 14. b3 Be6
15. Bxe6 fxe6 16. Rbd1 Qb7 17. Na4 Rae8 18. c4 Nd7 19. Qd3 Nb6 20. Nb2 c5 21.
Qe2 a4 22. Nxa4 Nxa4 23. bxa4 Qa6 24. a5 Qxa5 25. Rb1 Ra8 26. Qg4 Rf6 27. Rb7
Rg6 28. Qe2 Bf8 29. Bh4 Rh6 30. g3 Qa4 31. Kg2 Qe8 32. Rfb1 Rg6 33. Qf3 d5 34.
exd5 Kh8 35. d6 Bxd6 36. a4 e4 37. Qxe4 e5 38. R1b6 Rxa4 39. Qd5 Qf8 40. Rf7
Qg8 41. Rd7 Qxd5+ 42. cxd5 h6 43. Rdxd6 Rxd6 44. Rxd6 Kg8 45. Bd8 Ra3 46. Rc6
c4 47. Rxc4 Rd3 48. Rc5 Kf7 49. Kf1 h5 50. Ke2 Rd4 51. Bb6
{[%clk 0:28:04]} 1-0
Round 6: Arminius - Rookie
Arminius is the successor to Hermann by Volker. A classical computer game, Ruy Lopez slapstick style with White's Rook capturing a Knight on e4, followed by a Knight capture on f7 and taking the Rook on h8. Rookie managed to trap that Knight, not because of the individual piece mobility (which as mentioned, is still absent in this version), but because Rookie's piece/square tables give that Knight a whopping 0.9 pawn penalty. Long live the eval tuner: this was one of the first things I got right with the rewrite into version 3 a couple of years ago.
[Event "Int. CSVN Tournament"]
[Site "Leiden"]
[Date "2013.06.02"]
[Round "6.2"]
[White "Arminius"]
[Black "Rookie"]
[Result "0-1"]
[ECO "C78 Ruy Lopez, Archangelsk variation"]
1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 b5 5. Bb3 Bb7 6. O-O Nf6 7. c3 Nxe4 8. d4
exd4 9. Re1 d5 10. Ng5 Qd7 11. Rxe4+ dxe4 12. Nxf7 dxc3 13. Nxh8 Qxd1+ 14. Bxd1
cxb2 15. Bxb2 Nb4 16. Bc3 Bc5 17. Bxg7 Rd8 18. Nc3 Nd3 19. Kf1 Bxf2 20. Be2 Bc5
21. Rb1 Ke7 22. Bxd3 Rxd3 23. Rc1 Be3 24. Rc2 Bb6 25. h4 Bc8 26. g4 Bxg4 27.
Nxe4 Bf5 28. Nf2 Rg3 29. Re2+ Be6 30. Be5 Rg8 31. Ke1 Bc4 32. Re4 Bd5 33. Rf4
Rg1+ 34. Ke2 Bc4+ 35. Kf3 Bxa2 36. Ng4 a5 37. Bf6+ Ke6 38. Bd4 Bxd4 39. Rxd4
Rf1+ 40. Nf2 a4 41. Re4+ Kd6 42. Kg2 Rb1 43. Re3 Bd5+ 44. Ne4+ Ke5 45. Kf2 Bxe4
46. Rc3 c6 47. Nf7+ Kd4
{[%clk 0:23:22]} 0-1
Round 7: Rookie - The Baron
Morituri te salutant. In my mind this game was going the be the end of the unbeaten record. The Baron doesn't have underdeveloped aspects like Rookie: it is well-rounded and always plays strong in every phase of the game. Its weakest point from my point of view is that it still relies on a human book making process. Taking the human out of the design loop is exactly where I have put a lot of effort in during the past few years. Rookie is not an "engine", I object to that term, and strictly speaking it is not even a "program" as I usually call it. It is a developing entity that, when not playing online games, uses its idle time to continuously explore chess in order to improve its play. Opening development is an important part of that.
Now this is the last round, I'm using narrow book settings with very little randomization (hence all White games begin with 1.e4), and the book hasn't been updated for more than a month. The Baron wants to win and has a motivated book maker. Should I interfere and change the affinity of already-played book lines? I decided not to. Just let the program do what it wants and enjoy with an Affligem instead, following Richard's example.
1.e4 c5 2. h3!!
A fantastic suprise by the program, any of Black's preparation is now out of the window. Rookie stays in its self-prepared book for 10 full moves and exits with a very healthy position and opposite Kings. This is not going to be boring.
Rookie pushes ahead and on move 28 evaluation had rised to +2.4 where the exchange is sacrificed for a King attack. Black's King manages to escape but White gets a dangerous passer on the h-file instead. After that it turns out that White has overplayed. The Black Queen can enter White's ranks and disturb things. The passer falls and scores drop back into zero land.
Now Rookie has to be careful not to lose. It has many repetition lines, but rejects them all for an unbalanced end game. White's Pawns are only supported by a Bishop. Black's Rook is adequately fending off any danger, and Rookie eventually trades into an drawn end game table ending.
[Event "Int. CSVN Tournament"]
[Site "Leiden"]
[Date "2013.06.02"]
[Round "7.3"]
[White "Rookie"]
[Black "The Baron"]
[Result "1/2-1/2"]
[ECO "B20 Sicilian defence"]
1. e4 c5 2. h3 d6 3. Nc3 Nc6 4. Nf3 g6 5. d4 cxd4 6. Nxd4 Bg7 7. Be3 Bd7 8. Qd2
Nf6 9. O-O-O O-O 10. Kb1 Qc7 11. g4 Rfc8 12. f3 Nxd4 13. Bxd4 Be6 14. a3 Nd7
15. Bxg7 Kxg7 16. f4 f6 17. g5 fxg5 18. f5 Bf7 19. Qxg5 Nf6 20. Bd3 h6 21. Qg2
g5 22. Nd5 Bxd5 23. exd5 Qb6 24. Rhe1 Rc7 25. Re6 Rf8 26. Rde1 Rf7 27. h4 g4
28. Rxf6 exf6 29. Qxg4+ Kf8 30. Qh5 Rce7 31. Qxh6+ Ke8 32. Re6 Kd7 33. Qf4 a6
34. h5 Qc5 35. Qe4 Rh7 36. h6 Ref7 37. Qf4 Rh8 38. c4 Kc8 39. Ka2 Qb6 40. b4
Qg1 41. Rxd6 Qd1 42. Qg3 Qd2+ 43. Kb3 Qd1+ 44. Bc2 Qd2 45. Re6 Qxh6 46. Qe1 Rd7
47. Kb2 Qf4 48. Qe4 Qd2 49. Rxf6 Rdh7 50. Re6 Rh3 51. Re8+ Rxe8 52. Qxe8+ Kc7
53. Qe5+ Kb6 54. c5+ Ka7 55. c6 Rh1 56. Qg3 Re1 57. Qd3 Qc1+ 58. Ka2 Re3 59.
Qd4+ Kb8 60. Qh8+ Ka7 61. Qb2 Qxb2+ 62. Kxb2 bxc6 63. dxc6 Kb6 64. Ba4 Re2+ 65.
Kc3 Rf2 66. Bd1 Rxf5 67. Bg4 Rf8 68. Bd7 Rf3+ 69. Kb2 Kc7 70. a4 Rg3 71. b5
axb5 72. axb5 Rg5 73. b6+ Kxb6 74. c7 Kxc7
{[%clk 0:19:02]} 1/2-1/2
In the meantime Dirty had to win against The King to keep up with Rookie in the tournament. Fortunately The King kept the draw.
ICT13 programmer's report: Rookie v3.7
- Harvey Williamson
- Posts: 248
- Joined: Thu Jun 10, 2010 2:10 pm
Re: ICT13 programmer's report: Rookie v3.7
Hi Marcel,marcelk wrote: The Baron doesn't have underdeveloped aspects like Rookie: it is well-rounded and always plays strong in every phase of the game. Its weakest point from my point of view is that it still relies on a human book making process.
Congratulations! I saw most of the games and enjoyed the tournament. Richard and Tessa were using hardware at my house, here in Manchester.
I half agree with you about the book. I think the best way is to have a small highly tuned book prepared by a human. Sebi who books for Richard is one of the best! Then a large more general book that sits underneath that small book to catch the odd novelty or unusual opening.
Best Wishes,
Harvey
-
- Posts: 616
- Joined: Thu May 19, 2011 1:35 am
Re: ICT13 programmer's report: Rookie v3.7
Some excellent results against formidable opponents.
By now, Rookie is no longer a rookie. Perhaps we should start calling him "manager" or "chief".
By now, Rookie is no longer a rookie. Perhaps we should start calling him "manager" or "chief".
Re: ICT13 programmer's report: Rookie v3.7
"Stubborn" would be more appropriate.User923005 wrote:Some excellent results against formidable opponents.
By now, Rookie is no longer a rookie. Perhaps we should start calling him "manager" or "chief".