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:
Some other toolboxes use optimization options and require you to pass in options
Check the documentation for your toolboxes.
optimoptions organizes options by solver, with a more focused and
comprehensive display than
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
The main difference in creating options is:
optimoptions, you include the solver name as the first argument.
options = optimoptions(
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
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: