Choose Between optimoptions
and
optimset
Previously, the recommended way to set optimization options was to use optimset
. Now the general recommendation is to use optimoptions
, with some caveats listed below.
optimset
still works, and it is the only way to set options for
solvers that are available without an Optimization Toolbox™ license: fminbnd
, fminsearch
,
fzero
, and lsqnonneg
.
Note
Some other toolboxes use optimization options and require you to pass in options
created using optimset
, not optimoptions
.
Check the documentation for your toolboxes.
optimoptions
organizes options by solver, with a more focused and
comprehensive display than optimset
:
Creates and modifies only the options that apply to a solver
Shows your option choices and default values for a specific solver/algorithm
Displays links for more information on solver options and other available solver algorithms
intlinprog
uses only optimoptions
options.
The main difference in creating options is:
For
optimoptions
, you include the solver name as the first argument.options = optimoptions(
SolverName
,Name,Value,...)For
optimset
, the syntax does not include the solver name.options = optimset(Name,Value,...)
In both cases, you can query or change options by using dot notation. See Set and Change Optimization Options and View Optimization Options.
For example, compare the display of optimoptions
to that of
optimset
.
options = optimoptions(@fminunc,'SpecifyObjectiveGradient',true)
options = fminunc options: Options used by current Algorithm ('trust-region'): (Other available algorithms: 'quasi-newton') Set properties: SpecifyObjectiveGradient: 1 Default properties: Algorithm: 'trust-region' CheckGradients: 0 Display: 'final' FiniteDifferenceStepSize: 'sqrt(eps)' FiniteDifferenceType: 'forward' FunctionTolerance: 1.0000e-06 HessianFcn: [] HessianMultiplyFcn: [] MaxFunctionEvaluations: '100*numberOfVariables' MaxIterations: 400 OptimalityTolerance: 1.0000e-06 OutputFcn: [] PlotFcn: [] StepTolerance: 1.0000e-06 SubproblemAlgorithm: 'cg' TypicalX: 'ones(numberOfVariables,1)' Show options not used by current Algorithm ('trust-region')
options = optimset('GradObj','on')
options = struct with fields: Display: [] MaxFunEvals: [] MaxIter: [] TolFun: [] TolX: [] FunValCheck: [] OutputFcn: [] PlotFcns: [] ActiveConstrTol: [] Algorithm: [] AlwaysHonorConstraints: [] DerivativeCheck: [] Diagnostics: [] DiffMaxChange: [] DiffMinChange: [] FinDiffRelStep: [] FinDiffType: [] GoalsExactAchieve: [] GradConstr: [] GradObj: 'on' HessFcn: [] Hessian: [] HessMult: [] HessPattern: [] HessUpdate: [] InitBarrierParam: [] InitTrustRegionRadius: [] Jacobian: [] JacobMult: [] JacobPattern: [] LargeScale: [] MaxNodes: [] MaxPCGIter: [] MaxProjCGIter: [] MaxSQPIter: [] MaxTime: [] MeritFunction: [] MinAbsMax: [] NoStopIfFlatInfeas: [] ObjectiveLimit: [] PhaseOneTotalScaling: [] Preconditioner: [] PrecondBandWidth: [] RelLineSrchBnd: [] RelLineSrchBndDuration: [] ScaleProblem: [] Simplex: [] SubproblemAlgorithm: [] TolCon: [] TolConSQP: [] TolGradCon: [] TolPCG: [] TolProjCG: [] TolProjCGAbs: [] TypicalX: [] UseParallel: []