For the use of self-play I at the time wrote a small util (see below) that emulates a match between 2 equal engines in order to find out how many games it would take before every try (round) would give a reliable result. I consider a reliable result in the range of 49.9 - 50.1%
After all 1% is 6-7 elo points.
Running the utility shows that 10,000 games so now and then still may produce a 49-51% result so one is still left with an 6-7 elo error margin.
Only after 100,000 games things become stable.
Since I don't have the hardware to play 100,000 games I limit myself to 4000. When it shows an improvement I run it again with a different database. Kind of verification process. Then I make a decision.
Thoughts ?
The C-code then with apologies for the "goto" use, I am raised with that.
Ed
------------------------------------------------------------------
Code: Select all
#include <stdio.h>
#include <stdlib.h>
void main()            // emulate matches
{       int r,x,max,c; float win,loss,draw,f1,f2,f3,f4; char w[200]; int rnd,d,e;
        srand(rnd);
again:  printf("Number of Games "); gets(w); max=atoi(w);
loop:   x=0; win=0; loss=0; draw=0; printf("\n");
next:   if (x==max) goto einde;
        r=rand(); r=r&3; if (r==0) goto next;
        if (r==1) win++;
        if (r==2) loss++;
        if (r==3) draw++;
        x++; if (x==(max/4)) goto disp;
             if (x==(max/2)) goto disp;
             if (x==(max/4)+(max/2)) goto disp;
             if (x==max) goto disp;
        goto next;
disp:   f1=win+(draw/2); f2=loss+(draw/2); f4=x; f3=(f1*100)/f4; d=f1; e=f2;
        printf("%d-%d (%.1f%%)  ",d,e,f3);
        goto next;
einde:  c=getch(); if (c=='q') return;
        if (c=='a') { printf("\n\n"); goto again; }
        goto loop;
}


 This generation surely has a
 This generation surely has a 