sannbox function

Simulated annealing with box constraints.

Simulated annealing with box constraints.

A straightforward implementation of simulated annealing with box constraints.

sannbox(par, fn, control = list(), ...)

Arguments

  • par: Initial values for the parameters to be optimized over.
  • fn: A function to be minimized, with first argument the vector of parameters over which minimization is to take place. It should return a scalar result.
  • control: A named list of control parameters. See Details .
  • ...: ignored.

Returns

sannbox returns a list with components:

  • counts: two-element integer vector. The first number gives the number of calls made to fn. The second number is provided for compatibility with optim and will always be NA.
  • convergence: provided for compatibility with optim; will always be 0.
  • final.params: last tried value of par.
  • final.value: value of fn corresponding to final.params.
  • par: best tried value of par.
  • value: value of fn corresponding to par.

Details

The control argument is a list that can supply any of the following components:

  • trace: Non-negative integer. If positive, tracing information on the progress of the optimization is produced. Higher values may produce more tracing information.

  • fnscale: An overall scaling to be applied to the value of fn during optimization. If negative, turns the problem into a maximization problem. Optimization is performed on fn(par)/fnscale.

  • parscale: A vector of scaling values for the parameters. Optimization is performed on par/parscale and these should be comparable in the sense that a unit change in any element produces about a unit change in the scaled value.

  • maxit: The total number of function evaluations: there is no other stopping criterion. Defaults to 10000.

  • temp: starting temperature for the cooling schedule. Defaults to 1.

  • tmax: number of function evaluations at each temperature. Defaults to 10.

  • candidate.dist: function to randomly select a new candidate parameter vector. This should be a function with three arguments, the first being the current parameter vector, the second the temperature, and the third the parameter scaling. By default, candidate.dist is

     ```
     function(par,temp,scale)
                rnorm(n=length(par),mean=par,sd=scale*temp).
     ```
    
  • sched: cooling schedule. A function of a three arguments giving the temperature as a function of iteration number and the control parameters temp and tmax. By default, sched is

     ```
     function(k,temp,tmax) temp/log(((k-1)%/%tmax)*tmax+exp(1)).
     ```
     
     Alternatively, one can supply a numeric vector of temperatures. This must be of length at least `maxit`.
    
  • lower,upper: optional numeric vectors. These describe the lower and upper box constraints, respectively. Each can be specified either as a single scalar (common to all parameters) or as a vector of the same length as par. By default, lower=-Inf and upper=Inf, i.e., there are no constraints.

See Also

trajectory matching , probe matching , spectrum matching , nonlinear forecasting .

Author(s)

Daniel Reuman, Aaron A. King

  • Maintainer: Aaron A. King
  • License: GPL-3
  • Last published: 2025-01-08