Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Ttoo dull to hash correctly

Author: Georg v. Zimmermann

Date: 01:25:48 09/02/01

Go up one level in this thread


"Dull" ? :)

- You store the remaining depth. " ].nDepth >= depth " looks right. Check that
you also add the extensions to depth.
- If the hash type is a lower bound , this means that the true value can be as
low or lower. So you should check for a fail low, not "].Score >= beta". That is
wrong. Same for the upper bound.
- You are not adjusting the bounds, why ? That helps a lot.
- You should store the best move too.

If you still get wrong results, check whether the hasing itself is broken.
Create a second table with lots of #ifdef debug and different random number. See
if you get the same hits.


Good luck and have fun !

Georg

On September 01, 2001 at 19:34:40, Matthias Gemuh wrote:

>
> I am too dull to hash correctly. I have 2 depth variables in HyLogicChess:
>"depth" tells me how far I still have to go till Quiescence and "nPly" tells how
>far from Root in AlphaBeta Search.
> Which of them do I store in Hash Table? Which comparisons do I make when
>retrieving from table?
> Presently I store "depth" and retrieve as shown below, but retrieved values are
>clearly wrong.
>
>    // Retrieving data from Hash
>    if ((HashTable->HashEntry[ChessPosition->HaskKey].nChecksum ==
>ChessPosition->LockKey) && \
>            (HashTable->HashEntry[ChessPosition->HaskKey].nDepth >= depth)) {
>        switch (HashTable->HashEntry[ChessPosition->HaskKey].nScoreType) {
>
>            case HashTable->HashEntry[ChessPosition->HaskKey].exact:
>                    return(HashTable->HashEntry[ChessPosition->HaskKey].Score);
>
>            case HashTable->HashEntry[ChessPosition->HaskKey].lower_bound:
>                if (HashTable->HashEntry[ChessPosition->HaskKey].Score >= beta)
>{
>                    return(HashTable->HashEntry[ChessPosition->HaskKey].Score);
>                } else break;
>
>            case HashTable->HashEntry[ChessPosition->HaskKey].upper_bound:
>                if (HashTable->HashEntry[ChessPosition->HaskKey].Score <= alpha)
>{
>                    return(HashTable->HashEntry[ChessPosition->HaskKey].Score);
>                } else break;
>        }
>    }
>
> Regards,
> Matthias.



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.