The SIMUL-ANN-1 method is a simulated annealing method.
Such a method is said to be useful when a desired global
minimum is among many other local minima. It
has been derived via an analogy to how metals cool and anneal;
as the liquid metal is cooled slowly, the atoms are able
to settle into their minimum energy state, i.e. form a
crystal. In simulated annealing, the function to be optimized
is held to be the analog of energy, and the system slowly
``cooled.'' At each temperature tried, the parameters are
randomly varied; when there is no further improvement, the
temperature is lowered, and again the parameters are varied
some number of times. With sufficiently slow cooling, and
sufficient random tries, the algorithm ``freezes'' near the
global minimum. (At each randomization, only one parameter
is varied.) This is quite different from the other
techniques implemented here, which can be said to head downhill,
fast, for a nearby minimum. The great advantage of simulated
annealing is that it sometimes goes uphill, thus escaping
undesirable local minima the other techniques tend to get
stuck in. The great disadvantage, of course, is that it is
a slow technique.
A simple view of simulated
annealing is that a new guess at the location of the minimum of the
objective function is acceptable if it causes the value of
the function to decrease, and also with probability
where (Delta)f is the increase in the value of the objective
function, and T is a ``temperature.'' After a large number of random
points in parameter space have been sampled, and no improvement in
the minimum value of the objective function has occurred, the
temperature is decreased (increasing the probability penalty for
positive (Delta)f), and the process is repeated. The expectation is
that with a sufficient number of sampled points at each
temperature, and a sufficiently slow ``cooling'' of the system, the
result will ``freeze out'' at the true minimum. The analogy is
supposed to be with a cooling gas, where the Boltzmann statistics of
molecular motions causes the molecules of the gas to explore both the
minimum energy state and adjacent energy states at any one
temperature, and then freeze in a crystalline state of minimum energy
as the temperature approaches zero.
SIMUL-ANN-1 starts with a temperature which is about twice
the initial value of
the objective function, and reduces it slowly towards zero, changing a
single parameter value at each randomization.
Parameter tchn is a multiplying factor for the temperature variable
between cooling steps. Its default value of 0.98 means that a large
number of cooling steps is needed to reduce the temperature
sufficiently that the function ``freezes out,'' but fast cooling is
not recommended (as it inhibits the ergodic occupation of the
search space).
Parameter nloop specifies the maximum number of
temperature values to try--but may be overridden if the code finds
that the solution has ``frozen out'' early. Finally, parameter
nsamp
specifies the number of movements at each temperature--the number
of random changes to the parameter values that will be tried.
SIMUL-ANN-1 tends to be slow, but is a possible way of
making significant progress in traveling-salesman type problems.
One of its strengths is that even if it doesn't find the absolutely best
solution, it often converges to a solution that is close (in the
(Delta)f sense) to the true minimum solution.
Somewhat better results are often obtained by SIMUL-POW-1
and SIMUL-POW-2,
where the
simulated annealing method is combined with the Powell method.