Author: Tord Romstad
Date: 10:34:32 09/01/04
Go up one level in this thread
On September 01, 2004 at 11:33:12, Stuart Cracraft wrote:
>On September 01, 2004 at 05:28:55, Tord Romstad wrote:
>
>>On September 01, 2004 at 05:00:32, Chris Welty wrote:
>>
>>>What is a Botvinnik-Markoff extension?
>>
>>An extension which is triggered every time the null move fails for the same
>>reason twice in a row. Whenever the null move fails low (you may want to
>>do it only when it fails low by some margin), you set ThreatMove[Ply] to
>>the move that refuted the null move. The code for the actual extension
>>is something similar to this (should be located directly after the null
>>move search in your code):
>>
>> if((null move failed low) &&
>> (ThreatMove[Ply]==ThreatMove[Ply-2] ||
>> (ThreatMove[Ply] and ThreatMove[Ply-2] captures the same piece)))
>> Extend
>
>>Tord
>
>Tord,
>
>By fail low I assume you mean that simply value from null move
>search simply didn't fail high?
In my case, "fail low" and "not fail high" are always equivalent.
My windows always have zero width (I use MTD). In a PVS search, I
would probably call the null move search with a window of (alpha, beta)
rather than (beta-1, beta), and set ThreatMove[Ply] only if the return
value of the null move search is less than alpha-margin, where margin
is some non-negative number.
>All I do for null is
>
> if (okay to do null) {
> makenullmove;
> value = null() with reduced depth
> if (value >= beta) { unmakenullmove; return(value); }
> }
> /// so I know I have to put something here, but I have no move
> /// that refutes null move search above. Do you mean that ThreatMove[...]
> /// should be set to the best move found by the reduced search at its
> /// first ply?
Exactly.
Tord
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.