Author: Tony Werten
Date: 04:49:49 12/07/00
Go up one level in this thread
On December 06, 2000 at 14:25:19, Scott Gasch wrote: >Hi all, > >My hashing code is working very well since I've been looking at it carefully and >finding bugs. Thanks for your help and comments. > >I am still unclear on one issue, though. Many people have said "store the >remaining depth in the draft of a hash entry." What happens if I make a move, >say "aha, this was a threatoning pawn push, extend by 1 ply!" then call search >recursively. This returns a fail high (beta cutoff). > >Now I am about to store a lower bound in my hash... this position is worth at >least X, maybe more. Do I store this with a draft of depth or depth + extend? >I think depth + extend -- after all I got the score from a depth + extend call >to search... the remaining depth for this position was depth + extend? Some >people have said "make sure you don't store extend values in your hash table or >you will have bugs" and I don't understand this. Depending on your code it might give a problem. ( As I understood from Bob, in Crafty this is solved a different way ) In my engine, I come in "analyze", I decide on extensions, I call "hashtable" and if draft is sufficient I quit. If not, I call "nullmove" and here is where the problems can start. If "nullmove" gives me a checkmatish score I extend 1 ply ( threat extension ). Problem: I search 8 ply, no normal extension, no hashcuttoff then a nullmoveextension. I continue search to 9 ply, decide extensions (none), hashtable lookup, draft is good. Why ? Because it got an extension last iteration, but at this point I don't know I will get a nullmove extension because I haven't tried it yet. I solve this by simple setting a boolean in the hashtable ( ie got a threat extension last time ) and in this case reduce draft by one. Tony > >If I was about to store an exact or upper bound in the hash table after >searching all N moves in this position I would store with a draft of depth >_unless_ every move was searched with an extend of 1 ply. This is the case in >my code when the side on move is in check... so in this case I would store depth >+ extend again. > >Maybe I'm loony or don't fully understand this stuff. But the way I see it is >that I have a score X from an expensive recursive call(s) to search... and I >want to save this score for later. If I every one of my 1..N calls to search >used to generate X was made with a depth of depth + extend I store this as the >draft. > >Later if someone comes in and says I need a score of the same position to depth >+ 1 it should be OK to give them the same score computed above... because of the >extend above I did end up computing score X to depth + 1 already... > >Do I misunderstand some negative aspect of this plan? > >As always, much appreciate the help. >Scott
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.