Hi all,
I'm sorry that I didn't keep you up-to-date for a long time (over a week), but
I've been busy implementing an exciting new feature which I've called "depth-
dependent moves' order". If until now we had a constant moves order (specified
with the -to / --tests-order flag), now it can be a function of the depth.
Reading from the new USAGE.txt:
[quote]
-dto [Min Depth],[Tests' Order] , --depth-tests-order [Min Depth],[Tests'
Order]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Sets the Tests' order starting from the minimal depth onwards. This way, if
a Soft-DFS scan recurses deeply into the game, it will use a different tests'
order.
Note that if you set the tests' order of a minimal depth of say 50, then it
will override all the tests' order of 50 and above. As a result, it is
recommended that you set the minimal depth tests order in an increasing
depth.
It should be noted that the +-to+ or +--tests-order+ option above is
equivalent to using this option with a minimal depth of 0.
Here are some examples:
---------------------
-to 0123456789 -dto 30,0138924567
---------------------
This sets the tests' order to +0123456789+ for all depths below 30 and to
+0138924567+ for all depths above it.
---------------------
-to 0123457 -dto 10,750123 -dto 25,710235
---------------------
This sets the tests' order to +0123457+ for depths -9 (those below 10),
to +750123+ for depths 10-24, and to +710235+ for the depths 25 onwards.
[/quote]
I worked on this feature in the following branch:
http://svn.berlios.de/svnroot/repos/fc-solve/branches/add-depth-dependent-
moves-order/
(short URL :
http://xrl.us/bhpkyj ).
It involved several commits most of them passing all tests. Eventually, I had
something working (though later found some bugs in it) and was able to proceed
with my plans of finding an optimal scan with two depth-dependent tests
orders. This was done by writing a C program that iterated over the various
edges between the two scans (from 0 to 99) and dumped their relative
performance for the #1-#2,000 sample of the Windows FreeCell boards.
I got the following good scans this way:
23 --method soft-dfs -to 0123456789 -dto 19,0126394875
24 --method random-dfs -to 0123467 -dto 16,0[123467]
25 --method random-dfs -seed 500 -to 0123456789 -dto 36,[01][23456789]
Using them I constructed the "foss-nessy" switch-tasking meta-scan, that
solves the MS 32K deals in 16,962,206 more than a million iterations less than
the non-"depth-tests-order" contender.
However, there was a fly in the ointment: I noticed that a previous scan "the-
iglu-cabal" ran slower on my stationary P4-2.4GHz machine than before I
implemented the "depth-tests-order". After a lot of investigation, I realised
that the problem was with the first commit in the
add-depth-dependent-moves-order branch (there was a slowdown between r2910 and
r2911). The commit seems very innocent and I just add a new command line
option there, so I don't know why there was a problem.
That put aside, there doesn't appear to be a slowdown on my x86-64 (Dual Core)
Laptop so I don't know why the P4 doesn't like it. I've used the same version
(gcc-4.5.0 with -flto) of the compiler on both systems. This is really very
frustrating because on the Pentium 4 all the gains from the new preset are
lost due to this slowdown.
I'll try to investigate further because I don't want this slowdown.
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
My Aphorisms - http://www.shlomifish.org/humour.html
God considered inflicting XSLT as the tenth plague of Egypt, but then
decided against it because he thought it would be too evil.
Please reply to list if it's a mailing list post - http://shlom.in/reply .
Received on Tue Jun 22 2010 - 13:32:00 IDT