Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Matevalues, hashtables and iterative deepening

Author: Frank Phillips

Date: 15:57:14 11/30/01

Go up one level in this thread


On November 30, 2001 at 18:17:28, Erik Robertsson wrote:

>On November 30, 2001 at 13:16:12, Frank Phillips 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.
>>
>>Do not know if this will help.  Here is what I do following a discussion here
>>some time ago.
>>This comment is from my StoreHash() function to remind me.
>>
>>I also use your trick of not bailing out of the search unless the mate score is
>>higher than that from the previous iteration.
>>
>>Frank
>>
>>
>>
>>*	To avoid potential problems with EXACT MATE values, Bruce Moreland
>>*	suggests converting them to LOWER_BOUNDS and:
>>*		    MATE in N		>=	 MATE in 300
>>*		   -MATE in N		>=	-MATE in 300
>>*		>=  MATE in N		>=	 MATE in 300
>>*		<= -MATE in N		<=	-MATE in 300
>>*		<=  MATE in N		not stored (Bruce Moreland).
>>*		>= -MATE in N		not stored (Bruce Moreland).
>
>When i only store exact mate values it seems to work just fine. Maybe I'll try
>not to store <= MATE in N and >= -MATE in N since these bounds don't improve
>much on infinity.

I simply store exact_value mate values as bounds.  This may be less inefficient,
but avoids the need to modify the hash entry for the fact that the position you
are probing may have been reached by a different sequence of moves (path) than
when it was stored and therefore be a different distance from the root.  Not
sure it makes much practical impact at this stage of the game, but Bob or Bruce
may know better.

Frank



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.