Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Question to Ed Schröder

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.