Main Content

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 ('quasi-newton'):
   (Other available algorithms: 'trust-region')

   Set properties:
    SpecifyObjectiveGradient: 1

   Default properties:
                   Algorithm: 'quasi-newton'
                     Display: 'final'
    FiniteDifferenceStepSize: 'sqrt(eps)'
        FiniteDifferenceType: 'forward'
        HessianApproximation: 'bfgs'
      MaxFunctionEvaluations: '100*numberOfVariables'
               MaxIterations: 400
              ObjectiveLimit: -1.0000e+20
         OptimalityTolerance: 1.0000e-06
                   OutputFcn: []
                     PlotFcn: []
               StepTolerance: 1.0000e-06
                    TypicalX: 'ones(numberOfVariables,1)'
                 UseParallel: 0

   Options not used by current Algorithm ('quasi-newton')
   Default properties:
      FunctionTolerance: 1.0000e-06
             HessianFcn: []
     HessianMultiplyFcn: []
    SubproblemAlgorithm: 'cg'

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: []
       SubproblemAlgorithm: []
                    TolCon: []
                 TolConSQP: []
                TolGradCon: []
                    TolPCG: []
                 TolProjCG: []
              TolProjCGAbs: []
                  TypicalX: []
               UseParallel: []

See Also


Related Topics