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.