Friday, April 29, 2005

Chess, not Checkers

I'm off to a chess tournament which will last for 9 days. However, the title of the post is misleading, I plan to fix two bugs and add a couple of features to CheckerBoard when I'm not playing chess! I also want to write a book merge tool to replace the old values in the opening database with the newly calculated ones. I hope I'll find the time for all the things I want to do...

In the meantime, I have new results from the new book, which was at 46'000 moves when I last tested it:

  • mailplay:
    +1 = 18 -5
  • lost:
    +14 = 4 -18
  • normal:
    +3 = 271 -14

That's hardly better than at 20'000 moves, although there is some randomness to these matches, because KingsRow chooses among equal moves at random.

Friday, April 22, 2005

The need for a book update

I have to admit: I'm not really a good programmer. I still program in plain C, have no idea about object-oriented programming and new developments like Java have passed me by. Good practices like documenting code, using CVS and the like are not on my skills list either. Why do I mention this? My programs are usually "work in progress". Often, I know better but don't bother to fix certain things. The book generator is such an example. As a small excuse, I wrote it at a time where I didn't have the 8pc database yet and didn't ever expect to generate opening databases with millions of positions. But now that this has happened, some rather obvious flaws in the design of the book generator have appeared. The basic problem is that with the 8pc database and a huge book (meaning lines are searched very deeply), most openings turn out to have the value 0 - the book generator manages to more or less find a path directly from the 3-move starting position into the endgame database. It also turns out that in most positions, there are a number of moves that all have value 0 - all of these moves draw. However, typically one of these moves might leave you in a strong position, and the opponent has to play accurately to draw, while another of these moves could leave you struggling for the draw. Of course, I would want Cake to choose the move that leaves it in what is called a strong draw. But how do you do this? The solution I envisaged at the time I wrote the book generator works as follows: In every position, the opening database contains the values of all moves as they were computed when this position was first examined, plus the values that come from propagation of further expansion. The propagated values are the true values, but if two or more of these are the same, I want Cake to choose the move which looked better on a shallower search. That's just what it does right now. Does all of this make sense? Doesn't this sound like a sensible approach? Well, there is a flaw: When I started generating the opening database, I used a beta version of Cake Sans Souci for the first approximately 90'000 moves. Then I switched to Cake Sans Souci, and much later, already after over 1 million positions, I switched to Cake Manchester. At the same time, I upgraded the hardware from an Athlon XP 1600+ to a XP2400+ and later to an Athlon64 3000+. All of this means that the first positions examined - the most important ones! - were searched with a clearly weaker machine+engine-combination than what I have today. The first positions are the most important ones, because that's where you decide how to play - at later stages things are often forced or simply a draw. Therefore, the most important decisions in the opening are not made by Cake Manchester, but by Cake Sans Souci beta, and I'm not happy about that! I'm in the process of computing a small opening book with Cake Manchester, which I will then import into the full opening database, which should improve things. There are many other details that are not good in my book generator, but this post is already too long to write about them now!

The match that wasn't

Currently, a suicide checkers match is being played between Europe and the US on 10 boards. You can view the games online! Suicidal Cake should have played on the 11th board against an American program, but some human players didn't want the programs participating. I can understand that people don't want to play against programs (after all, I should have played against a chess computer in a Swiss tournament in 1991, and decided to forfeit the game rather than play!), but I don't quite understand the objection against two programs playing each other. In fact, I cannot understand at all that the human experts aren't interested in seeing what the programs play!

Tuesday, April 12, 2005

Book update

I have been computing a new book for Cake starting from scratch for the last 10 days. With 20'000 moves in the book, I had Cake Manchester 1.09 play against KingsRow 1.14p with its massive opening database on my AMD64 3200+, @2s/move, with 512MB db cache and 64MB hashtable each. The result, predictably, was quite lopsided:

  • 12 mailplay openings (now part of the standard deck):
    +0 =17 -7
  • 18 lost openings:
    +13 =6 -17
  • 144 normal openings:
    +6 -16 =266
This certainly isn't too good, however, the book is still very small and will improve rapidly. Keep in mind that my full book is based on 1.6 million positions! I haven't tested how the old 90'000 move book that is distributed with the CB installation does in a match with KingsRow, but probably not much better than this new tiny book. Once the new book is reasonably good (probably around 100'000 to 200'000 positions), I will release it. Why am I doing this instead of releasing my full book? Good question, and I will answer it in my next post.

Friday, April 08, 2005

The Cake 7pc database is available for download!

Thanks to a generous individual who has offered me space+bandwidth on the internet, the 7pc endgame database for Cake (KingsRow can use it too) is now available for download. Get it!
The Cake endgame database is more compact than the Chinook endgame database, and will give you a bit better performance.

Sunday, April 03, 2005

A postscript to exaggerations, part 3

A bit more than 2 weeks ago I wrote about the exaggerations on the WCC website. Yesterday, I read in Bob Newell's Checker Maven that Bob is now going to distribute WCC platinum versions II and III at the cost of duplication and shipping. The only good thing about this is that more people will get their hands on platinum and be able to see that the claims on the WCC website are in no way true.

Saturday, April 02, 2005

Cake for Linux with opening book released

Peter Chiochetti has published Cake 1.20 with an opening book for Linux. The book is based on a huge opening database of over 1.5 million positions, and is probably nearly error-free. Get the new version of Linux-Cake on the xcheckers page!