bob wrote:The most common "specific reason" is the behavior of each of those moves in the previous iteration, as relayed through the history counters...
And it seems to me that 4-ply exacty values for a particular position lead on average to a better ordering for that particular position than one based on history counters. Btw, I don't really see how history counters from the previous iteration are used for ordering of root moves.
(I might very well be mistaken, but I think I read somewhere that you removed history counters from crafty?)
As far as your last statement goes, I don't follow at all. The root is no different from any other node, except it is the position you have to pick a move for.
If you make a mistake at the root node, that clearly has a far bigger impact on the quality of the search than a mistake at a single node 10 ply from the root.
The point is: there is only one root node. You can do something extra for just that node without any measurable impact on performance. Obviously that is not the case for all nodes at 10 ply from the root, since there are too many of those.
Anyway, you can hardly disagree that ordering of root moves deserves special attention:
hyatt wrote:In my case, my root move scores are pretty good because I do an actual quiesce() search for each one to analyze any hung pieces or moves that hang pieces...
You are doing something extra when ordering moves at the root as compared to any other node. Ed's proposal is to replace the quiesce() search for each move by a 4-ply search with window (-inf,inf) (or maybe just a 3-ply for each move, so in total a 4-ply, I would have to reread the initial post).