Author: Robert Hyatt
Date: 20:26:34 12/05/01
Go up one level in this thread
On December 05, 2001 at 15:10:59, David Rasmussen wrote: >On December 05, 2001 at 14:05:12, Robert Hyatt wrote: > >>On December 05, 2001 at 03:24:29, David Rasmussen wrote: >> >>>You don't seem to want to comment on the pawn hash collisions in Crafty, that I >>>have mentioned. Is that because they don't matter or because you don't believe >>>my experiment and think I have a bug? >>> >>>/David >> >> >>I commented once. I have tested this in the past and didn't find any problem >>worth considering. That isn't to say there isn't a collision problem, but I >>didn't encounter one when I tested (I did the same test that I did for the >>32 vs 64 bit hash signature, by storing the 32 bit pawn hash signature along >>with a full 32-byte board representation, and when the pawn hash matched and >>the full board did not, I reported errors.) I didn't find enough errors to >>be concerned. Certainly not your 300+ in a single search. I don't recall >>getting more than a couple in a complete game when I tested. >> >>I could run it again if you are interested as I didn't save all the results, >>since it was done a _long_ while back. I used to do 64 bit pawn hash signatures >>too until someone (Bruce I think) mentioned he used 32 bits there and I thought >>I would give it a try... > >Please run it again :) >If it was a long time ago, maybe faster computers or something makes the >difference? I don't know. All I know is that it is not difficult at all to make >my experiment, and on the other hand it is hard to make errors implementing it. >So if that is what your suggesting is the case here, I really don't think so. > >All I do, is in EvaluatePawns(), instead of returning on a table hit, I remember >the entry from the table, that would have been returned (I know the score is >returned, but...), and do the pawn calculations anyway. At the end of the >function, I check if the calculated values of allw, allb, passed_w, passed_b are >the same as the ones we would have returned from the table. If not, we have a >collision. To be ekstra sure, I have tried to print out selected positions that >collide. To give you an example: > > +---+---+---+---+---+---+---+---+ > 8 | *R| *N| *B| *Q| *K| *B| *N| *R| > +---+---+---+---+---+---+---+---+ > 7 | *P| *P| *P| *P| | *P| *P| *P| > +---+---+---+---+---+---+---+---+ > 6 | | | | | | | | | > +---+---+---+---+---+---+---+---+ > 5 | | | | *P| P | | | | > +---+---+---+---+---+---+---+---+ > 4 | | | | | | | | | > +---+---+---+---+---+---+---+---+ > 3 | | | | | | | | | > +---+---+---+---+---+---+---+---+ > 2 | P | P | P | | | P | P | P | > +---+---+---+---+---+---+---+---+ > 1 | R | N | B | Q | K | B | N | R | > +---+---+---+---+---+---+---+---+ > a b c d e f g h > >PawnHashKey == 1666863077 > > +---+---+---+---+---+---+---+---+ > 8 | *R| | | *Q| *K| *B| | *R| > +---+---+---+---+---+---+---+---+ > 7 | *P| *P| *P| | | *P| *P| *P| > +---+---+---+---+---+---+---+---+ > 6 | | | *N| | | *P| | | > +---+---+---+---+---+---+---+---+ > 5 | | | | | | | | | > +---+---+---+---+---+---+---+---+ > 4 | | | | | P | | | | > +---+---+---+---+---+---+---+---+ > 3 | | | | | | | | P | > +---+---+---+---+---+---+---+---+ > 2 | P | P | P | P | | P | | P | > +---+---+---+---+---+---+---+---+ > 1 | R | | B | Q | K | B | | R | > +---+---+---+---+---+---+---+---+ > a b c d e f g h > >PawnHashKey == 1666863077 > >You can try these positions yourself if you want to. These two came with the >first 1.5 second. > >These pawnstructures aren't exactly the same. And I have done this for the first >many collisions. _All_ of them _are_ real collisions. So I really can't see what >you think is wrong with this experiment. It is pretty simple: For the second of >the two positions above, the entry from the first position is returned, and that >must misevaluation problems. Not only with the pawns themselves, but also with >2nd order evaluation that depends on pawns (rooks on open files etc.) > >/David I have tested your way several times to catch errors in the pawn scoring. I have never seen any reported errors, which would be the evidence of a problem. I will certainly run the test some later to see what happens. Are you _sure_ your Zobrist random numbers are good?
This page took 0.01 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.