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 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.