Author: Tony Werten
Date: 11:02:27 08/12/04
Go up one level in this thread
On August 12, 2004 at 13:24:37, Stuart Cracraft wrote:
>On August 12, 2004 at 10:42:20, Tony Werten wrote:
>
>>On August 12, 2004 at 10:18:45, Stuart Cracraft wrote:
>>
>>>Here is the result of the 30 second per position test on 300 positions
>>>using nothing, see>=0 to search a capture, see having to bring the score
>>>within alpha and a margin (futility/delta), and with both.
>>
>>I'm not sure how it is usually done, but I don't think it is safe to prune the
>>see score against alpha but rather the captured piece value. Else it makes your
>>qsearch even more blind.
>>
>Hi Tony,
>
>What I do is this:
>
>quiesce
>:
> baseval = eval(bd);
>:
> while next capture move available; do
>#define MARGIN 200 // 200 millipawns, 1000 = 1 pawn in my program
> delta = MAX(alpha-MARGIN-baseval,0);
> seeok=see(bd,qml[mvi].to);
> if (seeok < delta || seeok < 0) { skip this capture move }
> else {
> make capture move
> search capture move
> unmake capture move
> look for cutoff, etc.
> }
> endwhile
>endquiesce
Funny, we have quite a different way of writing code. But what I mean is a safer
way of the pruning.
quiesce
:
baseval = eval(bd);
:
while next capture move available; do
#define MARGIN 200 // 200 millipawns, 1000 = 1 pawn in my program
//delta = MAX(alpha-MARGIN-baseval,0); no need for delta variable
seeok=see(bd,qml[mvi].to);
if (baseeval+pieceval[qml[mvi].captured_piece]<alpha || seeok < 0) { skip
this capture move }
else {
make capture move
search capture move
unmake capture move
look for cutoff, etc.
}
endwhile
endquiesce
>
>The part about the delta is the same as what GNU 5 presently does.
>The other part of seeok < 0 is based on Bob
>I am thinking that instead of using MARGIN of 200 I should just use
>maxposnscore[sidetomove] since this is a dynamic maximum positional
>score calculated for the side on move.
That would be the safe way.
>
>The above, separately and together, have been tested and do not provide
>any huge improvement over using neither in a fixed time search. However,
>in long fixed depth searches a 50% nodes reduction and 50% time reduction
>has been seen.
I believe it can safe a lot of nodes, I would be more worried however about the
loss of precision. ie a rook exchange, wich would score -500, when alpha is 0.
Your code says: prune it, the opponent recaptures and we are still below alpha.
My code would say: if the opponent can't recapture we are way above alpha, so
give it a try.
Tony
>
>Stuart
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.