Author: Robert Hyatt
Date: 15:15:03 11/18/02
Go up one level in this thread
On November 18, 2002 at 16:15:03, Sune Fischer wrote:
>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:
I'm not sure what you mean "repeated 7-8 times". My repetition/hash/egtb code
occurs exactly one time in search() and nowhere else...
Ditto for search extensions as they occur right after MakeMove() is called,
prior
to the recursive call to Search or Quiesce...
>
>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.