Author: Russell Reagan
Date: 17:50:25 01/27/04
Go up one level in this thread
On January 27, 2004 at 15:42:27, Dann Corbit wrote: >>> /* ----------==== INTERNAL ITERATIVE DEEPENING ====----------- */ >>> >>> /* If we're not doing a NULL move and we don't have a hash move and we're >>> * at least 3 ply away from the quiescence search, then try to get a good >>> * guess for the best move by doing a shallower search from here. */ >>> if (depth >= 3 && !do_null) { >>> w = search(on_move, ply, depth-2, alpha, beta, do_null, 1); >>> /* Re-search properly if the previous search failed low, so that we >>> * know we're getting a good move, not just the move with the highest >>> * upper bound (which is essentially random and depends on the search >>> * order.) */ >>> if (w <= alpha) >>> w = search(on_move, ply, depth-2, -32500, alpha+1, do_null, 1); >>> } >Because it is used for move ordering, and because the depth is 2 plies below the >current search depth, it is a sure win. The cost is 1/400th of a full search, >and the win is a good guess for the pv node. > >At least when I tested it in Beowulf it worked well. But I did not try it both >ways in Olithink. Hi Dann, I have a few questions about this code. The first IID search that you are doing (with alpha and beta as bounds) is considered an aspiration search, correct? If that is correct, then I have another question. I thought that if an aspiration search failed, then you couldn't reliably use the score that was returned as you are doing by re-searching with (-32500, alpha+1). Bruce writes about this problem on his webpage (scroll down to the part about search instability in aspiration searches). The code you posted looks equivalent to the code that he says will cause bad search instability. http://www.brucemo.com/compchess/programming/aspiration.htm
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.