Tuesday, January 31, 2023

Season 24 live blogging: Jan 30, 2023

I'm following game 145 in the Swiss/qualification event between Revenge and Koivisto. Both engines played in league 1 in season 23, Koivisto had a bug and it underperformed then, hopefully it is better now. Up till now Koivisto and Revenge have a 0 score in the event. Koivisto has a game pair win against Winter and a game pair loss to RubiChess. Revenge beat StockNemo and lost to Stoofvlees.

The game opened with a 10-ply book, a very rare variant of the Scotch game. Both evals started over 1. After the first white move the game transposed to a slightly less rare variant. 

move 9: Revenge is not providing a PV, we only see what Koivisto is thinking. The engines castled in opposite directions. Koivisto had a 3-minute think on move 9.

move 14: Revenge pushed g4 on move 10 and gave a PV, a 7-ply PV agreement followed. Revenge is a pawn up and the queens are off the board. So far evals are stable or drifting down, not a good sign for Revenge.

move 17: The d file is open for exchanging rooks. Revenge is a pawn up but its pawn structure is worse with a doubled pawn and its bishop doesn't have a good square to go to. According to PVs Koivisto would like to exchange pawns and pieces, Revenge is trying avoid this.

move 21: Koivisto is pushing pawns on the queen side, Revenge is pushing pawns on the king side. Revenge moved its king forward in the center, it seems safe there and it adds a defender to the pawns and bishop. Koivisto captured a pawn and material is equal.

move 25: Revenge pushed a pawn to h6, Koivisto locked pawns on the king side. Koivisto exchanged pawns on the queen side and opened the b file, also creating a passer on the a file. Evals are still around 1, mostly stable. 

move 29: I'm surprised all rooks are still on the board. The position is starting to look static, everything is protected only if nothing moves. Koivisto's PV is mostly shuffling many moves into the future. Revenge had a different idea, it exchanged knight for bishop. Evals drop under 1 for the first time. 

move 32: RRB vs RRN, black has a passer on the a file. The pawns on the king side seem to be stabilized, Revenge has an extra pawn there but it cannot advance without being taken. Now both PVs look like a long shuffle. 

move 40: Evals are flatlining, this may be a long game without adjudication. 

move 50: Engines are shuffling along, Revenge finally dropped its eval close to 0. There will not be an adjudication without a piece exchange in any case. 

move 60: waiting for a piece exchange, only 20 moves to a 50-move draw. 

move 72: Koivisto reset the 50-move counter, still no piece exchange. At least the engines are blitzing with little time on the clock left.

move 77: finally a piece exchange.

move 81: adjudication, draw.


Wednesday, January 25, 2023

Season 24 qualification/Swiss

The TCEC leagues event of Season 24 has started, only two months after the end of the season 23 superfinal. In the last several seasons the event started with a qualification league, where new engines and those that were not strong enough in previous seasons fight for one of 4 spots in the regular leagues. Last season the qualification league was played as a Swiss tournament for the first time. This season it was decided to merge the qualification league and the Swiss event.

In the Swiss event all available engines play an 11 double round Swiss tournament. This season there will be 42 engines in total, including 22 which will later play in the regular leagues (placed by the results of the leagues in season 23), and 20 which are the qualification candidates. I suppose that while the strong engines will fight to win the event in the top half of the table, the games in the bottom half of the table will be important for qualification.

I don't usually follow the Swiss event too closely, too many games with relatively fast time controls. For example, this season there will be 462 games, each approximately 1 hour long, a total of about 3 weeks. Also luck plays a significant part in this type of tournament, each engine faces a different subset of opponents. I'm not sure how to cover this season's event. I will probably write about the progress of the qualification candidates, and about interesting games relevant to qualification. If I have time I may do a few live blogging sessions.

The qualification candidate engines are:

played in season 23 league 2 - Wasp, Velvet, Weiss, Winter
played in season 23 qualification league - ChessFighter, Stash, Expositor, Zahak, Drofa, Mantissa, MrBob, Counter, Amoeba, Bagatur, Cheese
new to TCEC -  ice4, Uralochka, StockNemo, Smallbrain, 4ku (winner of the 4k bonus, for small engines with maximal size of 4kB)

Final standings

Velvet Expositor +1, Wasp Uralochka Smallbrain Zahak Mantissa Counter MrBob StockNemo 0, Stash Weiss Winter -1, Drofa ChessFighter -2, Amoeba -3, Cheese Bagatur -8, ice4 -12, 4ku -15.

Velvet, Expositor, Wasp and Uralochka are the 4 qualifiers to league 2. There were 6 more engines with the same score as Wasp and Uralochka, the SB score was the tiebreaker.

In my opinion the Swiss event should not be used as a substitute for the qualification. It may be true that the randomness adds to the excitement of not knowing what will happen, and there are practical issues like the number of games and time it takes to run the tournament. However, it seems to me engines that prove their worth can miss qualification, and weaker engines can take their place, just because of the opponents they face. Look at Expositor for example: it lost to Amoeba, Counter and Uralochka, lost twice to Velvet, the only reason it qualified is that it had the luck to face 4ku, ice4 and Cheese, collecting 5.5/6 points in these matches. Compare that to Smallbrain: it did not face any of the bottom 4 engines, instead it faced SlowChess, Seer, Revenge, Nemorino, ScorpioNN, getting at least half a point from each, it beat Mantissa and Halogen, and beat Amoeba twice. Imagine that the last double round the match between MrBob and StockNemo had been decisive. If that happened one of them would have qualified instead of Uralochka, and there would have been two of 4 qualifiers that most would agree should not have been there. 

In the first few rounds most of the attention in the chat was given to Leela's results. Its evals were extremely high and non-realistic and it managed to lose games against Cheese and Drofa (drawing these game pairs). It turned out that the problem was the implementation of contempt. Leela used the opponents Elo rating for its contempt setting, so that it would be bolder against weaker engines .However the possibility of very weak opponents was overlooked, and when the Elo difference was 300 or more Leela had such confidence that it played really bad moves. After a few rounds the weak opponents drifted down in the table, Leela played against higher rated engines and beat them. It drew against Stockfish and KomodoDragon, and in the end finished in third place on a tiebreak with KomodoDragon.

The 4 qualifiers will play in league 2 together with:
played in league 1 in season 23: Igel, Fritz, Arasan, Nemorino
played in league 2 in season 23: BlackMarlin, Halogen, Marvin, Tucano

Interesting games

game 46, Amoeba - Smallbrain: Amoeba captured a pawn and opened the queen side, with its king facing the black major pieces. The result of the attack was a R vs N ending, Smallbrain was 3 pawns up and it pushed them slowly forward to win. Smallbrain had two wins in this game pair. 

game 56, Velvet - rofChade: Velvet managed to beat rofChade, which played in the premier division last season. Velvet attacked the black uncastled king from the queen side, it used a passer on the 7th rank to reduce to a winning RB vs R ending. The game pair result was a draw.

game 100, Expositor - Velvet: Expositor had an eval advantage in the first 50 moves, then it captured a rook for a bishop but underestimated the danger to its king. Evals became negative, Velvet gradually gained material and eventually mated. Velvet had two wins in the game pair.

game 113, Wasp - Fritz: Wasp was two pawns up with a doubled passer in a RRB vs RRB position. It gradually improved its position and in the end reduced to a wining rook ending. The game pair result was a draw.

Qualification standings after 3 double rounds: Velvet +2, Smallbrain Wasp +1, Weiss Winter 0, Drofa Stash Uralochka MrBob Mantissa Bagatur StockNemo Counter -1, Zahak Expositor Amoeba ChessFighter -2, Cheese -3 ice4 4ku -4. The 5 engines leading are the 4 engines that were relegated from league 2 last season (3 of which started in qualification), plus the newcomer Smallbrain.

game 140, MrBob - Uralochka: The position was closed with very few exchanges in the first 40 moves. Uraloxhka gave two pawns and attacked the white king, moving its queen and a rook to the back rank. MrBob exchanged queens and gave both rooks to promote a pawn to a queen, leading to a Q vs RR ending that was a win for black. Uralochka had two wins in the game pair.

game 161, BlackMarlin - Velvet: BlackMarlin was up two pawns with connected passers on the queen side, Velvet didn't have any compensation for the pawns. BlackMarlin pushed a passer to the 6th rank, Velvet had to block. BlackMarlin then attacked through the king side and forced mate. BlackMarlin won the game pair.

game 185, Stash - Fritz: After a long shuffle evals jumped on move 102, Stash captured two pawns and opened a file on the queen side. The black queen was in front of the pawns, Fritz tried to delay with checks but eventually it lost more material. In a RB vs R ending Stash pushed a passer forward to win. The game pair result was a draw.

games 187-188, ChessFighter - Mantissa: ChessFighter as white had an eval advantage from the start. The game reached a QR vs QR position on move 54 with white a pawn up. ChessFighter was certain it was winning, but after exchanging queens Mantissa reduced to a drawn rook endgame. It took almost 50 more moves before the game reached a tablebase draw. Mantissa as white exchanged queens early, it went a pawn up and reduced to a RN vs RN position. ChessFighter lost the knight and was mated quickly.

Qualification standings after 5 double rounds: Wasp Uralochka Velvet Mantissa +1, Stash Counter 0, Winter ChessFighter Smallbrain Weiss Zahak StockNemo Bagatur -1, MrBob -2, Expositor Amoeba -3, Drofa Cheese -4, 4ku -5, ice4 -6. Weiss and Winter lost to strong opponents, they are no longer in the leading group. Uralochka won twice against MrBob and moved up, Mantissa beat Drofa and ChessFighter. Can they hold against the better engines in the next rounds?

games 223-224, Winter - Weiss: With Winter as white the engines opened the queen side. Evals became negative though Winter was up a rook for a bishop and pawn. Weiss had a passer on the queen side and another facing the white king. In a series of exchanges Weiss reduced to a winning same colored bishop ending. With Weiss as white Winter traded BN for R and the king side opened. Both kings were exposed but the black king was more vulnerable, Winter gave its queen and reduced to a QB vs RBN position. Weiss captured pawns and used a passer to win. Weiss had two wins in this game pair.

game 228, Stash - Counter: The game reached a drawn 7-man N vs B ending, Counter blundered on move 93 allowing Stash to capture a pawn and win. The game pair result was a draw.

game 231, Velvet - Nemorino: Velvet gave 3 pawns for a knight, after exchanging queens Velvet had a pair of strong bishops. Nemorino gave a rook for a bishop, in a RRB vs RB position Velvet controlled the black pawns and used passers to win. Velvet won the game pair.

game 263, SmallBrain - Halogen: Halogen gave a pawn and exposed the white king, SmallBrain managed to keep its king safe. Eventually the game reached a RBN vs BRN position, SmallBrain captured a second pawn, then used passers to gain material and win. SmallBrain won the game pair. 

game 266, Wasp - Nemorino: Evals increased steadily from the start, Wasp captured a pawn and slowly exchanged pieces. The game reached a winning king and pawns ending, and then Wasp crashed.

game 272, MrBob - Tucano: Tucano captured a pawn on a2 and was surprised when MrBob trapped its bishop. Tucano failed to get its bishop free and lost more material, leading to a quick mate. MrBob won the game pair. 

game 273, Uralochka - ChessFighter: The black king moved early and ChessFighter had problems developing pieces. Uralochka opened the queen side with a rook sacrifice, moving its queen to the 7th rank with a deadly atrack. Uralochka gained material and promoted a second queen to win. Uralochka won the game pair. 

game 277, Mantissa - ScorpioNN: The black king got caught in the center without castling and with the f file open. Mantissa captured a rook for a knight and was two pawns up. ScorpioNN exchanged pieces and countered with an attack on the white king, but not strong enough. In a QR vs QB position Mantissa promoted a queen to win. The game pair ended in a draw.

Qualification standings after 7 double rounds: Velvet Uralochka MrBob +1, Weiss Mantissa Smallbrain Zahak Amoeba 0, ChessFighter Counter Wasp Winter -1, Stash Expositor -2, StockNemo Drofa -3, Cheese -4, Bagatur -5, ice4 4ku -8. Only 4 double rounds to go, there are 12 engines within 1 point of the lead and a lot depends on luck at this stage. 

games 309-310, Winter - Smallbrain: Winter was white in the first game, I followed this game in a live blog. At first it seemed Smallbrain equalized, but Winter opened the g file and doubled its rooks there. The pressure on the black king became too great, Smallbrain lost material and was mated. With Smallbrain as white the focus was on the queen side, Smallbrain opened a file and exchanged all rooks. Then is used connected advanced passers to gain material and reduce to a winning ending. The game pair ended in a draw.

game 311, Zahak - Amoeba: Zahak gave 3 pawns but it attacked the black king and forced it to move forward. Amoeba gave material but couldn't save its king. Zahak won the game pair. 

games 315-316, Mantissa - Nemorino: In the first game Mantissa was white, Mantissa created an advanced passer in the center while its king was exposed. Nemorino gave checks with it squeen but eventuall gave a rook for a knight to capture the passer. The game reached a RB vs BN position, Mantissa created a passer and won. In the second game the engines mostly shuffled for a long time in a closed position. On move 106 Mantissa captured an offered pawn and opened a file. Nemorino moved major pieces forward and reduced to a R vs BB ending with 3 pawns up, enough for a win. The game pair ended in a draw.

game 344, Stash - ChessFighter: Stash had better pieces when the position opened, it managed to capture a knight. For a while ChessFighter pinned a bishop, but eventually Stash got out of the pin safely and reduced to a winning ending. Stash won the game pair. 

game 346, Amoeba - Drofa: Drofa blundered late in a N vs B ending. The black bishop had no targets, Amoeba kept it away from the black pawns and used its king a knight to capture a pawn, leading to mate. The game pair ended in a draw.

game 355, Smallbrain - Mantissa: Smallbrain was a pawn up early, Mantissa did not have real compensation for the pawn. The engines gradually exchanged pieces until only RB vs RN remained. Smallbrain pushed a passer, Mantissa lost the rook to stop it, game over. Smallbrain wins the game pair. 

Qualification standings after 9 double rounds: Smallbrain +1, Uralochka Velvet Wasp Expositor 0, Zahak Mantissa Weiss Winter Amoeba Stash Counter -1, MrBob StockNemo Drofa -2, ChessFighter -4, Cheese Bagatur -5, ice4 -9, 4ku -12. Again 12 engines are within 1 point of the lead, almost the same engines as two double rounds ago but in a different order. It is very difficult to predict the qualifiers, so much depends on the remaining two opponents and openings that each engine will face.

game 387, Zahak - Counter: A long series of exchanges reduced to a BB vs R position, the bishop pair was strong and the game ended in a tablebase win. Zahak wins the game pair. 

game 391, Stash - Winter: There were many exchanges after the start, the game reached a RB vs RB position with white a pawn up. Stash created two passers and then captured all the black pawns to win. Stash wins the game pair. 

game 393, Mantissa - Weiss: Mantissa opened a file on the queen side and attacked. The engines reduced to a QRN vs QRB position and Mantissa pushed a passer on the queen side. With the passer on the 7th rank Mantissa gave a rook for a bishop, then captured 3 black pawns. Weiss gave material to stop two passers, leaving a winning king and pawns ending. In the reverse game all pawns remained on the board and the game ended in a 50-move draw. Mantissa won the game pair. 

games 395-396, Velvet - Wasp: With Velvet as white the black king was forced to move early and Wasp had problems developing its king side pieces. The game reached a RRB vs RRN position and Velvet went two pawns up. Wasp lost material and was eventually mated. With Wasp as white the black king castled long, the game reached a RRN vs RRN position with white a pawn up. Wasp captured a second pawn and reduced to a winning knight ending. The game pair ended in a draw.

game 398, Uralochka - Expositor: Uralochka captured a pawn with its queen early. For a while the white queen was safe, eventually Expositor captured it but after a series of exchanges the result was an imbalance of 3 pawns for a knight. Expositor captured a few pawns but had to give material to stop two passers. The game reached a R vs B ending that Uralochka converted to a win. Uralochka wins the game pair. 

Qualification standings with one double round to go: Uralochka +1, Wasp Velvet Smallbrain Stash Zahak Mantissa MrBob StockNemo 0, Drofa Expositor -1, Weiss Winter Counter Amoeba -2, ChessFighter -3, Cheese -6, Bagatur -7, ice4 -11, 4ku -13. MrBob and StockNemo jumped in the rankings after double wins against weak engines, probably will not survive a stronger opponent in the last round. Weiss, Winter and Counter lost their game pairs, they now have a chance of facing a weak opponent in the last round and may qualify with a good result.

Counter, Winter and Expositor were lucky to get a weak opponent. Winter only managed one win against Bagatur, a final score of -1 is not enough to qualify. Counter and Expositor won twice against 4ku and Cheese. Counter finishes with a score of 0 but a low SB, likely not enough. Expositor finishes with +1, its SB is low but the score may be enough to qualify.

game 428, Weiss - Amoeba: Weiss attacked through the center, it opened the position and exposed the black king. Weiss went a pawn up and then reduced to a QN vs QB position. Weiss pushed pawns facing the black king, Amoeba lost material and was mated. Weiss wins the game pair. 

Weiss finishes with a -1 score, not enough to qualify. Drofa lost to Halogen and is out of the race. 

games 433-434, Zahak - Wasp: With Zahak as white the black king moved without castling and the king side rook was trapped. By the time Wasp managed to free its rook Zahak gained material and the game reached a RN vs R position. It took Zahak 40 more moves to win. With Wasp as white the black king castled and Wasp attacked the king side leading to a knight for 3 pawns imbalance. The game reached a QN vs Q position which Wasp converted to a tablebase win. The game pair ended in a draw. 

Both Wasp and Zahak finish with a 0 score, Wasp has a high SB, currently leading the 0 score group.

game 435, Velvet - Stash: Velvet pushed a pawn to h6 and Stash couldn't develop its king side. Velvet attacked through the center with a bishop sacrifice, and captured 4 pawns on the king side. In a RR vs RRB position Velvet used connected passers to win. Velvet wins the game pair.

Velvet finishes with a +1 score, joining Expositor in the lead. Velvet has a much higher SB. Stash finishes at -1 and is out.

Smallbrain had two draws against Tucano, it also finishes with a 0 score. It has a high SB, currently second in the 0 score group after Wasp, and fourth overall.

games 439-440, StockNemo - MrBob: StockNemo as white captured a pawn, then slowly exchanged pieces and pawns. It created a passer on the queen side, MrBob eventually captured the passer but lost 3 pawns for it. StockNemo captured a piece and forced a win with passers. MrBob as white castled long and StockNemo pushed pawns on the queen side. StockNemo gave a rook for a knight and moved a pasn to the 2nd rank. MrBob blocked the pawn, captured it and reduced to a winning RB vs R ending. The game pair ended in a draw.

Both StockNemo and MrBob finish with a 0 score, their SB scores are too low for qualification.

games 441-442, Marvin - Mantissa: Marvin as white castled long and pushed a pawn to h6. It then sacrificed a knight and attacked the black king. Marvin captured 3 pawns while it chased the king across the board. Mantissa lost a knight, in a QRB vs QRB position Marvin promoted a passer to win. Mantissa as white castled short, there were no exchanges until move 36. When the position opened Marvin traded BN for Q. Mantissa exchanged pieces, Marvin lost more material and was mated. The game pair ended in a draw. 

Mantissa also finishes with a 0 score, with SB too low to qualify. 

game 446, Igel - Uralochka: There were almost no exchanges after the start and the black king moved to the king side without castling. On move 37 Igel opened the queen side, it took over an open colmn and moved a bishop behind the black pawn line. Uralochka gave a rook for a knight, then lost a bihsop for a pawn. Igel exchanged pieces and reduced to a tablebase win. Igel wins the game pair.

Uralochka finishes with a score of 0 as well, its SB is better than Smallbrain's and close to Wasp's which puts it in a qualifying spot. There were SB changes in the remaining games, but Smallbrain did not gain enough to overtake Wasp or Uralochka.