This is an interesting observation. Near the root of the tree, there seems to be no point in adapting, because a full-with search seems to be just as good as adaptation. Near the leafs (ply 12) of the tree, it seems hard to adapt because there is too little information to adapt on.hgm wrote:The problem I have with adaptive methods is that there is no information available to adapt on, unless you allow on average more than one move per node to be accepted. And this would explode a deep perft tree very rapidly, using almostt all nodes in the final plies, drawing away the nodes from the early plies, which seems to defeat the purpose.
However, I think there is a way around that. One can use something similar to the the history heuristic. This will allow information gathered from one part of the search tree to be applied to a different part of the tree, even if the corresponding positions are not the same. Using exponentially decaying memory, an idea already used in CuckooChess, I already have an implementation that beats "Peter1(12,3)" using moveGen metric, but not using CPU time metric. I will try to tune it more, but the basic method is like this:
1. Do fw plys of full-with search.
2. For each leaf node, do a random walk.
3. For the first h plys of the random walk, use non-uniform weights computed from history information.
4. For the remaining part of the random walk, use uniform weights.