Main Content

optimoptionsoptimset からの選択

以前は、最適化オプションの設定にはoptimsetの使用が推奨されていました。現在は、optimoptionsの使用が一般に推奨されていますが、以下に挙げるいくつかの注意点があります。

Optimization Toolbox™ のライセンスがなくても使用可能なソルバーにオプションを設定する唯一の方法として、optimset を引き続き使用できます。こうしたソルバーには、fminbndfminsearchfzero および lsqnonneg があります。

メモ: 一部の他のツールボックスでは最適化オプションが使用され、optimoptions ではなく optimset を使用して作成したオプションを渡さなければなりません。ツールボックスのドキュメンテーションを確認してください。

optimoptions ではソルバー別にオプションが整理され、optimset よりも焦点を絞った総合的な表示が提示されます。

  • ソルバーに妥当するオプションのみを作成および変更

  • 特定のソルバー/アルゴリズムに対するオプションの選択肢と既定値を表示

  • ソルバー オプションや他の使用可能なソルバー アルゴリズムに関する詳細情報へのリンクを表示

intlinprogoptimoptions オプションのみを使用します。

オプションの作成における主な違いは、以下のとおりです。

  • optimoptions では、ソルバー名を最初の引数として含める。

options = optimoptions(SolverName,Name,Value,...)
  • optimset では、構文にソルバー名が含まれない。

options = optimset(Name,Value,..)

どちらの場合も、ドット表記を使用してオプションのクエリや変更ができます。詳細については、最適化オプションの設定と変更および最適化オプションの表示を参照してください。

たとえば、optimoptionsoptimset の表示を比較してみましょう。

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: []

参考

|

関連するトピック