Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Repetitions: is this code correct?

Author: José Carlos

Date: 05:38:57 07/12/02

Go up one level in this thread


On July 12, 2002 at 08:32:18, Richard Pijl wrote:

>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?
>
>- You will get many false repetitions as you are mapping many hashkeys on a
>single value ( by % MAXSIZE)
>- Do you take side-to-move, castling rights and the en-passant indicator in your
>hashkey? If not, that's another source of error

  Now that you mention it, I have en-passant and castling rights in my hash key
by I think _I_ have a source of error here, because neither en-passant or castle
rights should be counted for the 3rd repetition. AFAIK, it's only the position
of the pieces and side to move that matters.

>- returning min (0,beta) looks fine although in practice it probably doesn't
>matter much.
>- Game history should be counted, but make sure you do not evaluate repetitions
>in the rootnode as you need a move to be played ...

  Not if your opponent has made a move such that there's a 3 times repeated
position on the board. In that case, you can simply claim the draw.

  José C.


>Richard



This page took 0.01 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.