I use 2N vs N, in 40/4' case 8' vs 4'.Ajedrecista wrote:Hello Kai:
Thank you very much for your effort!Laskos wrote:I also derived the rule-of-thumb formula for gain in Elo points from doubling nodes (or time):
N = number of nodes per move
Elo gain for doubling is ~ 18100/{log(N)}^2
Dealing with Houdini 3 only, it can be said that Houdini at 2x nodes scales the same as Houdini at 1x nodes, and this means that one can plot Elo difference between equally scaling engines.
Here is the strength as a number of doublings, and as it is obvious, equally scaling engines should approach in strength with the number of doublings, or time control.
I have applied your formula of 18100/[ln(nodes per move)]² for each doubling. I have two doubts:
a) In a level of play (for example, level 1 ---> 4000 vs. 2000) I do not know how to interpret your formula: given the number of nodes N, your formula must be applied in a match of (2N vs. N) or in a match of (N vs. N/2)?
You are doing nothing wrong, the rule of thumb formula does not behave very well for exceedingly small and exceedingly large values (say below 10^3 nodes and above 10^11 nodes), so summing it up to infinity is not the way to calculate the limiting value. The exponent is not exactly 2, and 18100 therefore is not exact. The true fitted function is (as a number of doublings, not nodes)
b) In other post, you stated that given Houdini 3 rating at CCRL 40/40' (around level 16 in your nomenclature), then the perfect rating should be around 4870 Elo, that is 1700 Elo better.
I added the first 50 million of terms starting the number of nodes at 65.536 MN = 6.5536e+7 nodes and 131.072 MN = 1.31072e+8 nodes (due to the doubt explained in a)) corresponding to level 16 if I am not wrong. I used the following code in Fortran 95:
Of course, at line 7 I used both 6.5536d7 and 1.31072d8. In the first case I more less obtained 3170 + 1423.28 = 4593.28 Elo, while in the second case I more less obtained 3170 + 1371.47 = 4541.47 Elo. My results are very far from yours...Code: Select all
program limit implicit none integer :: n integer, parameter :: max = 50000000 ! max = 50 million. real(KIND=3) :: delta(max), ln_nodes(max), sum_ do n = 1, max ln_nodes(n) = log(6.5536d7) + (n + 0d0)*log(2d0) ! nodes = (6.5536e+7)*2^n delta(n) = 1.81d4/(ln_nodes(n)*ln_nodes(n)) end do sum_ = sum(delta) print*, sum_ write(*,*) 3.17d3 + sum_ end program limit
I know that a rule of thumb may not be exact but I also do not know if I am doing anything wrong. I guess that a/(b*x^c + 1) and 18100/[ln(nodes per move)]² clearly differ at very long TC.
Regards from Spain.
Ajedrecista.
323.437/(0.0601579*n^1.59204 + 1)
where n is the number of doublings from 2k nodes. n=16 is more or less CCRL 40/40' level of 1 core 3170 points Houdini 3. I summed up this expression from 16 to infinity to get 1700 Elo points above this 3170 CCRL rating, i.e. 4870 Elo on CCRL for perfect engine.