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.