Computer Chess Club Archives




Subject: Re: MTD: an observation and a question

Author: martin fierz

Date: 15:30:07 09/12/02

Go up one level in this thread

On September 12, 2002 at 16:50:38, Dieter Buerssner wrote:

>On September 12, 2002 at 16:10:38, martin fierz wrote:
>>bestvalue = -mate;
>>for all moves do
>>  {
>>  value = -search(-beta,-alpha,etc);
>>  bestvalue = max(value, bestvalue);
>   alpha = max(value, alpha);
>>  if(value>beta)
>>     break;
>>  }
>>return bestvalue;
>>is there anything wrong with this?
>Pehaps you left it out on purpose - but this code snipped is missing an update
>of alpha. For example at the place, I suggested above.

hi dieter,

you are right, i left it out, half on purpose i guess. it just seemed irrelevant
to the return value. but it's in my code - although it's really unnecessary: in
MTD you always fail, so you never have to update alpha. but i have a compile
switch to go from a windowed search to MTD, and i never bothered to write an
MTD-only negamax function, although i could save an if or two there :-)

>I see the same problem as you. Even when using strict fail soft search (I also
>consider other points mentioned in this thread, like lazy eval), I typically
>(but not allways) get back a score of X+1 for search, that fails high in the
>window X, X+1. I think, your suggestions "alpha-beta tries to do the least work"
>explains this. With a deep depth, and a complicated search tree, the X+1 score
>will be easiest to prove and most probably be proven first.

i just made some more tests in positions where the score really swings much
(equivalent to winning a pawn in chess) and now i have seen jumps of more than
the eval grain, although only 2 or 3* eval grain, like the (0.00,0.01) search
returns 0.03. but most of the time it jumps as little as possible.



This page took 0.02 seconds to execute

Last modified: Thu, 07 Jul 11 08:48:38 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.