ZCTACCAWCRCC

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

Moderator: Ras

User avatar
Zach Wegner
Posts: 1922
Joined: Thu Mar 09, 2006 12:51 am
Location: Earth

ZCTACCAWCRCC

Post by Zach Wegner »

At long last, here is my tournament report for the not-that-recently finished WCRCC event. In retrospective, it is _way_ too long. But I always loved reading tournament reports from other authors in the past, the longer the better. As this was my first tournament, and a very interesting one for me, I kind of went overboard. But I would like to say that I enjoyed reading Will's, James', Jon's, Roman's, Edsel's, Tony's, and anyone else's that I'm forgetting, tournament report, and I hope some more authors take some time to write a little something about the event, if they still remember anything.

I'd like to say first off it was a blast; I had a lot of fun chatting with the authors during the games, though channel 64 seemed unusually quiet a lot of the time, and Bob and Vincent barely even talked to each other. I must have talked about SMP more than anything else, I must have had discussions about it with at least 10 different people throughout the tournament.

I had been working for the past month or so almost exclusively on ZCT's parallel search. A few days ago I realized that ZCT probably wasn't going to be stable enough to use with SMP. But I tried running with 2 processors, and it happened to be relatively stable, with a decent speedup. There is one very strange bug still lurking, where the second processor will simply sit idle for long periods of time. Quite a few searches had the embarrassing "splits=0" output. But considering the circumstances, the fact that SMP was able to be used at all was a big help, and I was surely lucky not to have any crashes or hangs.

ZCT had a couple of small problems during the tournament. During the first round I noticed that ZCT's time management code for Fischer clocks did not work so well for time controls with such relatively small increments. ZCT used up quite a bit of time during the beginning, with a lot less time later on when it was needed. Luckily this is a really quick fix and I was able to start a new binary right after the first round. I ended up tweaking it again a couple rounds later. One silly problem I found after the first day was that ZCT had been using null move with R=4 the whole day. I had been experimenting for some test position and accidentally left it in. Considering how well ZCT did despite this, I might have my beta tester try it out. ;)

All in all I think it was a great result, with luck most likely being a factor as well. ZCT far exceeded my expectations, and the draws against Arasan and Yace were probably the highlights for me. Here's some more detailed info. One note, I accidentally deleted all of ZCT's log files from the first day, and I don't really want to comb through the logfile to look at ZCT's evaluations for day 2, so I'm just going on the games here. It would be nice if xboard could save scores/PVs to PGNs ala Winboard_x....

Round 1: ZCT vs. Petir 0-1
The game was a simple Ruy Lopez, and it got interesting pretty quickly. ZCT's 11.d4 made for a very open game. On move 32, ZCT decided to exchange a bishop (and the bishop pair) for 3 pawns and an attack on the king. There wasn't really enough pressure on the king, and ZCT exchanged queens on move 36. From there, the game went into a rook and bishop endgame, and Petir was able to grab up all the extra pawns ZCT had, and used its own pawn to force ZCT to give up its last rook. A well played win by Petir. I will note that Petir offered a couple of draws near the end due to some bug, and I felt glad that ZCT doesn't pay attention to draw offers, because Petir deserved the win. Petir does have some weird bugs that caused some problems during the tournament, but the author Peter Alloysius was a really nice guy, and definitely just in the tournament for fun, not really concerned with the bugs. Petir did very well in the tournament considering how lazy
Peter says he is.

Round 2: Tornado vs. ZCT 0-1
This game started out with an interesting opening (I have no idea what it's called, sorry). 1.d4 was a foreshadowing of the middle game. All the action was on the queen side, with both kings safely castled on the other side with solid pawn shelter. ZCT's early pawn pushes allowed for an exchange of queens and pressure on the queen side. On move 27 ZCT made an interesting, though probably obvious, move:
[d]r1r3k1/1b1N1ppp/p7/1p1P4/2p2B2/bnP5/2B2PPP/3R1RK1 b - -
ZCT plays Bb2, sacrificing the exchange for a pawn and a group of passers. Tornado's advanced passer on d5 advanced to the 7th rank, forcing ZCT to tie up a rook. It allowed Tornado to exert a lot of pressure on ZCT's king with its rooks bearing down the open D and E files. The attack failed to materialize though, and ZCT boldly marched its king past the pawn on e7 to support its own passers. Tornado resigned a little later.

Round 3: ZCT vs. Berta 1-0
This game went pretty quickly at first. ZCT built up a nice attack, pushing Berta's king to d6 by move 23. The attack petered out after an exchange of queens though, but ZCT was left with three passed pawns on f2-g4-h2. Berta had a couple of awkward doubled pawns on d4 and d5, which cramped its position a lot. After the F and G pawns were exchanged, the lowly passer on h2 was able to confidently march up the board with the assistance of ZCT's king, bishop, and rook, which eventually won the game.

Round 4: ZCT vs. Telepath 0-1
At this point I think I was mostly paying attention to ch64, as I don't really remember watching this game. I think Charles was mostly paying attention to other TD duties, so we didn't get much of a chance to talk. The game was very tactical, and by move 33 Telepath had a pair of connected passers and was also up the exchange. I'm too much of a patzer to make any real judgment, but Telepath probably won this based on a better evaluation.

Round 5: Frenzee vs. ZCT 1-0
This was probably ZCT's worst defeat of the tournament. ZCT had a rather awkward opening, and failed to really secure its king. It never really had any winning chances, and was simply outclassed in every way. It was able to hold on materially and keep the king attack at bay for around 30 moves, when it was just stalling defeat with some meaningless checks on Frenzee's king. This probably ended hurting actually, as it forced Frenzee's king to join in on the action and help. ZCT held out OK, but the early wrecking of pawn shelter on the queen side likely caused the loss.

Round 6: ZCT vs. Prophet 1-0
This started off as a pretty quiet game, again with all the action eventually happening on the queen side away from the castled kings. Prophet's pawn shelter was a bit too open I think. This didn't cause problems until around move 50, when Prophet was up two pawns, but ZCT attacked until it got a rook for 3 pawns. ZCT eventually won in a KRKP endgame. James and I had a nice discussion about parallel search while all this was going on.

Round 7: Tinker vs. ZCT 1-0
This was an interesting game. ZCT was up a pawn by the 16th move, and things proceeded normally. Tinker had equalized by move 24, and ZCT's king was exposed and under attack. ZCT was able to gain a pawn with an almost nice looking king attack of its own from moves 27-32, but there was never enough pieces to carry it out, and ZCT's 32...Rxd5+ showed that the king attack was merely trying to delay its own defeat. ZCT was mated a little while later. It's hard to say exactly where this game went wrong, but it's most likely the result of king safety evaluation early in the game.

Round 8: Dirty vs. ZCT 0-1
This was a nice little game. I got to chat with Pradu most of the time on parallel search and low level-type stuff, so as usual I wasn't paying much attention to the game. The opening was pretty strange, with ZCT launching some meaningless attacks on Dirty's king with moves such as Ba6 early in the game. These could have come from the book, but I don't think many humans would play like that. ZCT was up a pawn before the 20th move, and eventually got a material advantage of R vs. N+P. It had some pressure on Dirty's king that never really amounted to much, but after the queens were exchanged ZCT got the opportunity to make a passer on the A file on move 46 with the support of its rook, with only Dirty's poor knight to defend, its king having aimlessly wandered in the opposite direction. This proceeded to promotion pretty quickly, and ZCT checkmated on move 64.

DAY 2

Round 9: ZCT vs. Messchess 0-1
Mridul is a nice guy, I hadn't talked to him before. Messchess was a last minute entry into the tourney, so I got the chance to be slaughtered. Mridul is one of the very few to walk down the dark path of DTS search, but interestingly enough we hardly talked about it at all. It was interesting that right out of the opening, ZCT was displaying a score of -.5 or -.6. Mridul said "What's with the negative score? It looks pretty even.". ZCT was down a pawn out of the opening book (the first real move was 9.cxd4), but had some positional compensation. ZCT's score stayed about the same for a while, and Messchess' score started to go positive. The game slowly went downhill from there. ZCT never had a positive score, but at least it went down with a good fight: the game lasted for over 90 moves.

Round 10: Matilde vs. ZCT 0-1
This was a weird game. Very very strange opening. See if this position is in your databases:
[d]rnbqkb1r/pp3ppp/5n2/8/3pN2P/1p1PP1P1/PPP1P3/R1BQKB1R w KQkq -
Of course, 20 moves later it was a very standard R+B ending. ZCT was up a bishop, and it eventually managed to get a couple passers. With the help of the bishop they walked directly to promotion and mate simultaneously.

Round 11: ZCT vs. Arasan 1/2-1/2
This was one of ZCT's finer moments in the tournament, along with the draw against Yace. It wasn't perfect, but ZCT at least put up a good show, and the result is what matters anyway! Arasan was the clear favorite to win, but blundered the exchange with 16...Rad8, or one of the moves right after it, I'm not sure. Rad8 is a very strange looking move to me though. ZCT showed a score of about +1.5 at this point, but it slowly leveled out, and was even negative for a bit. You can be sure that at this point:
[d]8/8/1p6/2b5/5k1p/5p1P/3K4/4R3 w - - 0 70
I was hanging on the edge of my seat. Oh the suspense! But luckily, it wandered into the drawn KRKB by move 97. ZCT didn't know it was drawn, but Arasan's TBs showed that it was, and I was at least happy that I knew Arasan couldn't mate with just a bishop. After keeping everyone waiting for a while, the game ended in a 50-move draw. In short, ZCT got lucky twice in
this game.

Round 12: ZCT vs. Yace 1/2-1/2
This was another draw against a much better engine. During the game, I mostly talked to Dieter about various issues, a lot of parallel stuff too. Dieter is a really nice guy that I had never gotten the chance to talk to, and it's a shame he has been away for so long. But it seems that he is still interested, he has been working on some CC stuff recently (I won't say more). This game wasn't quite as suspenseful though. It was pretty much even throughout, after the weird opening phase. Yace was up a pawn in a couple of places, but ZCT managed to get into a KRPKRP ending, with the pawns locked up on the a-file. Once those pawns were exchanged, I breathed another big sigh of relief. ZCT was getting some damn good results! I think I'm a little more proud of this game than the Arasan one, just because Yace didn't make any big blunders. Aside from some ugly opening-early-middlegame play, ZCT just played some pretty solid chess, especially in the endgame, for which Yace is known to be good.

Round 13: Symbolic vs. ZCT 1/2-1/2
I would say that this is arguably the worst game of the tournament, but I read in one of the other reports of a similar game. This was just a stupid, stupid draw. What happened was that ZCT got out of book after 6 moves with a -0.24 (I have the logfile for this one ;) ). Symbolic was still in book, and ZCT was able to play a repetition. Symbolic found the repetition in the book, so it just played the moves as if everything was normal. I was hoping for a good fight in this game, as ZCT and Symbolic have sparred a lot on ICC, with Symbolic usually winning. I felt some good luck, and maybe a chance of winning. But in retrospective, a draw was probably better than a win because with a win ZCT would have been paired with either Crafty or CTD in the last round, with a sure loss. I just wish the draw was achieved honestly. So everyone, this includes Steven and myself as well, please add code to your book routines to check for repetitions before playing a book move!

Round 14: Romichess vs. ZCT 0-1
This was a fun game to play. Tony and I are nemeses (though he might not know it), so I was talking trash to him from the start. I honestly didn't think ZCT would win. Romi is rated much higher, despite Mike's constant self-derision. Romi is just a more solid engine I think. It has very little eval, but it is a very deep searcher (it was getting about equal depths with ZCT on hardware several times slower, and I would consider ZCT a deep searcher). and no big weaknesses. Except... its passed pawn eval, I think. Both engines evals went all over the place here. Romi showed an advantage of a little over a pawn for a while, while ZCT's thought it was even. Tony was sure that ZCT was right, but I was skeptical. Soon ZCT's own score dropped to about -1.5, in line with Romi's eval. Then things got weird: ZCT went from a -1.5 score on move 39 to a +6.4 on move 45. I think this is because Romi didn't have the necessary eval to see the danger of ZCT's passers. Near the end, when there was at least some chance to capture one of the passers, Romi just danced(tm) its knights around aimlessly. So it was a nice game, well fought by Romi.

ZCT ended with 7.5/14, for a shared 11th place. I somehow thought for a while that ZCT had gotten shared 10th place, but the official results speak otherwise. A marvelous result, ahead of Arasan and Yace, and definitely very satisfying for a first tournament. I'll see everyone at the next one!
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: ZCTACCAWCRCC

Post by bob »

We found a very interesting timing bug between day 1 and 2 of the event. Tracy had made a change where if we had used 5/8 of the target time after finishing an iteration (that is 5/8 of the total time allocated) his code would expand this somewhat so that we had a better chance of getting something useful from the next iteration. I looked at it and it seemed reasonable. And testing suggested the same. But then I started to notice some longish searches that didn't make a lot of sense.

What I found was that there are plenty of positions where the branching factor is so low, that once we used 5/8 of the target time, we were not going to just complete one more iteration, we might do several. And this "expand the time" code was executed each time. It got bad enough that in one game we were "chasing our tail" continually increasing the limit by more than was required to finish the next iteration, so we would go on to the next...

We removed this and saw much more sane time usage the second day. Just goes to show that tons of testing is not always enough, as this was more an artifact one would find in longer time controls...
jdart
Posts: 4423
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: ZCTACCAWCRCC

Post by jdart »

Symbolic found the repetition in the book, so it just played the moves as if everything was normal.
This is why I have code to disable the book and force a search if there is a repetition on the board. That's not always a good thing to do but it will steer away from positions where the program has a choice to avoid the draw and it is advantageous to do so. Of course there are opening positions where the opponent can force a draw and that can really only be fixed by changing the opening book so the program doesn't go there.

--Jon
[/quote]
User avatar
Zach Wegner
Posts: 1922
Joined: Thu Mar 09, 2006 12:51 am
Location: Earth

Re: ZCTACCAWCRCC

Post by Zach Wegner »

Exactly. In ZCT's mind it was advantageous to force the rep. I would want to just force a search in the case that the book move was a repetition, or possibly only play book moves that don't cause one. There are some other issues too. I don't have any contempt factor. I'd plan to (eventually) make a dynamic one, and a factor could be to set it very low in the first 20 or so moves, maybe a negative pawn. So that way, in situations like this when the opponent plays a rep from book, ZCT would at least try to avoid it and play a real game except when it hits a really bad book line.

There's other interesting paths to take. I've always wanted to do a search in book moves, to just search the tree of positions in the whole book. Of course it would technically be a directed graph, but when you prune repetitions it's a real tree (depending on how you view transpositions). As I just have a big autogenerated book, it might help to do just a qsearch on the leaves of the tree, i.e. each possible out-of-book position, and prune out lines with scores below say -.50. I don't know of anybody else doing this, but it's a somewhat obvious idea.
jdart
Posts: 4423
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: ZCTACCAWCRCC

Post by jdart »

it might help to do just a qsearch on the leaves of the tree, i.e. each possible out-of-book position, and prune out lines with scores below say -.50. I don't know of anybody else doing this, but it's a somewhat obvious idea.
I have heard of people doing searches at the tip and propagating back the scores to improve book move selection (usually offline, to optimize the book). That might help although without a giant computing grid it's really infeasible for an entire reasonable sized book.

You need to do more than a q-search to make this effective. There are not a few openings where the "right" move is a temporary sac of material or something else that's hard to find in a shallow search. In fact GMs love to find this kind of thing to surprise their opponents.


--Jon
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: ZCTACCAWCRCC

Post by bob »

Zach Wegner wrote:Exactly. In ZCT's mind it was advantageous to force the rep. I would want to just force a search in the case that the book move was a repetition, or possibly only play book moves that don't cause one. There are some other issues too. I don't have any contempt factor. I'd plan to (eventually) make a dynamic one, and a factor could be to set it very low in the first 20 or so moves, maybe a negative pawn. So that way, in situations like this when the opponent plays a rep from book, ZCT would at least try to avoid it and play a real game except when it hits a really bad book line.

There's other interesting paths to take. I've always wanted to do a search in book moves, to just search the tree of positions in the whole book. Of course it would technically be a directed graph, but when you prune repetitions it's a real tree (depending on how you view transpositions). As I just have a big autogenerated book, it might help to do just a qsearch on the leaves of the tree, i.e. each possible out-of-book position, and prune out lines with scores below say -.50. I don't know of anybody else doing this, but it's a somewhat obvious idea.
Crafty has several interesting modes for dealing with the book.

1. you can use "book random 0" which says "find all legal book moves, but rather than choosing among them randomly, do a search instead and pick the one that the search says is best." This works well, but has the undesirable side-effect of making it want to accept gambits when they are so deep the search can't see the "punch line" until it is too late.

2. You can put it in "tournament mode" which says "when we ponder, find all the known book moves for the opponent, and exclude those from the set of moves to choose a pondering candidate from, and then do a search over those non-book moves (shorter than normal time limit) to find the best "non-book" move to ponder. The idea here is that often there is a non-book move that is very obvious, and rather than wasting time, we find this "good non-book move" and then ponder that rather than just "sitting"...

3. There are also special-cases where it won't play a book move if it leads to a repetition, it prefers a search instead to avoid a repetition draw when it might be better...
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: ZCTACCAWCRCC

Post by bob »

jdart wrote:
it might help to do just a qsearch on the leaves of the tree, i.e. each possible out-of-book position, and prune out lines with scores below say -.50. I don't know of anybody else doing this, but it's a somewhat obvious idea.
I have heard of people doing searches at the tip and propagating back the scores to improve book move selection (usually offline, to optimize the book). That might help although without a giant computing grid it's really infeasible for an entire reasonable sized book.

You need to do more than a q-search to make this effective. There are not a few openings where the "right" move is a temporary sac of material or something else that's hard to find in a shallow search. In fact GMs love to find this kind of thing to surprise their opponents.


--Jon
We did this in Cray Blitz, but it has a flaw. It only searches from the tip positions, which means that if there are blunders, or omissions in the main book line, you will have no clue... Otherwise it works OK, but we found that we _still_ made some bad book mistakes because the interior tree is solely dictated by the book moves (games) used, the search doesn't see the other choices. It might be possible to direct the search to follow book lines and somehow use the "problem discovery" to influcen the book, but we never made that work. All we could do was to do a search from every "internal book node" and if the score dropped or rose suddenly as a result of a non-book move being searched, we would "flag it" and look at it manually to decide how to make use of that information.
Tony Thomas

Re: ZCTACCAWCRCC

Post by Tony Thomas »

Oh Zack, I cant believe I forgot to reply to this thread. I could have sworn that I wrote a reply, may be in my mind..

Tony and I are nemeses (though he might not know it), so I was talking trash to him from the start.
Hmm, what shall I say?? May be the fact that we are in the same age group made you pick me as your nemesis?
Romi is rated much higher, despite Mike's constant self-derision.
Agreed, Mike constantly says that he is the worst programmer..I think he might be just extremely humble..
Soon ZCT's own score dropped to about -1.5, in line with Romi's eval. Then things got weird: ZCT went from a -1.5 score on move 39 to a +6.4 on move 45. I think this is because Romi didn't have the necessary eval to see the danger of ZCT's passers.
I had predicted that your pawns were going to be passers long before they had even started moving. It's simply a classical Romi mistake, I do not think that Romi got passed pawn eval..

I will get you back in the next tournament..
User avatar
Zach Wegner
Posts: 1922
Joined: Thu Mar 09, 2006 12:51 am
Location: Earth

Re: ZCTACCAWCRCC

Post by Zach Wegner »

Tony Thomas wrote: Hmm, what shall I say?? May be the fact that we are in the same age group made you pick me as your nemesis?
Hehe, I'm only kidding of course, Tony.
I had predicted that your pawns were going to be passers long before they had even started moving. It's simply a classical Romi mistake, I do not think that Romi got passed pawn eval..
Yes, I think even ZCT's minimal pp eval was decisive in this game.
I will get you back in the next tournament..
We'll see about that. :twisted:
CRoberson
Posts: 2094
Joined: Mon Mar 13, 2006 2:31 am
Location: North Carolina, USA

Re: ZCTACCAWCRCC

Post by CRoberson »

Tony Thomas wrote: I will get you back in the next tournament..
I'll be waiting for the next round of book excuses 8-)