Computer Chess Club Archives


Search

Terms

Messages

Subject: Avoiding Null Move based on Hash

Author: Stuart Cracraft

Date: 19:42:59 09/21/04


Hi -- trying to avoid doing a null move based on draft from the
hash table and R based on something some postings here from 1998.

Have a look and see if this is accurate. I tried the same flag ==
UBOUND code from the first block at (1) over at (2). Both separately showed
worse results in testing than having neither.

#ifdef TT
  // Probe hash table. If seen before with equal or greater draft, return.
  // Otherwise, set alpha and beta bounds if available.
  // Last, if alpha exceeds or equals beta, return.
  if (retrieve(&length, &score, &flag, &hashmv)) {
(1)    if (flag == UBOUND && depth-R <= length && score < beta) donull = 0;
    if (length >= sdepth) {
      if (flag == VALID) {
	if (!(flags&NOTHING)) {
          savemove(&npv[ply][ply],hashmv);
          for (j=ply+1;j<pvl[ply+1];++j) {
	    savemove(&npv[ply][j],npv[ply+1][j]);
          }
          pvl[ply]=pvl[ply+1];
	}
        return(score);
      }
      if (flag == LBOUND) alpha = MAX(alpha, score);
      if (flag == UBOUND) {
(2)      if (depth-R <= length && score < beta) donull = 0;
         beta = MIN(beta, score);
      }
      if (alpha >= beta) return(score);
      if (legalmove2(bd,hashmv)) hashed = 1;
    }
  }
#endif



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.