Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Matevalues, hashtables and iterative deepening

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.