Author: Sune Fischer
Date: 13:15:03 11/18/02
Go up one level in this thread
On November 18, 2002 at 13:23:01, Robert Hyatt wrote: >>Not necessarily. I do that, but before calling qsearch I get the chance to check >>for draw, see if there is a hash or egtb table hit or if I should do some >>further extensions (ie. this way I don't enter qsearch when in check!). I don't >>do any of this in qsearch. > >I don't enter quiesce() if in check either, however I also avoid tacking on the >procedure call overhead. If you want to do all that, just move it down in your >search code to just before you call quiesce. You get the _same_ effect, without >an extra procedure call thrown in. > Well, like I said I do more than that, but the main reason why I decided on accepeting this "overhead", was so that I wouldn't have the same segment of code repeated 7-8 times as in Crafty. I believe it is easier to maintain the following simple structure: search() { check_draw(); check_egtb(); do_extensions_pruning(); probe_hash(); if (depth<=0) return qsearch(); genmoves(); while (moves) { makemoves() searchmoves(); .. } } I keep of course a list of moves made, so I can backward futility prune with no problem, alpha is just -beta and beta is -alpha. -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.