Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: annoying en passant x-ray

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.