Computer Chess Club Archives


Search

Terms

Messages

Subject: Another funky hash problem

Author: James Robertson

Date: 19:02:33 08/24/99


I was looking at my code and noticed that I never get any cutoffs when there is
no available hash move. I modifed my code a little, and it sped up, but then I
noticed tactical problems; on a certain test position it never finds a fairly
obvious move. Anyway, here is my hash code in my search function.

The third line checks to see if the hash move is legal. Since an UPPER flagged
position may occassionally have no move, the 'blank move' is considered illegal
and it skips any chance of a cutoff. I changed line 3 to
if (!hr.move || board.IsLegal(hr.move)) {
and got the problems I mentioned above. Can anyone help me with this?

Thanks,
James

  HashRec hr;
  if (!hash_move[ply] && hash_table.Probe(&board, &hr)) {
    if (board.IsLegal(hr.move)) {
      // Adjust mate score.
      if (hr.score > MATE>>1) hr.score -= ply-1;
      else if (hr.score < -MATE>>1) hr.score += ply-1;
      if (hr.draft >= depth) {
	if (hr.flags & EXACT) {
	  return hr.score;
	} else if (hr.flags & UPPER) {
	  if (hr.score <= alpha) return hr.score;
	} else if (hr.flags & LOWER) {
	  if (hr.score >= beta) return hr.score;
	}
      }
      hash_move[ply] = hr.move;
    }
  }





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.