Author: Robert Hyatt
Date: 08:16:10 11/30/01
Go up one level in this thread
On November 30, 2001 at 09:02:38, Erik Robertsson wrote: >On November 30, 2001 at 08:48:20, Odd Gunnar Malin wrote: > >>On November 30, 2001 at 07:25:42, Erik Robertsson wrote: >> >>>I´ve been trying to correct some bugs wich occur when storing mate values in the >>>hashtable. >>> >>>If the position is evaluated as a mate value at the end of an iteration in the >>>iterative deepening, I stop searching and execute the best move. In some >>>positions however, I find that due to finding positions in the hashtable it can >>>result in the engine alternating between two different mate variations ending in >>>a quite embarrassing draw by repetiton. >>> >>>I've tried to solve this by not automatically stop the iterative deepening >>>unless I've found a shorter mate than found in the previous move. Is there a >>>better way of solving this? I remember reading something about this some year >>>ago, but cannot find it. >>> >>>I use the draft = *infinity* for mates wich are not bounds which should result >>>in that most positions with mate should be in the ht in the next search. Maybe >>>it has something to do with the bounds, but I´ve tried Crafty's MATE-300 bound >>>and it sometimes result in getting the evaluation of the position as MATE-300. >>> >>>This has kept me awake a few nights, please help or I will go insane. >> >> >>I guess you allready do this when saving hash: >> >>if (bestscore>(MATE-MAX_PLY)) >> hashscore=bestscore+ply; >>else if (bestscore<(-MATE+MAX_PLY)) >> hashscore=bestscore-ply; >>else >> hashscore=bestscore; >> >>And the opposite when you reading hash: >> >>if (hashscore>(MATE-MAX_PLY)) >> bestscore=hashscore-ply; >>else if (hashscore<(-MATE+MAX_PLY)) >> bestscore=hashscore+ply; >>else >> bestscore=hashscore; > >This I do. > >> >>If you use fail-soft alpha-beta it could be the same error that I had in my >>little engine. >>I was returning alpha instead of bestscore in one of my cutoff. >> >>Odd Gunnar > >I don't think so, since I return best score in my cutoffs. I'm guessing it has >to do with storing mate as bounds, so I tried to not doing this, and it seems to >work fine. However, in doing I guess I throw away information that can be useful >and reduce the size of the search tree? > >Erik One warning... there are two kinds of mate scores you store in the hash table. absolute mate scores, and search bounds that happen to be mate scores. I do _not_ adjust bounds if they are mate scores. This can cause some search instabilities I ran into years ago. IE if you are storing a position marked as UPPER or LOWER, then store the actual bound, do not adjust it. If you are storing a position marked as EXACT, adjust it if it is a mate score.
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.