Thirty-fifth KGS Computer Go Tournament

Sunday February 3rd 2008

These results also appear on official KGS pages: Formal Division, Open Division which link to the game records.


 Formal divisionOpen division
format6-round Swiss9-round Swiss
board size13×139×9
time28 minutes absolute18 minutes absolute


The first round started at 08:00 UCT for the Formal and 08:10 for the Open division.


As usual, the tournament was held in two divisions, Formal and Open, with more restrictive entry conditions for the Formal division.

Formal Division   13×13


Open Division   9×9


The "real" names of the bots listed above, and of their programmers, are listed here: programs which have registered for KGS Computer Go Tournaments.

CzechBot is a build of MoGo, entered by Petr Baudiš. I agreed to accept its registration, but to remove it if an "official" MoGo entered.

Hb06 "is a much more modern revision of housebot than HB04", by Jason House.

Formal division

In round 5, agog2 had a secure win against GNU by move 85; there were several dame left, agog2 only needed to take one of them to win, and it had over five minutes left on its clock. It duly claimed one of the dame, then both programs made pointless moves until agog2 only had 11 seconds left, when they both passed in turn. However they failed to agree on the status of agog2's four eyeless groups, so play resumed. If agog2 had now passed rapidly, it might still have won. But it preferred to prolong the game by creating further eyeless groups, and lost on time.
     It is at first surprising that a program which can do thousands of roll-outs per second, can still spend up to eight seconds choosing which completely worthless move to make when no move has any value at all. But I can see how this arises from use of UCT. I don't know what a proper solution is. But a cheap fix which would have worked for this game is "if all moves lead to the same result, then pass". Another would be "if your group dies in every roll-out, concede that it is dead."

GNU vs. valkyria19
In my previous report, I mentioned SimpleBot apparently executing a "two-stone edge squeeze", when in fact it probably had no idea what it was doing (and the sequence didn't work). In round 6 of this tournament, GNU executed a genuine two-stone edge squeeze against valkyria19, as shown in the diagram. Both players now played away from the top left corner, implying that both had read out the status of the corner correctly. My impression is that a human player who can see this tesuji for himself must be at least 3-kyu.

Open division

In round 5, break, though connected to KGS, did not join its game against WeakBot50, and timed out.

In round 7, hb06 went to sleep in its game with CzechBot, and eventually timed out.

In round 8, hb06 connected to its game with SimpleBot, or at least its client program did. But it made no move, and eventually timed out.

In round 9, the same happened in its game with WeakBot50k. Jason House has explained: "HB06 hung in round 7, never responding to a genmove command. Since the bot didn't crash, kgsGtp never disconnected since it was patiently waiting for a response from the engine. The hang up in round 7 therefore carried over into rounds 8 and 9 causing losses on time vs. SimpleBot and WeakBot50k without ever making a move."

Situations like this used to give me a problem. As an admin, I have the power to "kick" a user. Kicking is intended as a mild punishment for human users who misbehave. But the effect of kicking a bot that has gone to sleep is often to wake it up; with the disadvantage that it cannot reconnect for five minutes. I was somewhat reluctant to use it, as I could rarely be sure that it had really hung, and I did not want to be resonsible for destroying five minutes of its time, particularly when there were short time limits. But kicking a bot that timed out of a game, when there was more than five minutes to the next round, was sensible.

Then, thanks to a bug that appeared in the server code, this problem (for me) went away. The effect of the bug was that when an admin kicked someone, it was the admin that got removed from the server, the misbehaving user was unaffected. I no longer had the option of trying to wake a bot by kicking it. I got out of the habit of considering "kick" as an option.

But recently, this bug was fixed. I can now kick users again, and would have kicked hb06 if I had thought of it. I will always be willing to kick a bot if its operator explicitly requests it; and I can take requests at registration time to kick a bot that has been inactive for a period specified by the operator. But in the absence of both instructions and operator, I think I shall kick any bot that times out of a game.