Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: MTD(f)

Author: Vasik Rajlich

Date: 11:15:31 06/18/05

Go up one level in this thread


On June 18, 2005 at 12:25:00, Dieter Buerssner wrote:

>Hi Vaskik,
>
>one example, what can go wrong for fail soft.
>
>int qsearch(int alpha, int beta)
>{
>  /* Fail soft version - extremly simplified */
>  int best, score;
>  best = eval();
>  if (best > alpha)
>  {
>    if (best >= beta)
>      return best;
>    alpha = best;
>  }
>  for (all captures)
>  {
>    if (value of captured piece + margin < alpha)
>      continue; /* Futile to try this move */

     if (eval () + value of captured piece + margin < alpha)
     {
       best = eval () + value of captured piece + margin;
       continue;
     }

FYI - I caught this at the first pass, but of course the warning (and theme)
didn't hurt :)

>    makemove();
>    score = -qsearch(-beta, -alpha)
>    unmakemove();
>    if (score > best)
>    {
>      best = score;
>      if (best > alpha)
>      {
>        if (best >= beta)
>          return best;
>        alpha = best;
>      }
>    }
>  }
>  return best;
>}
>
>Do you spot the error immediately? To fix it, you'll need to add more lines of
>code. If you forget to fix this problem, you probably won't see it easily
>by inspecting the output of the program.
>
>One has to add code to absearch and qsearch. When you do lazy eval, add score
>there, too. In all places, similar things than above can happen here and there,
>so one has to check very carefully.
>

For what it's worth, if you used the above code in an MTD (f) search, you would
notice it quickly - it would lead to serious blunders. In a PVS search, though,
you might not catch it.

Although I guess yes - just returning alpha is a bit easier. :)

>I am not sure, we agree about the move ordering reasoning in fail-soft vs. fail
>hard. But I certainly do not think, that move ordering will be significantly
>better. I think, it has the potential for better move ordering. May well be,
>that it gets worse in reality. If for example, it for some reason (which I would
>not know) sort moves in an order, where moves that need huger trees earlier, and
>those moves still would not help to get a cutoff. As you pointed out, we
>typically get scores at the bounds anyway.
>

As far as I can see, fail-soft affects FL HT moves but not FH HT moves.

Also, as far as I can see, all of these effects of fail soft are pretty small
compared to doing re-searches.

There are a number of things which tend to kill the softness of fail-soft
scores:

1) lazy eval
2) early cutoffs in q-search
3) null move
4) bad fail-high moves

Each of these is a sort of ultra-laziness of the search.

If you could find some way to manage & control this, even at the cost of a few
nodes, MTD (f) would be really nice I think. There might even be some other uses
for really good fail-soft scores.

Regards,
Vas

>Cheers,
>Dieter



This page took 0.01 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.