Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: annoying en passant x-ray

Author: Uri Blass

Date: 15:05:48 12/01/03

Go up one level in this thread


On December 01, 2003 at 16:51:02, Uri Blass wrote:

>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

There is a simple solution for that problem and it is to remember the initial
depth at the start of my alpha beta and I may try it later.

Another solution is to calculate the extensions before alpha beta but I do not
see a big advantage of it(it may save some time for not having to calculate the
extensions twice in case of  internal iterative deepening but I do not think
that it changes much).

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.