optimoptions
と optimset
からの選択
以前は、最適化オプションの設定にはoptimset
の使用が推奨されていました。現在は、optimoptions
の使用が一般に推奨されていますが、以下に挙げるいくつかの注意点があります。
Optimization Toolbox™ のライセンスがなくても使用可能なソルバーにオプションを設定する唯一の方法として、optimset
を引き続き使用できます。こうしたソルバーには、fminbnd
、fminsearch
、fzero
および lsqnonneg
があります。
メモ: 一部の他のツールボックスでは最適化オプションが使用され、optimoptions
ではなく optimset
を使用して作成したオプションを渡さなければなりません。ツールボックスのドキュメンテーションを確認してください。
optimoptions
ではソルバー別にオプションが整理され、optimset
よりも焦点を絞った総合的な表示が提示されます。
ソルバーに妥当するオプションのみを作成および変更
特定のソルバー/アルゴリズムに対するオプションの選択肢と既定値を表示
ソルバー オプションや他の使用可能なソルバー アルゴリズムに関する詳細情報へのリンクを表示
intlinprog
は optimoptions
オプションのみを使用します。
オプションの作成における主な違いは、以下のとおりです。
optimoptions
では、ソルバー名を最初の引数として含める。
options = optimoptions(SolverName,Name,Value,...)
optimset
では、構文にソルバー名が含まれない。
options = optimset(Name,Value,..)
どちらの場合も、ドット表記を使用してオプションのクエリや変更ができます。詳細については、最適化オプションの設定と変更および最適化オプションの表示を参照してください。
たとえば、optimoptions
と 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: []