Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: MTD(f) Problems

Author: Pat King

Date: 08:01:05 04/12/02

Go up one level in this thread


On April 10, 2002 at 18:51:20, Oren Avraham wrote:

>I've Implemented MTD(f) but it behaives starangely:
>only the Alpha Beta returns about -400
>white MTD(f) returns in it's first iteration -80
>and in the second one the same result (-80)
>consequently the search is stopped due to lowerbound >= upperbound condition.
>what can cause this bug ? (also when TT is off)
>did anyone see something familiar before ?
>
>thank you in advance, Oren Avraham.

A "gotcha" I encountered that resulted in similar behaviour arose from being off
by 1 in passing the min window search parameters.

int AB(int A,int B,int D)
{
  // ...
  Score = -AB(-B,1-B,D-1);
  // NOT Score = -AB(-B-1,-B,D-1);
  // ...
}

If you built MTD on top of a working AB, then you probably didn't fall for this,
but since I knew I'd be using MTD, I was "smart" and didn't bother passing
alpha. That is, my search looks like

int AB(int B, int D);

and the recursive call

Score = -AB(1-B,D-1); // NOT -AB(-B,D-1);

I came to think of this as the "jiggle" problem. If you don't jiggle the value
of B a little, then both white and black searches fail high prematurely. On the
plus side, MTD appeared to be using VERY few nodes. Once things were working
correctly, there was almost no difference in nodes searched between PVS and MTD.

Pat



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.