I was wondering how to test move order quality, not just how often a first move fails high, but doing this at various depths and also what type of move fails high (types of moves being hash/TT, capture, killer, etc.).
I did find a few references to this subject on talkchess and the computer chess club archives and was able to model some statistics, but have a question or two.
When reviewing the type of moves:
* Hash/TT move never fails high at any depth.
* Captures fail high at their peak at depth=1 and these fail highs decrease as the depth gets closer to the root.
* Killers and "all other moves" follow the same pattern as captures but they have less than the captures.
When reviewing what move number failed high - first move to tenth move was measured - this is what I observed when reaching a depth of 8 on a random position:
Depths 6, 7, and 8 - no fail highs.
Depth 5 - first move failed high 44 times
Depth 4 - first move - 299 cuts, second and fifth moves - 1 cut.
Depth 3 - first move - 1138 cuts, second and seventh moves - 1 cut.
Depth 2 - first move - 5613 cuts, second move - 15, fourth move - 1 cut.
Depth 1 - first move, 19933 cuts, 2nd move - 68 cuts, 3rd move, 11 cuts, 4th move - 2 cuts
Total fail highs (for all moves, not just the first 10 per ply): 27139
Total first fail highs: 27033
Overall Fail High for First Move: 99%
The observation for these two reviews is the same: the closer to the leaf nodes, the more the cuts; the closer to the root, the less the cuts.
The observation is consistent across other positions, with exception to the fact that other positions will have a lower cut percentage for the first move (I've seen as low as 75%).
I guess my first question on this observation is if it normal to not see cuts within a ply or two from the root? It is my understanding the higher we can cut then less nodes will be searched and more time will be available for searching. However, I would believe this to be a valid point - there are just less moves searched at depth=6 when compared to, let's say, depth=2. Plus, after all the iterations, reaching a depth of 8, I'd think maybe there are less chances of a "too good of a move" to exist at depth 7 and possibly depth 6.
A second question would be why my hash/TT does not cut? I am a little surprised that it does not cut anywhere in the entire search. I do write the best move for the node to the TT, whether it is an exact, lower, or upper. Maybe I'll track this same stat but for the best move beating alpha, maybe that's a valid test?
Last question would be if the process I am following is good then should I expect more cuts across the first move (or even first 5 moves) if I do improve move ordering?
Thank you in advance
