Author: Robert Hyatt
Date: 07:23:22 07/12/02
Go up one level in this thread
On July 12, 2002 at 08:08:20, Vladimir Medvedev wrote:
>How to handle position repetitions during search?
>
>I use the following method:
>
>(pseudo-code)
>
>int CountSearchRepetitions[MAXSIZE];
>int CountHistoryRepetitions[MAXSIZE];
>
>int AlphaBeta(Position pos, int alpha, int beta)
>{
> if( current_ply > 0 && CountHistoryRepetitions[ pos.GetHash() % MAXSIZE ]>0
>)
> {
> return min( 0, beta );
> }
>
> if( CountSearchRepetitions[ pos.GetHash() % MAXSIZE ] > 1 )
> {
> return min( 0, beta );
> }
>
> while( get_next_move() )
> {
> pos.MakeMove();
> SearchRepetition[ pos.GetHash() % MAXSIZE ] ++;
> int eval = - AlphaBeta( pos, -beta, -alpha );
> SearchRepetition[ pos.GetHash() % MAXSIZE ] --;
> pos.UnmakeMove();
>
> ........
>
> }
>}
>
>Is this correct? Shouldn't I return 0 instead min(0, beta)?
>Is it good to add repetitions in game history to repetitions on the current
>branch?
Just return draw_score (in your case, zero it seems). This is a draw.
It doesn't matter what alpha/beta values are. That makes it simpler,
and also will seed the hash table with the _right_ value.
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.