Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Using too-shallow mate scores from the hash table

Author: Russ Garratt

Date: 14:16:10 07/08/98

Go up one level in this thread



On July 07, 1998 at 19:59:04, Robert Hyatt wrote:

>On July 07, 1998 at 10:24:47, Don Dailey wrote:
>
>>On July 06, 1998 at 13:04:17, Robert Hyatt wrote:
>>
>>>On July 05, 1998 at 14:14:36, Ernst A. Heinz wrote:
>>>
>>>>On July 05, 1998 at 03:18:22, David Eppstein wrote:
>>>>
>>>>>I found a new idea to add to my program yesterday...one of those
>>>>>shouldn't-ever-hurt, could make a minor improvement ones.  Maybe it's only new
>>>>>to me, but I didn't see it in a quick look thru the Crafty sources. If it helps
>>>>>at all, it would only be in tactical positions where a lot of large subtrees
>>>>>have mate scores.
>>>>>
>>>>>My eval has the property that it doesn't ever return a mate score unless it's
>>>>>really mate (doesn't everyone's? actually it plays a different game than chess
>>>>>and winning isn't called "mate" but who cares.)  So mate scores are special,
>>>>>they might not be exact due to search extensions but they're always lower bounds
>>>>>on the true score.
>>>>>
>>>>>The new idea is, when I find a mate, save the position in the hash table, and
>>>>>look it up again later (say in the next round of iterated deepening), if the
>>>>>hashed mate score is greater than beta, I use it even when the hashed draft is
>>>>>less than the depth I'm currently searching.  The new deeper search would have
>>>>>found at least as good a score anyway, so you can just cut it off earlier and
>>>>>save time. Same when eval is negative mate and is less than alpha.
>>>>>
>>>>>Stupid huh?
>>>>
>>>>No, not stupid at all -- just obvious and straightforward. I have used it
>>>>with good success in "DarkThought" for a long time. :-)
>>>>
>>>>Moreover, I increase the draft of *exact* mate scores by 1 ply which
>>>>definitely saves some nodes in many positions.
>>>>
>>>>=Ernst=
>>>
>>>In Cray Blitz (and in crafty, unless I have broken it) I store mates with a
>>>"draft" of infinity, because a mate is independent of any draft, and is *always*
>>>correct.
>>>
>>>I don't see why you'd do any different, unless one were to somehow be suspicious
>>>of their mate scores.  When I store a mate score, I do adjust it to be relative
>>>to the current ply, but that's all...
>>
>>
>>This is how we do it in Cilkchess.  This is one Chris Joerg came up with,
>>I had never thought too much about it.  It turns out not to be a noticable
>>improvement but it is just common sense.
>>
>>We also "massage" our mate scores to be always correct.  If it's mate in
>>5 in the hash table it's mate in 5 from that exact position.  We had to
>>"fix" this when we stopped clearing our hash tables between moves and
>>also the parallelism seems to increase the strange anomolies from not
>>doing this correctly.
>>
>>- Don
>
>
>I'm not sure I understand your last paragraph.  A hash entry is an absolute
>position.  And from that position it is mate in N whether it occurs at the root,
>or at a tip, which means whether you clear hash scores or not (I do on rare
>occasions although I don't destroy the best move) mate scores should be good
>across iterations *and* searches, if you store them as mate in N from *here*
>rather than mate in N from "somewhere back there"...

There is another option:-) when generating a mate score subtract from it the
current movenumber. That is the movenumber which would occur over the board.
Store that in the hash table - larger scores would be preferred as they occur
sooner, *however* they're recalled. I also store a flag to stop further
searching when hash table recalls one of these. That way they can be used by any
iteration. Works fine in "The Swindler" Hope this helps. Russ.



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.