Main Content

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

最適化オプション

下記の表では、最適化オプションを説明します。関数 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 
BranchRule

分枝の要素を選択するルール:

  • 'maxpscost' — 最大擬似コストをもつ分数要素。詳細については、分枝限定法を参照してください。

  • 'strongpscost' — 最大擬似コストをもつ分数要素。擬似コストは注意深く見積もられます。詳細については、分枝限定法を参照してください。

  • 'reliability' — 最大擬似コストをもつ分数要素。擬似コストは 'strongpscost' よりさらに注意深く見積もられます。詳細については、分枝限定法を参照してください。

  • 'mostfractional' — 小数部が 1/2 に最も近い要素。

  • 'maxfun' — 目的ベクトル f の絶対値の最大の対応する要素をもつ分数要素。

intlinprogoptimoptions のみ
CheckGradients

ユーザー設定の解析の導関数 (勾配またはヤコビアン。選択したソルバーにより異なる) を有限差分の導関数と比較します。

CheckGradients オプションは将来のリリースで削除される予定です。導関数を確認するには、関数 checkGradients を使用します。

fmincon, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

optimoptions のみ。optimset に対しては、DerivativeCheck を使用
ConstraintTolerance

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

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

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

カット生成のレベル (詳細についてはカットの生成を参照):

  • 'none' — カットを生成しない。CutMaxIterations を不要にします。

  • 'basic' — 通常のカットを生成。

  • 'intermediate' — より多くのカットのタイプを使用。

  • 'advanced' — 最も多くのカットのタイプを使用。

intlinprogoptimoptions のみ
CutMaxIterations分枝限定段階に入る前にすべてのカット生成方法を経由するパスの数は 150 の整数です。CutGeneration オプションを 'none' に設定してカット生成を無効にします。intlinprogoptimoptions のみ
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 を使用
Heuristics

実行可能点を検索するアルゴリズム (実行可能解を求めるためのヒューリスティックな方法を参照):

  • 'basic'

  • 'intermediate'

  • 'advanced'

  • 'rss'

  • 'rins'

  • 'round'

  • 'diving'

  • 'rss-diving'

  • 'rins-diving'

  • 'round-diving'

  • 'none'

intlinprogoptimoptions のみ
HeuristicsMaxNodesノードの数を制限する厳密に正の整数。intlinprog は分枝限定検索によって実行可能点を探索することができます。詳細については、実行可能解を求めるためのヒューリスティックな方法を参照してください。intlinprogoptimoptions のみ
HonorBounds

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

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

整数前処理のタイプ (混合整数計画法の前処理を参照):

  • 'none' — ごくわずかの整数前処理手順を使用。

  • 'basic' — 適度な数の整数前処理手順を使用。

  • 'advanced' — 利用可能なすべての整数前処理手順を使用。

intlinprogoptimoptions のみ
IntegerTolerance1e-61e-3 の実数 (解 x の要素が整数をもつことができ、整数値と見なされる整数からの最大偏差)。IntegerTolerance は停止条件ではありません。intlinprogoptimoptions のみ
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' アルゴリズム

 
LPMaxIterations厳密に正の整数である分枝限定プロセス時のノードあたりシンプレックス アルゴリズム反復の最大数。intlinprogoptimoptions のみ
LPOptimalityTolerance被約費用がそこで、基底に取り込まれる変数の LPOptimalityTolerance を超えなければならない、非負の実数。intlinprogoptimoptions のみ
MaxFunctionEvaluations

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

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

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

反復の最大許容回数。

fzerolsqnonneg を除くすべて

optimoptions のみ。optimset に対しては、MaxIter を使用
MaxFeasiblePoints厳密に正の整数。MaxFeasiblePoints 整数実行可能点を見つけると、intlinprog は停止します。intlinprogoptimoptions のみ
MaxNodesソルバーが分枝限定プロセスで探索するノードの最大数である厳密に正の整数。

intlinprog

 
MaxTime

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

coneprog, intlinprog, linprog

 
NodeSelection

次に探索するノードを選択します。

  • 'simplebestproj' — 最良の投影。詳細については、分枝限定法を参照してください。

  • 'minobj' — 最小オブジェクト関数をもつノードを探索。

  • 'mininfeas' — 実行不可能な整数の最小合計値をもつノードを探索。詳細については、分枝限定法を参照してください。

intlinprogoptimoptions のみ
ObjectiveCutOff-Inf より大きい実数。既定値は Inf です。intlinprogoptimoptions のみ
ObjectiveImprovementThreshold非負の実数。intlinprog は、少なくとも ObjectiveImprovementThreshold の下限である目的関数値をもつ別の実行可能解を検出した場合にのみ現在の実行可能解を変更します。(fold – fnew)/(1 + |fold|) > ObjectiveImprovementThresholdintlinprogoptimoptions のみ
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' は反復点の座標を示し、停止条件の満足度を表示します。例については、Monitor Solution Process with 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 のみ
RootLPAlgorithm

線形計画法を解くアルゴリズム:

  • 'dual-simplex' — 双対シンプレックス アルゴリズム

  • 'primal-simplex' — 主シンプレックス アルゴリズム

intlinprogoptimoptions のみ
RootLPMaxIterations初期線形計画問題を解くためのシンプレックス アルゴリズム反復の最大数である非負の整数。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

 
Preprocess

シンプレックス法または双対シンプレックス法アルゴリズムの反復前に行われる 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

関連するトピック