Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Clueless in Extension-land

Author: Stuart Cracraft

Date: 22:19:27 01/13/06

Go up one level in this thread


On January 12, 2006 at 22:45:04, Robert Hyatt wrote:

>On January 11, 2006 at 12:34:42, Stuart Cracraft wrote:
>
>>On January 10, 2006 at 21:44:30, Robert Hyatt wrote:
>>
>>>On January 10, 2006 at 16:15:53, Stuart Cracraft wrote:
>>>
>>>>Hi - my extension credit is calculated for each ply in the search
>>>>and stored in several arrays, one for each type of extension.
>>>>
>>>>The arrays for the given current ply are summed together
>>>>
>>>>  extension=0; // Prove that we must extend. We assume we don't at first.
>>>>  :
>>>>  :
>>>>  AllExt[ply]=ChkExt[ply]+RecapExt[ply]+PawnExt[ply]+OneExt[ply]+ThreatExt[ply];
>>>>  if (AllExt[ply]>=1.00) extension=1;
>>>>  else if (ply>0 && AllExt[ply-1]<1.00 && AllExt[ply-1]+AllExt[ply]>=1.00) {
>>>>    extension=1;
>>>>  }
>>>>  else if (ply>1 && AllExt[ply-1]<1.00 && AllExt[ply-2]<1.00
>>>>    && AllExt[ply-2]+AllExt[ply-1]+AllExt[ply]>=1.00) {
>>>>    extension=1;
>>>>  }
>>>>  if (BM_X != 0.0)
>>>>    if (bmx) {
>>>>      AllExt[ply]+=BM_X; extension++; bmext++;
>>>>    }
>>>>
>>>>And if extension is "1" after all of this, then we extend by 1 the
>>>>current move at the current ply known as 'ply'.
>>>>
>>>>My questions are:
>>>>
>>>>  I know that Bob Hyatt has used 0.75 as his check extension for many years
>>>>  and indicates it is a critical factor in throttling runaway check extensions.
>>>
>>>Not quite.  My "check" extension is 1.0.  My "one-legal-reply" extension is .75,
>>>as is the recapture and mate threat extensions.  But normal check is 1.0 until
>>>some ply limit is reached, at which point is is reduced to .5 to limit
>>>ridiculously deep searches.
>>>
>>>
>>>
>>>>  My problem is that since I sum as above, setting the credit for CheckExt[ply]
>>>>  (before the above code) to 0.75 would really be too little of a good thing,
>>>>  nothing in fact, since I would only extend a check if there is an additional
>>>>  consideration forcing a full extension and that is not what Bob meant.
>>>
>>>You are missing another point that is very significant.  I am not doing
>>>extensions like you.  I simply increment "depth" by the amount of the
>>>extensions, even if the total is something like .75.  That won't cause a deeper
>>>search yet, but if a later ply adds just .25 more, then suddenly the search will
>>>go one ply deeper.  It didn't appear that you are doing it that way.  My
>>>fractional extensions are carried along, ply by ply, and slowly build up until
>>>they cause another ply of depth to be searched...
>>>
>>
>>At which point you then reset the additive to zero so that it can start
>>accumulating again?
>
>
>No, it is just added to depth at each ply.  And each time I advance one ply, I
>subtract 1.0 from depth...  For my one ply search, depth starts off at something
>like 1.5 (you can look at iterate.c in crafty to see what SearchRoot() is
>actually called with, I have changed this more than once).  So even a .75
>extension will cause the search to go to 2 plies rather than one, since 1.5 +
>.75 is 2.25...  and since depth is always reduced by 1.0 for each ply, and
>sometimes gets incremented by as much as 1.0 in a single ply, the depth carries
>the extension amount along all the way until the last call to search drops depth
>below 1.0 and no extensions are done at that ply, dropping me to the q-search on
>the next ply...

Thanks - that was the level of hold-the-hand detail that I needed.

I need to change my search parameter depth to a float from an int and
implement something and test the effects.

So many changes, so little time...



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.