Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Extensions

Author: Peter Fendrich

Date: 01:43:08 04/23/04

Go up one level in this thread


On April 23, 2004 at 03:37:38, Jeff GAZET wrote:

>Good morning,
>
>i'm trying to add extensions to my engine. I'm using a classical alphabeta
>function :
>int alphabeta(int depth, int alpha, int beta)
>depth is dicreased 1 by 1 :
>eval=-alphabeta(depth-1,-beta,-alpha);
>
>At the beginning at the function alphabeta(), if king is incheck, i do
>++depth. This works fine.
>
>In the main move loop, if do a ++depth on a promoting move, juste before
>calling -alphabeta... the engine searches for ever when the first promoting
>move is found. Then, if i add "if depth<1" or <2, i don't see any
>improvment.
>
>I don't understand how engines like GnuChess can write : depth+=DEPTH when
>extending.
>(DEPTH is 12).
>
>Could someone give me some explanations, please ?
>
>Regards.

I haven't read GnuChess code but I can describe what I (and many others) do and
that is probably very similar to the GnuChess variant.

Instead of using 1 as depth increment you can use for instance 100 (I'm using
64).
Your outer loop will be something like
for (depth=100; depth < MAX_DEPTH; Depth += 100){
 .
 .
 .
}

In your call to alphabeta
eval=-alphabeta(depth-100,-beta,-alpha);

Now when you extend or reduce depth you can use fractions of one ply
90, 75 or whatever instead of always 100 in all cases. This is valuable
when you want different weights for different extensions.
I suppose GnuChess uses the same idea.

Regards,
Peter




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.