Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: MTD(F) results

Author: Anthony Cozzie

Date: 13:41:10 12/17/03

Go up one level in this thread


On December 17, 2003 at 15:03:53, Rudolf Huber wrote:

>On December 17, 2003 at 10:23:20, Anthony Cozzie wrote:
>
>>On December 17, 2003 at 09:49:12, Andrew Williams wrote:
>>
>>>On December 17, 2003 at 07:48:55, Anthony Cozzie wrote:
>>>
>>>>On December 17, 2003 at 02:12:08, Andrew Williams wrote:
>>>>
>>>>>On December 16, 2003 at 21:22:56, Anthony Cozzie wrote:
>>>>>
>>>>>>Recently I experimented with adding MTD(F) into Zappa.  It has been an
>>>>>>interesting experiment, but I am going back to PVS().
>>>>>>
>>>>>>I thought that since Zappa has a [UL,LL] paired transposition table and an
>>>>>>evaluation granularity of only 1/100 of a pawn, MTD(f) would work quite well,
>>>>>>but that does not seem to be the case.  The MTD(f) version of Zappa does
>>>>>>slightly better on test suites (113/183 @ecmgcp v 106 @ 10s/move) but in the
>>>>>>positional test suites it averaged about 3/4 of a ply less than the PVS()
>>>>>>version.  My guess is that because MTD(F) tries all moves, some of the
>>>>>>"ridiculously losing captures" ordered near the end by PVS() are tried earlier,
>>>>>>which accounts for the increased test suite performance.
>>>>>>
>>>>>
>>>>>I don't understand the last part of this paragraph. Why would "ridiculously
>>>>>losing captures" be tried earlier (than what?) in MTD?
>>>>>
>>>>>>If anyone has any suggestions, I'm keeping the MTD(F) code in Zappa (just turned
>>>>>>off) and I'm willing to try anything.
>>>>>>
>>>>>>anthony
>>>>>
>>>>>Andrew
>>>>
>>>>
>>>>In most test suites the winning move is evaluated as losing by the SEE.  So in
>>>>PVS() it gets tried last.  In MTD(f) it goes through all the moves every time.
>>>>
>>>>anthony
>>>
>>>Sorry, I still don't understand? I would have thought that move ordering would
>>>be pretty much identical for both methods? Am I missing something?
>>>
>>>My engine is MTD(f) but if I were to convert it to PVS I think it would still
>>>try all the moves in the same order, all things being equal. You should look at
>>>Tord's message as he has some very good advice in there. The convergence
>>>accelerator thing is *very* important.
>>>
>>>Andrew
>>
>>Suppose there are 3 moves, A, B, C.
>>
>>C is a losing capture according to see, so it is tried last.  So in PVS(), we
>>get:
>>
>>A B C++ <- c fails high
>>C A B
>>
>>in mtd(F) we get
>>
>>A B C
>>A B C++
>>C A B
>>C A B
>>C A B
>>C A B
>>
>>in other words, it figures out that the score is higher very rapidly, and plays
>>move C relatively earlier.
>>
>>anthony
>
>Ah, finally an interesting topic.
>My mtdf(f) engine searches the moves in the following order:

glad to be of service.

>A B C++
>C++
>C++
>C++
>C++
>C D E F++
>F++
>F++
>F G H I J ...Z
>--> F played
>
>or (no fail high during first pass)
>
>A B C ... Z
>A B C ... Z
>A B C ... Z
>A B C ... Z
>A B C ... Z
>A B C ... Z
>A B C++
>--> C played
>
>(moves witout "++" are really "--" i.e. fail low moves)
>
>
>Rudolf

It just occurred to me that rather than using a binary search, I should do what
you do and always try to go up.  That way i always have to search only one move.

now I just have to think about on how to do this :)

anthony



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.