Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: WAC 141 blowup

Author: Stuart Cracraft

Date: 07:17:55 09/02/04

Go up one level in this thread


On September 01, 2004 at 13:34:32, Tord Romstad wrote:

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

I am not sure I understand. So,

search(depth,ply,alpha,beta)
{
:
:
#define BOTVINNIK-MARKOFF
#ifdef BOTVINNIK-MARKOFF
#define MARGIN TwoPawns
#define R 2
if (donullmove)
  value = -search(depth-R-1,0,alpha,beta)
  if (value < alpha-MARGIN)
    if (ThreatMove[Ply]==ThreatMove[Ply-2] ||
       (ThreatMove[Ply] and ThreatMove[Ply-2] captures the same piece)
       Extend
#endif
:
traditional PVS search here, save best move found during search
in ThreatMove[ply]
:
}

Is that it? And in search() I am to save the best move in ThreatMove[ply]
at all times if the ply being searched is the original one upon entry
to the routine (i.e. 0)?

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.