Don wrote:bob wrote:rjgibert wrote:Rebel wrote:Don't take the subject line too serious, it's meant as fun mainly but perhaps there is some learning effect also. So let's compare your move ordering with others and how efficient it is.
Some time ago Don courageously stated Komodo has the best move ordering of all, so Don, here is your chance to proof it
I made a little script for just 10 positions as an opening move for further discussion, on the result page suggested 2 better proposals. But for a start check it out first.
http://www.top-5000.nl/motest.htm
http://www.top-5000.nl/moresu.htm
This isn't a good way to compare move ordering efficiency between programs. The more selective searchers will prune away substantial parts of the tree, that less selective searchers will still consider. This will bias the results. You admit as much on your results page.
Why is this a problem? He is simply measuring "when you get a fail high, what percentage of the time is it on the first move searched?" You can prune whatever you want, but you STILL get fail highs. The higher this percentage, the better a parallel search will work and the closer the tree size approaches the optimal (minimal) tree that must be searched.
I suspect this is a relatively fair comparison between 2 versions of the same program, but I don't see how it can be used to prove one program has better move ordering. The scoring resolution is just one example of how this would not be valid.
However, it may be a very good way to determine if you have made improvements in the move ordering - this is something that I have often done with Komodo anyway and I think a lot of other programmers do this also.
I think a better measure might be to give the second move half credit, the 3rd move 1/4 credit, and so on. A BIG part of the move ordering in Komodo is how the moves that are NOT either the history move or a capture or killer. This would impact that, but I don't think it would show the full power.
I don't see how it will be a big gain. My FH% has always been in the 90+% range, I've been displaying this number since the Cray Blitz days. That means that only 10% (or less usually) of the time can you improve things. The cost of the ordering has to be minimal, because of the ALL nodes where ordering is completely irrelevant and any cost incurred is pure overhead. Approaching 100% is impossible, which means there is not a lot to work with. If you use move ordering for something else, such as LMR, then there could be a gain, but not in the base FH% I don't believe. I think Jonathan Schaeffer studied this years ago and defined "strongly-ordered game tree" as one where the best move is the first one searched, at least 90% of the time. The very premise of iterated search makes it impossible to get to 100% even if one ignores the concept that perfect ordering is impossible without advanced knowledge of the final best move / PV, and even then, it won't be best at shallow searches, making 100% impossible.
Doesn't seem like a lot of room left to improve on once one reaches the magic 90% range, and just good captures, hash and killers will do that.
Credit for 2 and such doesn't make much sense to me in this context. I suppose one might simple gather stats on fail-high nodes and produce a histogram of the number of moves searched to get a fail-high. However, the basic issue still remains. It is FAR more important to get the best move first than it is to get the second-best move second...