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.