Author: Bas Hamstra
Date: 03:23:40 12/05/02
Go up one level in this thread
On December 04, 2002 at 18:14:06, Robert Hyatt wrote:
>On December 04, 2002 at 03:43:09, Bas Hamstra wrote:
>
>>On December 03, 2002 at 22:45:16, Robert Hyatt wrote:
>>
>>>On December 03, 2002 at 18:59:20, Jon Dart wrote:
>>>
>>>>On December 03, 2002 at 17:16:58, Robert Hyatt wrote:
>>>>
>>>>>
>>>>>the idea is to do anything you can to exclude moves. Because below each move
>>>>>you search, you grow a tree, and that is expensive. If alpha is 0.00, and
>>>>>the current material score is -15.0, then capturing a pawn is not going to
>>>>>help, and avoiding that capture avoids the tree below it.
>>>>
>>>>I've noticed that Crafty uses the material value as a basis for calculating
>>>>futilty. In other words, if material + SEE gain + safety margin < alpha, you cut
>>>>the move (I do something similar at present).
>>>>
>>>>What Mike is suggesting is to use the total position eval, which is also
>>>>something I've experimented with. So: if eval + capture + SEE gain + safety
>>>>margin < alpha, you cut. If you have large positional scores, this is possibly
>>>>safer (the "safety margin" in Crafty is only 1 pawn).
>>>
>>>If you follow the logic carefully, this is also what crafty is doing. At
>>>the top of Quiesce() I grab the positional (stand-pat) score, and if this is
>>>> alpha, then I set alpha to that value. All the pruning is then based off
>>>of this positional (material+positional returned by Evaluate()) score plus the
>>>capture gain, plus a fudge as removing a piece could increase the score but
>>>probably not by a lot...
>>
>>It is not the same IMO. I think Jon means this: suppose Eval is below alpha.
>>Then in Crafty you calculate Delta=Alpha-Mat-Margin. However more accurate might
>>be Delta=Eval-Margin. IE you prune based on Eval rather than material.
>>I tried this, and the result is it will throw out less captures while I see no
>>noticable improvement in accurracy.
>>
>>Bas.
>
>I am not quite following. I prune on the eval value _before_ the capture,
>adjusted by the value of the captured piece plus an "error estimate". I think
>my error estimate is very safe except for one circumstance, that where the
>last piece is removed and it can allow a pawn to run...
45 value=Evaluate(tree,ply,wtm,alpha,beta);
46 if (value > alpha) {
47 if (value >= beta) return(value);
48 alpha=value;
49 tree->pv[ply].pathl=ply-1;
50 tree->pv[ply].pathh=0;
51 tree->pv[ply].pathd=iteration_depth;
52 }
66 delta=alpha-100-(wtm?Material:-Material);
The above is from Crafty. Suppose you are a knight down. How do you prune on
eval-value? I don't follow.
Bas.
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.