Author: Vincent Diepeveen
Date: 15:49:53 05/05/04
Go up one level in this thread
On May 05, 2004 at 17:29:57, Alvaro Jose Povoa Cardoso wrote:
>Hi Ed,
I'll answer that for Ed.
Please be sure that Rebel has a very efficient implementation of alfa and beta
and doing things. So what is alpha at his page might be done directly after
making a move. In that case for you it is -beta. Thanks to this problem which Ed
to some extend realized itself he has modified alfa and beta here a little.
So the > and < are confused here and there a little and -beta became alfa
without changing the < and > sometimes. I guess quick editting mistakes they
were.
Important is the explanation Ed gives. It says it all.
>The citation below is on your page about chess programming.
>The topic is the first reduction example.
>My doubt is about the line:
> { if (ALPHA > SCORE + MARGIN) reduce depth with 1 }
So i guess this translates to at top of your search:
if( score + margin < alfa ) THEN do dubious reduction(s)
In short if a move is not promising enough added to it some optimistic
knowledgeable function MARGIN then f' the move and reduce it.
Note that i am not so convinced this will work great.
>is the above right or should it be?:
> { if (ALPHA < SCORE - MARGIN) reduce depth with 1 }
not at all.
>You say: "The basic thought behind the idea is to reduce the search with one ply
>if the side to move is already behind a rook or worse depending on remaining
>depth."
>Being "already behind a rook" means 'alpha<score-rookvalue' right?
at top of search (assuming recursion) :
score + rook value < alpha
I hope you realize how well optimized the assembly code of Ed is. There is no
clear top with a clear alfa and beta distinction like in the 'neat' but slow
code.
>Best regards,
>Alvaro Cardoso
>
>
>
>Citation:
>
>REDUCTION-1 : In the main-search (not Q-search) after REBEL has called
>"Make_Move();" it investigates if the move is candidate for a reduction. REBEL
>uses the following formula:
> if (remaining_depth > 2
> && own_king_was_not_in_check_before_make_move
> && move_is_no_capture
> && move_does_not_check_the_opponent_king) then // such as Bf1-b5+
> { if (ALPHA > SCORE + MARGIN) reduce depth with 1 }
>
> SCORE = The score of the position (material value +
> piece-square value's)
>
> MARGIN = TABLE [remaining_depth];
>
> static int TABLE 0, 0, 0, 500, 500, 700, 700, 900,
> 900,1500,1500,1500,1500,1500,1500,1500,
> 1500,1500 ................................ };
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.