sannbox
is a straightforward implementation of simulated annealing with box constraints.
sannbox(par, fn, control = list(), …)
Initial values for the parameters to be optimized over.
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.
A named list of control parameters. See ‘Details’.
ignored.
sannbox
returns a list with components:
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.
provided for compatibility with optim
; will always be 0.
last tried value of par
.
value of fn
corresponding to final.params
.
best tried value of par
.
value of fn
corresponding to par
.
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.