Code: Select all
Your move: uperftr 16 4000000
u[ 1] =  20
u[ 2] =  20
u[ 3] =  31
u[ 4] =  32
u[ 5] =  46
u[ 6] =  48
u[ 7] =  52
u[ 8] =  53
u[ 9] =  56
u[10] =  55
u[11] =  59
u[12] =  58
u[13] =  63
u[14] =  61
u[15] =  62
u[16] =  60
time = 0:06:11.03Based on these upper bound values I get the following results for the perft(N) estimate applying Uri's method:
Code: Select all
depth                           perft                  estimatedPerft  nRandomGames    dev%
    1                              20                              20     1,000,000   0.00%
    2                             400                             400     1,000,000   0.00%
    3                           8,902                           8,907     1,000,000   0.06%
    4                         197,281                         197,341     1,000,000   0.03%
    5                       4,865,609                       4,865,758     1,000,000   0.00%
    6                     119,060,324                     118,971,166     1,000,000  -0.07%
    7                   3,195,901,860                   3,209,904,114     1,000,000   0.44%
    8                  84,998,978,956                  85,542,969,699     1,000,000   0.64%
    9               2,439,530,234,167               2,432,591,226,863     1,000,000  -0.28%
   10              69,352,859,712,417              69,428,574,036,197     2,000,000   0.11%
   11           2,097,651,003,696,800           2,087,523,969,541,570     2,000,000  -0.48%
   12          62,854,969,236,701,700          63,242,213,290,599,300     2,000,000   0.62%
   13       1,979,078,380,667,300,000       1,997,340,520,734,860,000     8,000,000   0.92%
   14      61,737,614,603,214,200,000      61,805,223,274,842,600,000    16,000,000   0.11%
   15   2,001,643,963,368,810,000,000   1,990,053,614,855,530,000,000    64,000,000  -0.58%
   16  64,294,429,943,331,100,000,000  66,008,877,020,267,700,000,000   128,000,000   2.67% ), and otherwise a perft number obtained by interpolation (for depth>12). Column "estimatedPerft" contains the estimate based on Uri's method. "dev%" shows how close "estimatedPerft" is to the exact resp. interpolated perft number. My goal up to now was to keep "abs(dev%)" below 1%. For depth=16 I will have to run a lot more random games to achieve this, maybe 512 million games. Therefore I am not sure about the number of 1000 million games assumed by Uri for depth=20 but only testing can show.
 ), and otherwise a perft number obtained by interpolation (for depth>12). Column "estimatedPerft" contains the estimate based on Uri's method. "dev%" shows how close "estimatedPerft" is to the exact resp. interpolated perft number. My goal up to now was to keep "abs(dev%)" below 1%. For depth=16 I will have to run a lot more random games to achieve this, maybe 512 million games. Therefore I am not sure about the number of 1000 million games assumed by Uri for depth=20 but only testing can show.As a first summary I think I can already state that the method of Uri works very well, since all known perft numbers for depth <= 12 could be predicted with high confidence and quite low effort. For higher depths I can only say that Uri's method seems to give approximately the same results as my interpolation, which allows no conclusion yet since the real quality of my interpolation is unknown (and will be for another bunch of years).
Sven

