Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Question about Gerbil

Author: Robert Hyatt

Date: 21:00:20 07/11/01

Go up one level in this thread


On July 11, 2001 at 19:14:57, Bruce Moreland wrote:

>On July 11, 2001 at 18:57:02, Dann Corbit wrote:
>
>>On July 11, 2001 at 18:52:10, Bruce Moreland wrote:
>>
>>>On July 11, 2001 at 16:56:49, Artem Pyatakov wrote:
>>>
>>>>Thanks for the reply. Wow, that does sound like a really good solution to the
>>>>problem... One last question, even with your explanation of what Gerbil is
>>>>doing, I am still not good enough to find where he is actually hashing the
>>>>"useful" en passant squares.
>>>>
>>>>Could you or Bruce point me to where this hashing of EP squares is actually
>>>>done?
>>>>
>>>>Artem Pyatakov
>>>
>>>It's not.  I completely ignored the problem.
>>>
>>>The next version hashes in en-passant and castling for purposes of detecting 3x
>>>repetition, but other than that it doesn't do anything with castling or
>>>en-passant yet.
>>
>>I must misunderstand your code then, because in makemove, I can see you dealing
>>with the e.p. status flag.
>
>There are two things I have to deal with.  One is executing the en-passant
>capture, and the other is setting up the next ply if someone just played e2-e4.
>
>The current code just checks to see if there is a black pawn on d4 or f4 before
>setting the en-passant square to e3.
>
>The reason I do it like that is that's what I do in Ferret.
>
>Actually it's probably okay to dummy-check it in makemove (like I do).  If I
>dummy check it in hash table probe/store, that's twice I have to deal with it.
>
>But perhaps that's the right place to XOR in the en-passant and castling hash
>crap.
>
>Maybe I'm on drugs.
>
>But Gerbil doesn't change the hash key based upon en-passant square or castling
>flags now (and neither does Ferret).
>
>Ferret handles it when it's doing opening book stuff (which uses the hash key)
>and 3x repetition checking, and Gerbil will in the next release.
>
>bruce

I update this in MakeMove().  When I enter MakeMove() I copy EPTarget to ply+1.
If it is non-zero, this means that at this ply I could have made an EP capture,
and no matter whether I did or not, I need to clear this EP target, _and_ update
the hash signature by removing the EP[target] random number.

This keeps my hash signature right for all cases, so that I can use it to hash,
to recognize repetitions, etc...

And it costs essentially nothing in terms of performance...
.



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.