Author: Uri Blass
Date: 13:51:02 12/01/03
Go up one level in this thread
On December 01, 2003 at 13:37:16, Tord Romstad wrote: >On December 01, 2003 at 09:25:59, Uri Blass wrote: > >>On December 01, 2003 at 08:12:38, Tord Romstad wrote: >> >>>On December 01, 2003 at 07:36:06, Uri Blass wrote: >>> >>>>Another thing that is still not implemented is internal iterative deepening. >>>>I understand the idea but I still did not think exactly how to implement it >>>>and after reading a post that suggested that it did not help much I decided to >>>>look for other ideas. >>> >>>I found it to be surprisingly effective in Gothmog, despite my extremely >>>simple implementation. I just added the following three lines of code, >>>just before the call to generate_moves() in my main search() function: >>> >>> if(EngineOptions.iid && h==NULL && value>gamma-100 && depth>=5*PLY) { >>> search(gamma, depth-PLY); >>> h = get_hash(Stack[Counter].hashkey); } >>> >>>EngineOptions.iid is a variable telling whether internal iterative >>>deepening is enabled, h is a pointer to a hash table entry, value >>>is the static eval for the position, and gamma is my search bound. >>> >>>Tord >> >>It is possible that simple implementation can also help me. >>There was nothing that I tried about it lately and I do not remember exactly >>what I tried a long time ago that did not help. >> >>I do not know what Counter means in your program but I guess that it is the same >>for me as calling probehash that calculates the bestmove from the hash tables so >>I should search to reduced depth only if probehash fails to find a bestmove and >>some other conditions happen(like static evaluation that suggest good chances to >>find something at reduced depth) and after it call probehash again. > >Almost, but not quite. Game[Counter].hashkey contains the hash key of >the current position. After the call to search(), I simply look up >this key in the hash table with the call to get_hash(). get_hash() >returns a pointer to a hash table entry, or NULL. If this pointer is >non-NULL, the best move slot in the hash table entry is tried first >in the move ordering. > >Tord I can only say that for me things are more complex. My program crushed when I tried to implement it and only now I understand why. It got into an infinite loop. The problem is that the equivalent to search(gamma, depth-PLY)(I have alphabeta and not gamma) starts by calculating the extensions and if the extensions are one ply then I need again to calculate it so it gets into infinite loop and finally crush. Uri
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.