Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Clueless in Extension-land

Author: Robert Hyatt

Date: 18:44:30 01/10/06

Go up one level in this thread


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...




>
>  Beyond the above extensions,
>
>     Check
>     Recapture
>     Pawn on 7th rank
>     One move only in position
>     Mate Threat (e.g. value of null move is showing mate in a couple ply)
>     Botvinnik-Markoff
>     Carry-Over Extension (e.g. neither of the last two ply generated an
>      extension but their sum does, then extend)
>      -- also same for last 3 ply.
>
>  is there an important extension or method that is necessary and beneficial?
>
>I currently have all of the above extensions being 1 full ply, except mate
>threat and pawn on 7th are 0.5 (half a ply).
>
>I know there are many bugs in this such as why am I doing [ply] and [ply-1]
>and [ply-2] when the program's moves are [ply] [ply-2] and [ply-4] which
>I just saw while writing this message.
>
>I believe my extensions, being what they are, is why I can get only a
>half-decent result on my tests, and that a better-debugged extension
>implementation will reap fruit (no - not THAT kind of fruit!)
>
>Stuart



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.