Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: qsearch questions

Author: David Rasmussen

Date: 01:10:45 12/05/02

Go up one level in this thread


On December 04, 2002 at 12:36:44, Jon Dart wrote:

>
>Yes, this is what I meant. Note that if you do an early exit from the scoring
>function (lazy eval) then you need to adjust that if using this technique. E.g.
>if you stop when you know the score is below alpha, that's wrong now, because
>the amount the score is below alpha matters (cutting off early if you are above
>beta is not a problem).
>

The only thing that can happen from this, as far as I can see, is that you cut
too few captures as futile. Because when you call Evaluate(), with lazy eval,
you might get back alpha, when in fact the real score is alpha-queen. So you
generate captures, maybe some capture such as pxn which according SEE() only
wins a pawn. This capture would be cut as futile if you knew the real score of
the position. Now it is not.

Example:

	Score optimisticExpectation = material + margin + SEEScore;
	if (optimisticExpectation <= alpha)
		break;

This is what I do now (). The "material + margin" is an optimistic estimate of
the evaluation. That is, material + margin >= real_eval. If this plus SEEScore
is above alpha, I search the move, if not, I cut it. What would happen if I used
the real evaluation instead of the optimistic estimate, is that some captures
that now seems to make the score above alpha, will make it slightly below, and
would therefore be cut. So using the real eval would cut more moves. Using the
real eval + margin will sometimes cut more moves (when eval < material) and
sometimes less (when eval > material).

/David



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.