メインコンテンツ

最適化オプション リファレンス

最適化オプション

下記の表では、最適化オプションを説明します。関数 optimoptions を使用してオプションを作成します。fminbndfminsearchfzero または lsqnonneg には optimset を使用します。

使用可能なオプション値と既定値については、個々のリファレンス ページを参照してください。

オプションの既定値は options を入力引数として呼び出す最適化関数により異なります。任意の最適化関数の既定のオプション値は、optimoptions("solvername") またはそれと等価の optimoptions(@solvername) と入力して確認できます。以下に例を示します。

optimoptions("fmincon")

オプションのリストと既定の "interior-point" fmincon アルゴリズムに対する既定値が返されます。別の fmincon アルゴリズムの既定値を確認するには、Algorithm オプションを設定します。以下に例を示します。

opts = optimoptions("fmincon",Algorithm="sqp")

optimoptions では、一部のオプションが "非表示" になります。つまり、該当するオプションの値が表示されなくなります。これらのオプションは次の表には示されていません。こちらではなく非表示オプションに記載されています。

最適化オプション

オプション名説明使用する関数制限
AbsoluteGapTolerance

非負の実数。intlinprog は、オブジェクト関数で内部的に計算された上限 (U) と下限 (L) の範囲の差が AbsoluteGapTolerance 以下の場合に停止します。

U – L <= AbsoluteGapTolerance.

intlinprogoptimoptions のみ
AbsoluteMaxObjectiveCount

最悪値の絶対値を最小にする F(x) の数。

fminimax

 
Algorithm

ソルバーに使用されるアルゴリズムを選択します。

fmincon, fminunc, fsolve, linprog, lsqcurvefit, lsqlin, lsqnonlin, quadprog 
BarrierParamUpdate

"interior-point" アルゴリズムで範囲パラメーターを更新するアルゴリズムとして、"monotone" または "predictor-corrector" を選択します。

fmincon 
ConstraintTolerance

制約違反に関する許容誤差。

coneprog, fgoalattain, fmincon, fminimax, fseminf, intlinprog, linprog, lsqlin, quadprog

optimoptions のみ。optimset に対しては、TolCon を使用
Display

表示レベル。

  • "off" — 出力を表示しない。

  • "iter" — 各反復の出力を表示し、既定の終了メッセージを与える。

  • "iter-detailed" — 各反復の出力を表示し、技術的な終了メッセージを与える。

  • "notify" — 関数が収束しない場合にのみ出力を表示し、既定の終了メッセージを与える。

  • "notify-detailed" — 関数が収束しない場合にのみ出力を表示し、技術的な終了メッセージを与える。

  • "final" — 最終出力のみを表示し、既定の終了メッセージを与える。

  • "final-detailed" — 最終出力のみを表示し、技術的な終了メッセージを与える。

すべての関数。適用される値については、各関数のリファレンス ページを参照してください。

 
EnableFeasibilityMode

"interior-point" アルゴリズムで実行可能性を実現するためのアルゴリズムを選択します。true の場合、既定の false とは異なるアルゴリズムを使用します。

fmincon 
EqualityGoalCount

目的関数 fun が、設定したゴールに等しくなるために必要となる目的関数の数を指定します。必要に応じて目的関数を並べ替え、fgoalattain が最初のちょうど EqualityGoalCount 個の目的関数を実現するようにします。

fgoalattain

optimoptions のみ。optimset に対しては、GoalsExactAchieve を使用
FiniteDifferenceStepSize

有限差分のスカラーまたはベクトルのステップ サイズ ファクター。FiniteDifferenceStepSize をベクトル v に設定すると、前方有限差分 delta は次のようになります。

delta = v.*sign′(x).*max(abs(x),TypicalX);

ここで、sign′(0) = 1 を除き sign′(x) = sign(x) です。中心有限差分は次のようになります。

delta = v.*max(abs(x),TypicalX);

スカラー FiniteDifferenceStepSize はベクトルに展開されます。既定値は、前進有限差分法では sqrt(eps)、中心有限差分法では eps^(1/3) です。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

optimoptions のみ。optimset に対しては、FinDiffRelStep を使用
FiniteDifferenceType

勾配推定に使用される有限差分法。"forward" (既定の設定) または "central" (中心) のいずれかが指定されます。中心差分法では 2 倍の関数評価が必要になりますがより正確です。"central"HonorBounds オプションが false に設定されている場合、fmincon の内点計算中に範囲を超える可能性があります。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

optimoptions のみ。optimset に対しては、FinDiffType を使用
FunctionTolerance

関数値に関する終了許容誤差。

fgoalattain, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

optimoptions のみ。optimset に対しては、TolFun を使用
HessianApproximation

ヘッセ近似法: "bfgs""lbfgs"{"lbfgs",Positive Integer}、または "finite-difference"

HessianFcn または HessianMultiplyFcn が空でない場合は無視されます。

fmincon

optimoptions のみ。optimset に対しては、Hessian を使用
HessianFcn

ユーザー指定のヘッシアン。関数ハンドルとして指定されます (ヘッシアンを含めるを参照)。

fmincon, fminuncoptimoptions のみ。optimset に対しては、HessFcn を使用
HessianMultiplyFcn

ユーザー指定のヘッセ乗算関数。関数ハンドルとして指定されます。

HessianFcn が空でない場合は無視されます。

fmincon, fminunc, quadprog

optimoptions のみ。optimset に対しては、HessMult を使用
HonorBounds

既定の true は範囲制約が各反復で満たされているかを確認します。false に設定すると、この動作は停止します。

fminconoptimoptions のみ。optimset に対しては、AlwaysHonorConstraints を使用
JacobianMultiplyFcn

ユーザー定義のヤコビ乗算関数。関数ハンドルとして指定されます。fsolve, lsqcurvefit, lsqnonlin に対して SpecifyObjectiveGradienttrue でない限り、無視されます。

fsolve, lsqcurvefit, lsqlin, lsqnonlin

 
LinearSolver

アルゴリズムの内部的な線形ソルバーのタイプ。lsqlin および quadprog の場合:

  • "auto" — 渡された二次行列 (quadprog では Hlsqlin では C) がスパースである場合は "sparse"、そうでない場合は "dense" を使用。

  • "sparse" — スパースな線形代数を使用。

  • "dense" — 密な線形代数を使用。

coneprog の場合:

  • "auto" (既定) — coneprog がステップ ソルバーを選択する。

    • スパースな問題の場合は "prodchol" をステップ ソルバーとする。

    • それ以外の場合は "augmented" をステップ ソルバーとする。

  • "augmented" — 拡張形式のステップ ソルバー。[1]を参照してください。

  • "normal" — 標準形式のステップ ソルバー。[1]を参照してください。

  • "normal-dense" — 密な線形代数を使用した標準形式のステップ ソルバー。

  • "prodchol" — 積形式のコレスキー ステップ ソルバー。詳細については、[4]および[5]を参照してください。

  • "schur" — シューア補行列法ステップ ソルバー。[2]を参照してください。

coneprog, lsqlin"interior-point" アルゴリズム, quadprog"interior-point-convex" アルゴリズム

optimoptions のみ
MaxFunctionEvaluations

可能な関数評価の最大回数。

fgoalattain, fminbnd, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

optimoptions のみ。optimset に対しては、MaxFunEvals を使用
MaxIterations

反復の最大許容回数。

fzerolsqnonneg を除くすべて

optimoptions のみ。optimset に対しては、MaxIter を使用
MaxNodesソルバーが分枝限定プロセスで探索するノードの最大数である厳密に正の整数。

intlinprog

 
MaxTime

アルゴリズムが実行する秒単位の時間の最大量。

coneprog, intlinprog, linprog

 
ObjectiveCutOff-Inf より大きい実数。既定値は Inf です。intlinprogoptimoptions のみ
ObjectiveLimit

目的関数値が ObjectiveLimit の下に到達し、反復が可能な場合、その反復は中止されます。

fmincon, fminunc, lsqlin, quadprog 
OptimalityTolerance

1 次の最適性に関する終了許容誤差。

coneprog, fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, linprog (interior-point のみ), lsqcurvefit, lsqlin, lsqnonlin, quadprog

optimoptions のみ。optimset に対しては、TolFun を使用
OutputFcn

各反復で最適化関数が呼び出すユーザー定義の関数を 1 つ以上指定します。関数ハンドルか、関数ハンドルの cell 配列を渡します。出力関数とプロット関数の構文またはintlinprog の出力関数とプロット関数の構文を参照してください。

fgoalattain, fminbnd, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, fzero, intlinprog, lsqcurvefit, lsqnonlin

 
PlotFcn

アルゴリズム実行時における、進行状態の各種測定値のプロット。定義済みのプロットから選択するか、自身で記述します。関数名は、以下のリストのように、または @optimplotx のような関数ハンドルとして指定します。組込みプロット関数名、関数ハンドル、または組み込み名か関数ハンドルの cell 配列を渡します。カスタム プロット関数の場合は、関数ハンドルを渡します。

  • "optimplot" は関数値と制約満足度をプロットします。"optimplot" が実行可能性を ConstraintTolerance とアルゴリズムに基づいて判定するのに対して "optimplotfvalconstr" は固定の許容誤差 1e-6 を使用するという点を除き、"optimplotfvalconstr" に似ています。さらに、"optimplot" は反復点の座標を示し、停止条件の満足度を表示します。例については、optimplot を使用した解法プロセスの監視を参照してください。"optimplot" プロット関数は、他のいずれのプロット関数とも共有されない新しいウィンドウにプロットします。

  • "optimplotx" は現在の点をプロットします。

  • "optimplotfunccount" は関数カウントをプロットします。

  • "optimplotfval" は関数値をプロットします。

  • "optimplotfvalconstr" は検出された実行可能な最良の目的関数値をプロットします。このプロットでは、実行可能性の許容誤差を 1e-6 として、実行不可能点をある色で、実行可能点を別の色で示します。

  • "optimplotconstrviolation" は最大制約違反をプロットします。

  • "optimplotresnorm" は残差のノルムをプロットします。

  • "optimplotfirstorderopt" は 1 次の最適性をプロットします。

  • "optimplotstepsize" はステップ サイズをプロットします。

  • "optimplotmilp" は混合整数線形計画法のギャップをプロットします。

プロット関数またはintlinprog の出力関数とプロット関数の構文を参照してください。

fgoalattain, fminbnd, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, fzero, intlinprog, lsqcurvefit, lsqnonlin.適用される値については、各関数のリファレンス ページを参照してください。

optimoptions のみ。optimset に対しては、PlotFcns を使用
RelativeGapTolerance

01 の実数。intlinprog は、オブジェクト関数で内部的に計算された上限 (U) と下限 (L) の範囲の相対差が RelativeGapTolerance 以下の場合に停止します。

(U – L) / (abs(U) + 1) <= RelativeGapTolerance.

intlinprogoptimoptions のみ
ScaleProblem

fmincon interior-point および sqp アルゴリズムに対し、true を設定するとアルゴリズムがすべての制約関数とこの目的関数をそれぞれの初期値を使って正規化します。既定の false に設定すると、無効になります。

fmincon 
SpecifyConstraintGradient

ユーザーにより定義される非線形制約の勾配。

fgoalattain, fmincon, fminimax

optimoptions のみ。optimset に対しては、GradConstr を使用
SpecifyObjectiveGradient

ユーザーにより定義される、目的関数の勾配またはヤコビアン。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

optimoptions のみ。optimset に対しては、GradObj または Jacobian を使用
StepTolerance

x に関する終了許容誤差。

linprog および coneprog を除くすべての関数

 
SubproblemAlgorithm

反復ステップの計算方法を定義します。

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin 
TypicalX

パラメーター x の配列の典型的な大きさを指定する配列。配列のサイズは初期点 x0 のサイズと等しくなります。主に勾配推定の有限差分のスケーリングに使用されます。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

 
UseParallel

true の場合、適用可能なソルバーは並列で勾配を推定します。false に設定すると、この動作は無効になります。

fgoalattain, fmincon, fminimax, fminunc, fsolve, lsqcurvefit, lsqnonlin.

 

非表示オプション

optimoptions では、一部のオプションが "非表示" になります。つまり、該当するオプションの値が表示されなくなります。これらのオプションの表示方法および非表示である理由については、最適化オプションの表示を参照してください。

関数リファレンス ページでは、これらのオプションが "イタリック" で記載されています。

Optimization Toolbox の非表示オプション

以下の表は、Optimization Toolbox™ の非表示オプションの一覧です。

optimoptions で非表示になっているオプション

オプション名説明使用する関数制限
Diagnostics

最小化または計算する関数に関する情報を表示します。

fminbndfminsearchfzerolsqnonneg を除くすべて

 
DiffMaxChange

有限差分の変数における最大変化量。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

 
DiffMinChange

有限差分を計算するための変数内での最小変化量。

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

 
FunValCheck

目的関数値と制約値が有効であるかどうかをチェックします。"on" は目的関数または制約が complexNaN、または Inf の値を返した場合にエラーを表示します。

メモ

FunValCheckInf を適切に処理する fminbndfminsearchfzero と共に使用する場合、Inf のエラーを出力しません。

"off" はエラーを表示しません。

fgoalattain, fminbnd, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, fzero, lsqcurvefit, lsqnonlin

 
HessPattern

有限差分に対するヘッシアンのスパース パターン。行列サイズは n 行 n 列であり、n は初期点 x0 の要素数です。

fmincon, fminunc

 
HessUpdate

準ニュートン更新手法。

fminunc

 
InitBarrierParam

初期境界値。

fmincon 
InitDamping

レーベンバーグ・マルカート パラメーターの初期値。

fsolve, lsqcurvefit, lsqnonlinoptimoptions のみ
InitTrustRegionRadius

信頼領域の初期半径。

fmincon 
JacobPattern

有限差分に対するヤコビ スパース パターン。行列のサイズは mn 列です。m はユーザー定義の関数 fun より返される 1 番目の引数の値の数であり、n は開始値 x0 の要素数です。

fsolve, lsqcurvefit, lsqnonlin

 
LPPreprocess

緩和された線形計画法の解に対する前処理のタイプ:

  • "none" — 前処理を使用しない。

  • "basic" — 前処理を使用。

intlinprogoptimoptions のみ
MaxPCGIter

前処理付き共役勾配法の反復最大回数。

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

 
MaxProjCGIter

計画された共役勾配の反復回数の許容誤差です。これは内部反復であり、アルゴリズムの反復数ではありません。

fmincon 
MaxSQPIter

逐次二次計画法で可能な反復の最大数。

fgoalattain, fmincon, fminimax

 
MeritFunction

ゴール到達/ミニマックス メリット関数 (複数目的関数) と fmincon (単一目的関数) を使用します。

fgoalattain, fminimax

 
PrecondBandWidth

PCG に対する前提条件子の帯域幅の上限。"Inf" に設定すると、CG の代わりに直接因子分解が使用されます。

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

 
Presolve

内点法または双対シンプレックス法アルゴリズムの反復前に行われる LP の前処理のレベル。

linprog

optimoptions のみ
RelLineSrchBnd

直線探索ステップ長の相対範囲。

fgoalattain, fmincon, fminimax, fseminf

 
RelLineSrchBndDuration

RelLineSrchBnd で範囲を指定された反復数が有効になります。

fgoalattain, fmincon, fminimax, fseminf

 
ScaleProblem

Algorithm オプションの "levenberg-marquardt" を使用する際に ScaleProblem オプションを "jacobian" に設定すると、ソルバーが適切にスケール化されていない問題の解決に役立つ場合があります。

fsolve, lsqcurvefit, lsqnonlin 
TolConSQP

内部の SQP 反復法の制約違反許容誤差。

fgoalattain, fmincon, fminimax, fseminf 
TolPCG

PCG 法の反復の終了許容誤差。

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

 
TolProjCG

計画された共役勾配アルゴリズムの相対許容誤差です。これは内部の反復に対してであり、アルゴリズムの反復に対してではありません。

fmincon 
TolProjCGAbs

計画された共役勾配アルゴリズムの絶対許容誤差です。これは内部の反復に対してであり、アルゴリズムの反復に対してではありません。

fmincon 

Global Optimization Toolbox の非表示オプション

これらのオプションが非表示である理由については、optimoptions で非表示になっているオプション (Global Optimization Toolbox)を参照してください。

optimoptions で非表示になっているオプション

オプション名使用する関数
Cache

patternsearch

CacheSize

patternsearch

CacheTol

patternsearch

DisplayInterval

particleswarm, simulannealbnd

FunValCheck

particleswarm

HybridInterval

simulannealbnd

InitialPenalty

ga, patternsearch

MaxMeshSize

patternsearch

MeshRotate

patternsearch

MigrationDirection

ga

MigrationFraction

ga

MigrationInterval

ga

PenaltyFactor

ga, patternsearch

PlotInterval

ga, patternsearch, simulannealbnd

StallTest

ga

TolBindpatternsearch

参考

トピック