Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: MTD(f)

Author: Stuart Cracraft

Date: 09:08:17 07/28/04

Go up one level in this thread


On July 28, 2004 at 09:04:16, Peter Alloysius wrote:

>
>>>>I visited Aske Plaat's site and slapped MTD(f) into my
>>>>program, keeping the existing PVS/NEGASCOUNT in lieu of implementing
>>>>his AlphaBetaWithMemory(). This is perfectly okay according to Aske.
>>>>
>>>
>>>you should implement his AlphaBetaWithMemory(), or your program will take
>>>9999999 iterations to find mate value. If value found by alphabeta is above beta
>>>or below alpha, return that real value, not the alpha/beta.
>>
>>Exactly. And things do look somewhat better with the return alpha/beta
>>vs. return value under conditional compilation.
>>
>>As the other author has pointed out, instabilities still abound with
>>the current implementation and it is no where near PVSNEGASCOUT in
>>performance nor reliability in its early form, obviously.
>>
>>But good call and a good laugh.
>
>I think that Plaat's AlphaBetaWithMemory() is somewhat what we called fail-soft
>ab, right? (if i don't mistaken it, i'm still confused with those terms)
>
>with that, my mtd(f) engine *always* need only two iterations to find mate
>value, one to get upperbound and another to get lowerbound.
>
>So, if you need hundred iteration to find mate value, then your search() surely
>return alpha/beta instead of true value (in this case is mate value). Return
>that true value and no need to worry about accelerator or instability in your
>case. CMIIW

Yes -- that was the first change I made, made PVS/NEGASCOUT conditionally
compile in exact value returns if MTD(f) search is being used as caller
of PVS/NEGASCOUT, otherwise return the alpha's and betas.

That plus the 1,2,4,8,16... 16,8,4,2,1 for changes to the beta window.

After the above two changes plus a limit on the number of iterations without
convegence and the MTD(f) implementation is at parity with the PVS/NEGASCOUT
on a short 30-problem test. Both solve 90%.

Note: this implementation of MTD(f) calls the existing well-debugged
PVS/NEGASCOUT and I believe all my hashing is mostly bug-free.

Still looking for other things and will try ETC in MTD(f) next. It didn't
help me with PVS/NEGASCOUT. There's another thread about that recently
started with a question about ETC before I go in and grab the old ETC
code.

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.