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.