Opening book

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Opening book

Post by Don »

I'm looking for ideas and opinions on how to develop custom opening books for your chess program. Not for testing, but for playing. Presumably there would be a tournament version and more variety based version or it would be integrated into one book somehow.

And this would assume that one does not have the resources to hire or manually produce a high quality book.

I'm not looking for information on how to code it up, this is about how to select the moves to play.

Any ideas?
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Opening book

Post by bob »

Don wrote:I'm looking for ideas and opinions on how to develop custom opening books for your chess program. Not for testing, but for playing. Presumably there would be a tournament version and more variety based version or it would be integrated into one book somehow.

And this would assume that one does not have the resources to hire or manually produce a high quality book.

I'm not looking for information on how to code it up, this is about how to select the moves to play.

Any ideas?
Classic book learning works well, the problem is to avoid playing games at too different a time control from what you will play in tournaments, so that what you learn remains relevant.
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Opening book

Post by Don »

What do you mean by classic book learning? I have seen a million different schemes for book learning and as I have been out of touch for a few years I am not up on the state of the art.
bob wrote:
Don wrote:I'm looking for ideas and opinions on how to develop custom opening books for your chess program. Not for testing, but for playing. Presumably there would be a tournament version and more variety based version or it would be integrated into one book somehow.

And this would assume that one does not have the resources to hire or manually produce a high quality book.

I'm not looking for information on how to code it up, this is about how to select the moves to play.

Any ideas?
Classic book learning works well, the problem is to avoid playing games at too different a time control from what you will play in tournaments, so that what you learn remains relevant.
User avatar
mclane
Posts: 18949
Joined: Thu Mar 09, 2006 6:40 pm
Location: US of Europe, germany
Full name: Thorsten Czub

Re: Opening book

Post by mclane »

IMO you need to store infos about the moves such as

1-9 (how often the move shall be played),
0 if the move should not be played
and if this is possible, bob is right, one could store the result of the line and maybe also the time-control ...

take a normal PGN, and store the info as {doch_book:0} or {doch_book:9}

then later you can merge all PGN games or lines to a tree.
people can enhance the book by merging PGNs with {doch_book:} information to certain moves.

when doch moves, show an info line with the possible moves in the order, e.g.:
doch_book: e2e4:9 d2d4:8 c2c4:6 f2f4:0
so the users or book makes can see the prioritys.
What seems like a fairy tale today may be reality tomorrow.
Here we have a fairy tale of the day after tomorrow....
Ferdy
Posts: 4851
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Opening book

Post by Ferdy »

Don wrote:I'm looking for ideas and opinions on how to develop custom opening books for your chess program. Not for testing, but for playing. Presumably there would be a tournament version and more variety based version or it would be integrated into one book somehow.

And this would assume that one does not have the resources to hire or manually produce a high quality book.

I'm not looking for information on how to code it up, this is about how to select the moves to play.

Any ideas?
How about this
1. (c) moves from recent games with won result (weight=?)
2. (c) moves from strong players (weight=?)
3. (a) moves from weaker players that won vs strong players (weight=?)
4. (c) moves from games with high won percentage (weight=?)
5. (b) moves from games of strong players, limit moves to withing 16 moves or less (weight=?)
6. (a) moves from won games of your program (weight=?)
7. (a) moves from world championship games(weight=?)
8. (a) moves from games of players that drew stronger opponents (weight=?)
9. (c) moves from games of your favorite strong players (weight=?)
10. (a) moves from games based on time control (weight=?)
11. (c) moves from games based on opening, say sicilian, ruy, benoni, etc. (weight=?)
12. (c) moves from most no. of games (weight=?)
13. (c) moves from games based on average players' ratings (weight=?)
14. (a) moves from games based on the number of moves the game has finished (weight=?)

a = use computer games
b = use human games
c = use computer and human games

Decide the weight on each item, then calculate the overall weight, select the move with largest weight.
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Opening book

Post by Don »

Interesting idea, but there is something called the credit assignment problem that probably should be factored in.

I remember Bob explaining how he did it many years ago and wonder if that is still how people do it. It involved credit assignment. I cannot remember the details, but I seem to remember that he gave decreasing weights to each move in book starting from the last position out of book. For instance if the game was a loss, the last book move got most of the blame, the one before that got a little less blame, etc. That may have been conditioned on the strength of the opponents or something.
Ferdy wrote:
Don wrote:I'm looking for ideas and opinions on how to develop custom opening books for your chess program. Not for testing, but for playing. Presumably there would be a tournament version and more variety based version or it would be integrated into one book somehow.

And this would assume that one does not have the resources to hire or manually produce a high quality book.

I'm not looking for information on how to code it up, this is about how to select the moves to play.

Any ideas?
How about this
1. (c) moves from recent games with won result (weight=?)
2. (c) moves from strong players (weight=?)
3. (a) moves from weaker players that won vs strong players (weight=?)
4. (c) moves from games with high won percentage (weight=?)
5. (b) moves from games of strong players, limit moves to withing 16 moves or less (weight=?)
6. (a) moves from won games of your program (weight=?)
7. (a) moves from world championship games(weight=?)
8. (a) moves from games of players that drew stronger opponents (weight=?)
9. (c) moves from games of your favorite strong players (weight=?)
10. (a) moves from games based on time control (weight=?)
11. (c) moves from games based on opening, say sicilian, ruy, benoni, etc. (weight=?)
12. (c) moves from most no. of games (weight=?)
13. (c) moves from games based on average players' ratings (weight=?)
14. (a) moves from games based on the number of moves the game has finished (weight=?)

a = use computer games
b = use human games
c = use computer and human games

Decide the weight on each item, then calculate the overall weight, select the move with largest weight.
rjgibert
Posts: 317
Joined: Mon Jun 26, 2006 9:44 am

Re: Opening book

Post by rjgibert »

Romichess has a simple opening book learning mechanism that is surprisingly effective:

http://rybkaforum.net/cgi-bin/rybkaforu ... l?tid=3154