README.txt (siman_mp v1.0, 9/9/2007)
This code builds on the GNU Scientific Library implementation of the
simulated annealling optimization algorithm described at:
http://www.gnu.org/software/gsl/manual/html_node/Simulated-Annealing.html
The main contribution is to allow the use of a cluster to speed up the
annealing process. Using this C code as a starting point, you should be
able to plug in your own objective function and go.
As a first step, I recommend working with the serial version:
siman_test. This is a slight extension to the sample code that comes
with GSL. The objective function can now take a vector argument.
When you're ready to brave the world of MPI, the parallel optimizer is
in siman_mp.c. The anneallor is configured in exactly the same way as
the serial version. The parallelization method used is very simple: It
does a large number of independent optimizations using simulated
annealing with the same starting point but different random seeds. As
long as the initial temperature and step size are high, this is very
similar to starting each optimization at a random point in the space.
There's a bit more documentation in each of the two source files.
NOTE: You may want to try msiman_test and msiman_mp as these two
programs use my slightly modified version of the GSL annealor that
allows you to specify a dampening factor for the step_size. It doesn't
help on the serial example, but does seem to converge a little faster in
the parallel example. So you should definitely try different values of
the damping factor (including 1.0) for your objective function.
Feel free to email me any questions or comments you might have about
this code at dmckee@ucla.edu!