Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: question about book and learning

Author: Jorge Pichard

Date: 05:03:13 04/26/02

Go up one level in this thread


On April 26, 2002 at 07:26:31, Uri Blass wrote:

>I try to implement book and learning in my program.
>The target of the learning is simply to change the choice of the first move
>in every game(I may change it later to change the choice of the first move only
>after a loss or a draw).
>
>The program has a textfile of 2 chars when the first char tells it the first
>move with white and the second char tells it the first move with black.
>
>The program always learn to change the first move with white from e4 to d4 and
>in the next game again to e4
>The program also always change the first move with black from 1...Nf6 to 1...Nc6
>and back to 1...Nf6 with the exception that it does not choose
>1...Nc6 against 1.d4 and prefers 1...d6(I could choose 1...d5 but I do not like
>the fact that after 1.d4 d5 2.c4 my program plays dxc4 and tries to defend the
>pawn).
>
>Here is the relevant part of my program.
>I am interested in ideas how to build better opening book(I know that there are
>a lot of free programs but I know that there are a lot of files in them and the
>main reason that I almost did not look at other programs except tscp is the fact
>that I did not know which file to look first).
>
>If there is a simple program that only use book(it does not have to be a chess
>program and it can be in every thinking game) then I am interested to know about
>it.

Have you taken a look at this one, I believe that the Opening Book for YACE was
created using this Bookbuilder:

http://home.planet.nl/~k.e.c/bbdown.htm

Pichard.
>
>
>char c;
>int fh;
>char buffer[] = "ee";
>unsigned numwrite;
>FILE *in;
>for (;;)
>{
>
>
>if (side == computer_side)
>{
>if (hply<2)
>{
>//the file moveidata.txt is the book file
>//if it does not exist we generate it and put the
>//buffer="ee" in it
>
>
>if (open("moveidata.txt",1)==-1)
>{
>fh = _creat( "moveidata.txt", _S_IREAD | _S_IWRITE );
>if( fh == -1 )
>perror( "Couldn't create data file" );
>else
>{
>fh=open("moveidata.txt",1);
>if ((numwrite=_write(fh,buffer,sizeof(buffer)))==-1)
>perror("write failed");
>close( fh );
>}
>}
>//there is a text file that was created now
>//or in the past
>//we try to open it
>//if we cannot open it we print an error mesage
>//and finish the program
>
>
>if ((in=fopen("moveidata.txt","rt"))==NULL)
>{
>printf("cannot open the file");
>return;
>}
>//after opening the file we put the file chars into
>//the string buffer,remember the char
>//that is relevant to the opening book that is used
>//and close the file
>
>buffer[0]=fgetc(in);
>buffer[1]=fgetc(in);
>c=buffer[hply];
>fclose(in);
>//we remember the file that was created by
>//the variable buffer
>//We now destroy the file and build again
>//a similiar file that is designed to be
>//slightly different
>
>
>fh = _creat( "moveidata.txt", _S_IREAD | _S_IWRITE );
>if( fh == -1 )
>perror( "Couldn't create data file" );
>else
>{
>//There was no error in creating a new file
>//We want to write buffer into the file but
>//we first need to change buffer in the hply place
>
>if (c=='e')
>buffer[hply]='d';
>else
>buffer[hply]='e';
>//we now open the file for writing
>//,write buffer into it amd close it
>//I am not sure if we need to check for errors
>//but I did it to be careful.
>
>
>fh=open("moveidata.txt",1);
>if ((numwrite=_write(fh,buffer,sizeof(buffer)))==-1)
>perror("write failed");
>close( fh );
>}
>//we now play the book move based on the content of c
>//that was copied from the previous version of the file
>//gen_dat[9].m means e4,gen_dat[7].m means d4 based on the order
>//of moves of my program. if it is black to move and I want
>//to play Nc6 I check if the square d4=27
>//and only if it is empty I play Nc6.
>
>
>if (hply==0)
>if (c=='e')
>pv[0][0]=gen_dat[9].m;
>else
>pv[0][0]=gen_dat[7].m;
>if (hply==1)
>if (c=='e')
>if (info[27]==EMPTA)
>pv[0][0]=gen_dat[17].m;
>else
>pv[0][0]=gen_dat[6].m;
>else
>pv[0][0]=gen_dat[18].m;
>}



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.