Surrogate optimization for global minimization of time-consuming objective functions
The surrogateopt
function is a global solver for
time-consuming objective functions.
surrogateopt
attempts to solve problems of the form
The solver searches for the global minimum of a real-valued objective function in
multiple dimensions, subject to bounds, optional integer constraints, and optional
nonlinear inequality constraints. surrogateopt
is best suited to
objective functions that take a long time to evaluate. The objective function can be
nonsmooth. The solver requires finite bounds on all variables. The solver can optionally
maintain a checkpoint file to enable recovery from crashes or partial execution, or
optimization continuation after meeting a stopping condition.
searches for a global minimum of x
= surrogateopt(objconstr
,lb
,ub
)objconstr(x)
in the region
lb <= x <= ub
. If objconstr(x)
returns a structure, then surrogateopt
searches for a
minimum of objconstr(x).Fval
, subject to
objconstr(x).Ineq <= 0
.
Note
Passing Extra Parameters explains how to pass extra parameters to the objective function, if necessary.
continues running the optimization from the state in a saved checkpoint file.
See Work with Checkpoint Files.x
= surrogateopt(checkpointFile
)
continues running the optimization from the state in a saved checkpoint file,
and replaces options in x
= surrogateopt(checkpointFile
,opts
)checkpointFile
with those in
opts
. See Checkpoint File.
surrogateopt
repeatedly performs these steps:
Create a set of trial points by sampling MinSurrogatePoints
random points within the bounds, and evaluate the objective function at the
trial points.
Create a surrogate model of the objective function by interpolating a radial basis function through all of the random trial points.
Create a merit function that gives some weight to the surrogate and some weight to the distance from the trial points. Locate a small value of the merit function by randomly sampling the merit function in a region around the incumbent point (best point found since the last surrogate reset). Use this point, called the adaptive point, as a new trial point.
Evaluate the objective at the adaptive point, and update the surrogate based on this point and its value. Count a "success" if the objective function value is sufficiently lower than the previous best (lowest) value observed, and count a "failure" otherwise.
Update the dispersion of the sample distribution upwards if three successes
occur before max(nvar,5)
failures, where
nvar
is the number of dimensions. Update the dispersion
downwards if max(nvar,5)
failures occur before three
successes.
Continue from step 3 until all trial points are within
MinSampleDistance
of the evaluated points. At that time,
reset the surrogate by discarding all adaptive points from the surrogate, reset
the scale, and go back to step 1 to create MinSurrogatePoints
new random trial points for evaluation.
For details, see Surrogate Optimization Algorithm.
The Optimize Live Editor task provides a visual interface for surrogateopt
.