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