Author: Robert Hyatt
Date: 08:16:31 01/16/99
Go up one level in this thread
On January 15, 1999 at 14:21:16, GBes wrote:
>Hi all,
>
>a month ago i start writing a chessprogram.
>The part of the program that generates moves ( with bitboards )
>works fine, also the hashtable seems to work.
>
>The evaluation function returns simply (-MATE + ply) or 0;
>
>For the alpha/beta search i have trouble with keeping track
>of the principal variation.
>
>After doing a HashProbe that returns EXACT, i have a BestMove and its Score
>from the hashtable.
>What i don't have is the sequence of moves that comes after this BestMove.
>This okay if BestMove is not part of the PV after all (IMHO)
>but if it is then i only have a first part of the PV, and i want more...
you have two choices: Either cut the PV 'short' at this point, or call a
function that makes _all of the moves at the current (no move) ply and do
a hash probe after each. If you get a hit with a best move, add it to your
PV, make that move, and repeat. You can often recover quite a few more moves
this way.
>
>so my question is :
>
>"How to keep track of the principal variation when using results from the
>hashtable ?"
>
>Hope someone can shine some light over this
>
>thanks a lot gerritbes.
>
>
>this is how i am doing it now :
>
>int ABSearch( alpha, beta, depth, ply )
>{
> if ( depth == 0 ) return Evaluate();
>
> switch ( HashProbe( hashKey, depth, ply, *lHashScore, *lHashMove ) )
> {
> case EXACT:
> if ( alpha < lHashScore < beta )
> {
> // could return lHashScore here
> // but then don't have the PV ?????
> // so... continue
> }
> else
> {
> return lHashScore;
> }
> break;
> }
>
> while ( lMoreMove )
> {
> // calls to ABSearch...
> }
>
> // update PV if a move was found in while loop
> if ( initial_alpha < alpha < beta )
> {
> PV_Moves[ply][0] = lBestMove_found_in_while_loop;
> PV_Moves[ply][1...] = PV_Moves[ply+1][0...];
> PV_Moves[ply+1].Empty();
>
> // also store here this position with type = EXACT in hashtable
>
> }
> else
> {
> // PV_Moves[ply] is empty
> // or contains MoveSequence that leads to score alpha (IMHO)
> }
>
> return alpha;
>}
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.