Author: Robert Hyatt
Date: 12:14:06 01/21/04
Go up one level in this thread
On January 21, 2004 at 14:31:55, Sune Fischer wrote: >>nonono... >> >>We only do it on PV nodes.... >> >>I can't possibly do it if I can fail low, except for the rare cases where >>the root aspiration window alpha bound is too high and the best move is >>actually worse than the expected bound. > >But you can fail-low, so that's what I don't understand. >You have the condition: > > if (ply & 1) { > if (alpha!=root_alpha || beta!=root_beta) break; > } > else { > if (alpha!=-root_beta || beta!=-root_alpha) break; > } > >Nothing in principle prevents the search from returning score<=root_alpha. How often do you fail low at the root on the first move? And if you fail low on that move, how often do you not have best moves in the hash table from the previous iteration? If you have a best move, IID is _never_ done at a ply. But if you fail low, you are _already_ going to search a bigger tree. And IID is only done on fail high cases normally. IE The first move at the root produces a normal score, then you fail high on some later move. _now_ you have a search problem. You have no suggested hash move at ply=2, because at ply=1 you failed high, so at ply=2 you failed low with no best move. Now you apply IID to get a good move for ply=2. Note how close to the root of the tree this position is. A bad move will blow the tree way up in size. IID lowers that cost. In general, that is the _only_ place it is done. IE on a fail high at the root, I might start off doing an IID search at ply=2, as that was a fail-low position. But I won't need it at ply=4, because the previous IID search at ply=2 has already visited ply=4 and stored me a best move. They just are not done enough to hurt, but when they help, they _really_ help. I have taken a test set like the kopec positions, and run them with and without IID, and IID generally saves 10-15% overall, which is worth-while. It might actually hurt here and there, yes. But if done correctly, it should _always_ help more than it hurts.. > >>But fail-low or fail-high at the >>root is not that common, and there I only do it when (a) I expect a hash >>move and don't have one, > >But what is your condition for expecting a hash move, other than being on the >PV? That's it... I am searching a node that is non-null-window, ie alpha < beta-1, usually alpha=P-40, beta=P+40 or some such initial aspiration window. I get to any ply with that, I am on a PV search. If there is no hash move, then I save tree search space by doing an IID search to find the best move here. Think about our basic search. At the root, you need to pick a best move to play, but you don't know which to use. Do you start a 12 ply search, or work your way up 1-2-3-4-5-6-7-8-9-10-11-12? Why? Only because it improves move ordering. IID is just applying this idea inside the tree at selected points where it is critical to have good ordering.. > >-S.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.