1981075670675789312 (estimated value)
0000059997681255613 (estimated standard deviation)
My method uses N plies of full-width search, then 13-N plies of pruned
search. In the pruned part of the tree I search exactly one child node
for each node. (This seemed to give a lower standard deviation per
time unit than H.G.Muller's method that has a fixed move acceptance
probability if I understood correctly.)
I set N=3, called the search method repeatedly in an infinite loop,
then let it run in the background until I had around 180000 samples.
I finally computed the average and standard deviation of all samples.
The code looks basically like this:
Code: Select all
private final void doPerfTSampled() {
while (true)
System.out.printf("%d\n", perfTSampled(13, 3));
}
private final long perfTSampled(int depth, int fullDepth) {
MoveGen.MoveList moves = moveGen.pseudoLegalMoves(pos);
MoveGen.removeIllegal(pos, moves);
if ((depth == 1) || (moves.size == 0))
return moves.size;
UndoInfo ui = new UndoInfo();
if (fullDepth <= 0) {
int r = rnd.nextInt(moves.size);
pos.makeMove(moves.m[r], ui);
long nodes = perfTSampled(depth - 1, fullDepth - 1);
pos.unMakeMove(moves.m[r], ui);
return nodes * moves.size;
} else {
long nodes = 0;
for (int mi = 0; mi < moves.size; mi++) {
pos.makeMove(moves.m[mi], ui);
nodes += perfTSampled(depth - 1, fullDepth - 1);
pos.unMakeMove(moves.m[mi], ui);
}
return nodes;
}
}
