SAMIN

When problems are mildly nonconvex, the quasi-Newton methods above, combined with a number of trial start values, may be the fastest way to find the global minimum. This solution is implemented in battery.m. But when the problem becomes less smooth, with many local minima, this solution may fail. Simulated annealing is one of the algorithms that works well in this case. The implementation by Goffe has been used widely, and is the basis for the version included in MINTOOLKIT. An additional reference is Goffe (1996).

samin differs from the Goffe code in two important ways:

  1. The ''temperature'' is determined automatically. In a first stage, the temperature is increased until the active search region covers the entire parameter space defined as the $ k$-dimensional rectangle $ \times_{j=1}^{k}(lb_{j},ub_{j})$ where $ lb_{j}$ and $ ub_{j}$ are the $ j$th elements of the LB and UB vectors that are the lower and upper bounds for the parameters (these are user-specified arguments to samin. Once this is achieved, the temperature decreases as usual.
  2. Convergence is defined as two conditions holding simultaneously.

    1. The last NEPS best function values cannot differ by more than FUNCTOL. This is as in Goffe's code.
    2. The width of the search interval must be less than PARAMTOL for each parameter. This allows to avoid accepting points on a flat plateau.

Søren Hauberg 2008-04-29