Author: Robert Hyatt
Date: 07:30:19 01/14/06
Go up one level in this thread
On January 14, 2006 at 01:19:27, Stuart Cracraft wrote:
>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...
I would not use a float. Use an int, where a ply = 60 or some such number. I
chose 60 so that I can extend by 1/4 (15), 1/3 (20), 1/2 (30), 2/3 (40), 3/4
(45) and 1 (60). Then I decrement by 60 rather than 1, and everything works
just fine...
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.