すべてのアルゴリズム |
Algorithm
| 'trust-region-reflective' (既定の設定)、'levenberg-marquardt' 、'interior-point' から選択します。
Algorithm オプションは使用するアルゴリズムの優先順位を指定します。これは基本設定のみです。条件によっては、各アルゴリズムに対応しなければならないからです。信頼領域 Reflective 法アルゴリズムでは、fun によって返される F の要素数は少なくとも x の長さと同じでなければなりません。
'interior-point' アルゴリズムは、線形制約または非線形制約がある問題を解決できる唯一のアルゴリズムです。これらの制約を問題に含め、アルゴリズムを指定していない場合、ソルバーは自動的に 'interior-point' アルゴリズムに切り替わります。'interior-point' アルゴリズムが、変更されたバージョンの fmincon 'interior-point' アルゴリズムを呼び出します。
アルゴリズムの選択の詳細については、アルゴリズムの選択を参照してください。 |
CheckGradients | ユーザー設定の導関数 (目的関数または制約の勾配) と有限差分による導関数とを比較します。選択肢は、false (既定の設定) または true です。 optimset の場合、名前は DerivativeCheck で、値は 'on' または 'off' です。詳細については、新旧のオプション名を参照してください。 CheckGradients オプションは将来のリリースで削除される予定です。導関数を確認するには、関数 checkGradients を使用します。 |
Diagnostics | 最小化または計算する関数に関する情報を表示します。選択肢は、'off' (既定の設定) または 'on' です。 |
DiffMaxChange | 有限差分勾配を計算する場合に変数内で生じる最大変化量です (正のスカラー)。既定値は Inf です。 |
DiffMinChange | 有限差分勾配を計算する場合に変数内で生じる最小変化量です (正のスカラー)。既定値は 0 です。 |
Display
| 表示レベル (反復表示を参照):
'off' または 'none' — 出力を表示しない。
'iter' — 各反復の出力を表示し、既定の終了メッセージを与える。
'iter-detailed' — 各反復の出力を表示し、技術的な終了メッセージを与える。
'final' (既定の設定) — 最終出力を表示し、既定の終了メッセージを返す。
'final-detailed' — 最終出力のみを表示し、技術的な終了メッセージを与える。
|
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) です。 optimset の場合、名前は FinDiffRelStep です。詳細については、新旧のオプション名を参照してください。
|
FiniteDifferenceType | 勾配推定に使用される有限差分は 'forward' (既定の設定) または 'central' (中心) のいずれかです。'central' では 2 倍の関数評価が必要になりますが、正確性が増します。 アルゴリズムは有限差分の両方のタイプを推定するとき、範囲に注意深く従います。そのためたとえば、forward ではなく、backward を選択すると、範囲外の点を計算しないようにすることができます。 optimset の場合、名前は FinDiffType です。詳細については、新旧のオプション名を参照してください。
|
FunctionTolerance
| 関数値に関する終了許容誤差 (正のスカラー)。既定値は 1e-6 です。詳細については、許容誤差と停止条件を参照してください。 optimset の場合、名前は TolFun です。詳細については、新旧のオプション名を参照してください。
|
FunValCheck | 関数値が有効かどうかをチェックします。'on' は、関数が complex 、Inf 、または NaN である値を返すと、エラーを表示します。既定の 'off' ではエラーを表示しません。 |
MaxFunctionEvaluations
| 可能な関数評価の最大回数 (正の整数)。既定の値は 'trust-region-reflective' アルゴリズムでは 100*numberOfVariables 、'levenberg-marquardt' アルゴリズムでは 200*numberOfVariables 、'interior-point' アルゴリズムでは 3000 です。詳細については、許容誤差と停止条件と反復と関数カウントを参照してください。 optimset の場合、名前は MaxFunEvals です。詳細については、新旧のオプション名を参照してください。
|
MaxIterations
| 可能な反復の最大数 (正の整数)。既定の値は、'trust-region-reflective' および 'levenberg-marquardt' アルゴリズムでは 400 、'interior-point' アルゴリズムでは 1000 です。詳細については、許容誤差と停止条件と反復と関数カウントを参照してください。 optimset の場合、名前は MaxIter です。詳細については、新旧のオプション名を参照してください。
|
OptimalityTolerance | 1 次の最適性に関する終了許容誤差 (正のスカラー)。既定値は 1e-6 です。詳細については、1 次の最適性の尺度を参照してください。 内部的に、'levenberg-marquardt' アルゴリズムは、FunctionTolerance の 1e-4 倍となる最適性の許容誤差 (停止条件) を使用し、OptimalityTolerance は使用しません。 optimset の場合、名前は TolFun です。詳細については、新旧のオプション名を参照してください。
|
OutputFcn | 各反復で最適化関数が呼び出すユーザー定義の関数を 1 つ以上指定します。関数ハンドルか、関数ハンドルの cell 配列を渡します。既定の設定はなし ([] ) です。詳細については、出力関数とプロット関数の構文を参照してください。 |
PlotFcn
| アルゴリズムが実行中のさまざまな進行状況の測定値をプロットします。事前定義されたプロットから選択するか、独自のコードを記述してください。名前、関数ハンドル、または名前か関数ハンドルの cell 配列を渡します。カスタム プロット関数の場合は、関数ハンドルを渡します。既定の設定はなし ([] ) です。
'optimplotx' は現在の点をプロットします。
'optimplotfunccount' は関数カウントをプロットします。
'optimplotfval' は関数値をプロットします。
'optimplotresnorm' は残差のノルムをプロットします。
'optimplotstepsize' はステップ サイズをプロットします。
'optimplotfirstorderopt' は 1 次の最適性尺度をプロットします。
カスタムのプロット関数は、出力関数と同じ構文を使用します。詳細については、Optimization Toolbox の出力関数と出力関数とプロット関数の構文を参照してください。 optimset の場合、名前は PlotFcns です。詳細については、新旧のオプション名を参照してください。
|
SpecifyObjectiveGradient | false (既定の設定) の場合、ソルバーは有限差分法を使用してヤコビアンを近似します。true の場合、ソルバーは目的関数に対してユーザー定義のヤコビアン (既定の設定では fun )、または (JacobMult を使用するときの) ヤコビ情報を使用します。 optimset の場合、名前は Jacobian で、値は 'on' または 'off' です。詳細については、新旧のオプション名を参照してください。
|
StepTolerance
| x に関する許容誤差 (正のスカラー)。既定の値は、'trust-region-reflective' および 'levenberg-marquardt' アルゴリズムでは 1e-6 、'interior-point' アルゴリズムでは 1e-10 です。詳細については、許容誤差と停止条件を参照してください。
optimset の場合、名前は TolX です。詳細については、新旧のオプション名を参照してください。
|
TypicalX
| 典型的な x の値です。TypicalX の要素数は、開始点 x0 の要素数と等しくなります。既定値は ones(numberofvariables,1) です。ソルバーは TypicalX を使用して勾配推定の有限差分をスケーリングします。 |
UseParallel | true の場合、ソルバーは並列で勾配を推定します。既定の false に設定すると、無効になります。詳細については、並列計算を参照してください。
|
信頼領域 Reflective 法アルゴリズム |
JacobianMultiplyFcn | ヤコビ乗算関数。関数ハンドルとして指定されます。大規模構造化問題に対して、この関数は実際に J を計算しないで、ヤコビ行列乗算 J*Y 、J'*Y 、J'*(J*Y) のいずれかを計算します。lsqnonlin の場合、この関数は次の形式を取ります。 ここで、Jinfo は J*Y (または J'*Y か J'*(J*Y) ) の計算に役立つデータを含んでいます。lsqcurvefit の場合、この関数は次の形式を取ります。 ここで、xdata は xdata 引数に渡されるデータです。 データ Jinfo は目的関数 fun で返される 2 番目の引数です。 lsqcurvefit はデータ Jinfo 、Y 、flag 、および lsqcurvefit の場合は xdata を渡し、関数 jmfun は次に示すように結果を計算します。Y は、サイズが flag の値によって決まる行列です。m は目的関数 fun の要素数を指定し、n は x 内の問題変数の個数を指定するとします。ヤコビアンのサイズは、fun で説明されているように m 行 n 列です。関数 jmfun は次のいずれかの結果を返します。
flag == 0 の場合、W = J'*(J*Y) で、Y のサイズは n 行 2 列です。
flag > 0 の場合、W = J*Y で、Y のサイズは n 行 1 列です。
flag < 0 の場合、W = J'*Y で、Y のサイズは m 行 1 列です。
どの場合でも、J は明示的に形成されません。ソルバーは Jinfo を使用して乗算を計算します。jmfun が必要とする追加のパラメーターを与える方法については 追加パラメーターの受け渡し を参照してください。 メモ: 'SpecifyObjectiveGradient' は true に設定し、ソルバーが Jinfo を fun から jmfun に渡すようにしなければなりません。
同様の例は 密に構造化されたヘッシアンと線形等式を使用した最小化 と 線形最小二乗付きヤコビ乗算関数 を参照してください。 optimset の場合、名前は JacobMult です。詳細については、新旧のオプション名を参照してください。
|
JacobPattern | 有限差分に対するヤコビ スパース パターン。fun(i) が x(j) によって異なる場合、JacobPattern(i,j) = 1 を設定します。それ以外の場合は、JacobPattern(i,j) = 0 を設定します。言い換えると、∂fun(i) /∂x(j) ≠ 0 をもつことができる場合、JacobPattern(i,j) = 1 となります。 fun でヤコビ行列 J を計算するのが不便な場合は、JacobPattern を使用します。ただし、fun(i) が x(j) によって異なる場合は見ただけで判断できます。JacobPattern を提供できる場合、ソルバーはスパース有限差分を使って J を近似することができます。
構造が不明であれば、JacobPattern を設定しないでください。既定では、JacobPattern は 1 からなる密行列のように動作します。その後、ソルバーは、非スパース状態の有限差分近似を反復ごとに計算します。大規模な問題では、この計算には多大なリソースが必要となる場合があり、通常はスパース構造を決定するのが妥当です。 |
MaxPCGIter | PCG (前処理付き共役勾配) 法の反復の最大回数です (正のスカラー)。既定値は max(1,numberOfVariables/2) です。詳細については、大規模な非線形最小二乗法を参照してください。 |
PrecondBandWidth | PCG に対する前提条件子の帯域幅の上限 (非負の整数)。既定の PrecondBandWidth が Inf の場合、共役勾配 (CG) ではなく、直接因子分解 (コレスキー因子) が使用されます。直接因子分解では CG より計算量が増加しますが、解を求めるためのステップの質が向上します。対角型をした前提条件のために、PrecondBandWidth を 0 に設定します (上部帯域幅 0)。一部の問題では帯域幅を中間にすることで PCG 法の反復回数を減らします。 |
SubproblemAlgorithm | 反復ステップの計算方法を定義します。既定の設定である 'factorization' のステップは 'cg' より低速ですが、精度の点で勝ります。詳細については、信頼領域 Reflective 法の最小二乗を参照してください。 |
TolPCG | PCG 反復に関する終了許容誤差 (正のスカラー)。既定値は 0.1 です。 |
レーベンバーグ・マルカート法アルゴリズム |
InitDamping | レーベンバーグ・マルカート パラメーターの初期値 (正のスカラー)。既定値は 1e-2 です。詳細については、レーベンバーグ・マルカート法を参照してください。 |
ScaleProblem | 'jacobian' は、適切にスケール化されていない問題に対して収束性を高める場合があります。既定値は 'none' です。
|
内点法アルゴリズム |
BarrierParamUpdate | fmincon による範囲パラメーターの更新方法を指定します (fmincon の内点法アルゴリズムを参照)。以下のオプションがあります。
'monotone' (既定の設定)
'predictor-corrector'
このオプションは、ソルバーの速度と収束性に影響が及びますが、その影響の予測は困難です。 |
ConstraintTolerance | 制約違反に関する許容誤差 (正のスカラー)。既定値は 1e-6 です。詳細については、許容誤差と停止条件を参照してください。 optimset の場合、名前は TolCon です。詳細については、新旧のオプション名を参照してください。
|
InitBarrierParam | 初期境界値 (正のスカラー)。既定の 0.1 より大きい値を試すのに役立つ場合があります。特に、目的関数や制約関数が大きい場合役立ちます。 |
SpecifyConstraintGradient | ユーザーにより定義される非線形制約関数に対する勾配。既定の false に設定すると、lsqcurvefit は有限差分の非線形制約の勾配を推定します。nonlcon で説明するように、lsqcurvefit は、true に設定されると、制約関数が 4 つの出力をもつことを期待します。 optimset の場合、名前は GradConstr で、値は 'on' または 'off' です。詳細については、新旧のオプション名を参照してください。
|
SubproblemAlgorithm | 反復ステップの計算方法を定義します。'cg' は密なヘッシアンをもつ大規模な問題より高速に解ける可能性がありますが、既定の 'factorization' は一般に 'cg' (共役勾配) より高速になります。詳細については、fmincon の内点法アルゴリズムを参照してください。 optimset の場合、値は 'cg' および 'ldl-factorization' です。詳細については、新旧のオプション名を参照してください。
|