ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

反復表示

はじめに

反復表示とは、ソルバーの各反復における計算を示す統計表です。統計はソルバーとソルバー アルゴリズムの両方によって異なります。反復の詳細については、反復と関数計算回数を参照してください。この表は、ソルバーを適切なオプションで実行した際に MATLAB® コマンド ウィンドウに表示されます。

反復表示を開くには、optimoptions を使用し、Display オプションを 'iter' または 'iter-detailed' に設定してオプションを作成します。以下に例を示します。

options = optimoptions(@fminunc,'Display','iter','Algorithm','quasi-newton');
[x fval exitflag output] = fminunc(@sin,0,options);
                                                  First-order 
Iteration  Func-count     f(x)       Step-size     optimality
    0           2              0                           1
    1           4      -0.841471             1          0.54 
    2           8             -1      0.484797      0.000993 
    3          10             -1             1     5.62e-005 
    4          12             -1             1             0 

Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.

最適化アプリを使用して反復表示を取得することもできます。[コマンド ウィンドウに表示]、[表示レベル][各反復] または [各反復と詳細メッセージを表示] を選択します。

反復表示は、次のものを除くすべてのソルバーで使用できます。

  • lsqlin 'trust-region-reflective' アルゴリズム

  • lsqnonneg

  • quadprog 'trust-region-reflective' アルゴリズム

一般的な見出し

以下の表は、反復表示における一般的な見出しの一部を示しています。

見出し表示される情報

f(x) または Fval

現在の目的関数値です。fsolve の場合、関数値ベクトルのノルムの 2 乗です。

First-order optimality

1 次の最適性の尺度です。1 次の最適性の尺度 を参照してください。

Func-count または F-count

関数評価の回数です。反復と関数計算回数 を参照してください。

Iteration または Iter

反復回数です。反復と関数計算回数 を参照してください。

Norm of step

現在のステップのサイズ (サイズはユークリッド ノルムまたは 2 ノルム) です。'trust-region' アルゴリズムまたは 'trust-region-reflective' アルゴリズムでは、制約がある場合、Norm of stepD*s のノルムになります。ここで s はステップ、D は対角スケーリング行列であり、アルゴリズムの説明で信頼領域の部分問題のセクションに記述されています。

関数特有の見出し

以下の節では、使用する最適化関数によって意味が異なる、反復表示の見出しを説明します。

fgoalattain、fmincon、fminimax、fseminf

以下の表は、fgoalattainfminconfminimaxfseminf に特有の見出しを示します。

fgoalattain、fmincon、fminimax、fseminf の見出し表示される情報

Attainment factor

fgoalattain の到達因子の値です。

CG-iterations

現在の反復に用いられる共役勾配法の反復数です (前処理付き共役勾配法を参照)。

Directional derivative

探索方向に沿った目的関数の勾配です。

Feasibility

最大制約違反。ここで満たされる不等式制約の数は 0 です。

Line search steplength

探索方向をスケールする乗法係数です (式 29を参照)。

Max constraint

すべての制約 (内部で作成された制約とユーザー指定の制約の両方) の最大違反です。制約がない場合は、負になる場合もあります。

Objective value

fminimax のミニマックス問題を変更した非線形計画法の目的関数値です。

Procedure

ヘッシアンの更新手順:

  • Infeasible start point

  • Hessian not updated

  • Hessian modified

  • Hessian modified twice

詳細は、ヘッセ行列の更新を参照してください。

QP 部分問題の手順:

  • dependent — ソルバーによって検出または削除された、依存する (冗長な) 等式制約があります。

  • Infeasible — 線形化された制約をもつ QP 部分問題は実行不可能です。

  • Overly constrained — 線形化された制約をもつ QP 部分問題は実行不可能です。

  • Unbounded — QP 部分問題は大きな負の曲率で実行可能です。

  • Ill-posed — QP 部分問題の探索方向が小さすぎます。

  • Unreliable — QP 部分問題が悪条件になっているようです。

Steplength

探索方向をスケールする乗法係数です (式 29を参照)。

Trust-region radius

現在の信頼領域の半径です。

fminbnd と fzero

以下の表は、fminbndfzero に特有の見出しを示します。

fminbnd または fzero の見出し表示される情報

Procedure

fminbnd の処理は以下になります。

  • initial

  • golden (黄金分割探索)

  • parabolic (放物線内挿法)

fzero の処理は以下になります。

  • initial (初期点)

  • search (ゼロを含む区間の探索)

  • bisection

  • interpolation (線形内挿または逆二次内挿)

x

アルゴリズムの現在点です。

fminsearch

以下の表は、fminsearch に特有の見出しを示します。

fminsearch の見出し表示される情報

min f(x)

現在のシンプレックスの最小関数値です。

Procedure

現在の反復でのシンプレックス処理です。手順は次のとおりです。

  • initial simplex

  • expand

  • reflect

  • shrink

  • contract inside

  • contract outside

詳細は、fminsearch アルゴリズムを参照してください。

fminunc

以下の表は、fminunc に特有の見出しを示します。

fminunc の見出し表示される情報

CG-iterations

現在の反復に用いられる共役勾配法の反復数です (前処理付き共役勾配法を参照)。

Line search steplength

探索方向をスケールする乗法係数です (式 11を参照)。

fminunc'quasi-newton' アルゴリズムは、skipped update メッセージを First-order optimality 列の右側に発行することがあります。このメッセージは、結果の行列が正定ではなかったため、fminunc はヘッシアンの推定を更新しなかったことを意味します。通常、このメッセージは現在の点における目的関数が滑らかでないことを示します。

fsolve

以下の表は、fsolve に特有の見出しを示します。

fsolve の見出し表示される情報

Directional derivative

探索方向に沿った関数の勾配です。

Lambda

λk の値。次で定義されています。 レーベンバーグ・マルカート法

Residual

関数の残差 (二乗和) です。

Trust-region radius

現在の信頼領域の半径 (信頼領域の半径のノルム変位) です。

intlinprog

以下の表は、intlinprog に特有の見出しを示します。

intlinprog の見出し表示される情報

nodes explored

探索されたノードの累積数です。

total time (s)

intlinprog を開始してからの時間 (秒単位) です。

num int solution

検出された整数実行可能点の数です。

integer fval

検出された最良の整数実行可能点に対する目的関数値です。これは目的関数の最終値の上限です。

relative gap (%)

100(ba)|b|+1,

ここで、

  • b は最良の整数実行可能点の目的関数値です。

  • a は目的関数値の最良の下限です。

メモ

RelativeGapTolerance を 10 進数として指定すると、反復表示と output.relativegap はそのギャップをパーセントでレポートします。これは、測定された相対ギャップの 100 倍であることを意味します。終了メッセージが相対ギャップを示している場合、この値は測定された相対ギャップで、割合ではありません。

linprog

以下の表は、linprog に特有の見出しを示します。各アルゴリズムには独自の反復表示があります。

linprog の見出し表示される情報

Primal Infeas A*x-b または Primal Infeas

主問題の実行不可能性です。制約違反の尺度は、解においてゼロになります。

定義については、予測子修正子 ('interior-point')、メイン アルゴリズム ('interior-point-legacy') または双対シンプレックス法アルゴリズムを参照してください。

Dual Infeas A'*y+z-w-f または Dual Infeas

双対問題の実行不可能性です。ラグランジュ関数の導関数の尺度は、解においてゼロになります。

ラグランジュ関数の定義については、予測子修正子を参照してください。双対問題の実行不可能性の定義については、予測子修正子 ('interior-point')、メイン アルゴリズム ('interior-point-legacy') または双対シンプレックス法アルゴリズムを参照してください。

Upper Bounds {x}+s-ub

実行可能上限。{x} は、有限の上限があるそれらの x を意味します。これは、レガシ内点線形計画法における ru 残差です。

Duality Gap x'*z+s'*w

主目的関数と双対目的関数間の双対性ギャップです (レガシ内点線形計画法を参照)。sw は有限な上限がある場合のみこの式に使用されます。

Total Rel Error

メイン アルゴリズム の終わりに記述されている合計相対誤差です。

Complementarity

ラグランジュ乗数の尺度と範囲からの距離の積で、解においてゼロになります。停止条件の変数 rc を参照してください。

Time

linprog の実行時間 (秒)。

lsqlin

lsqlin'interior-point' 反復表示は、quadprog 反復表示から継承されます。これらの関数の関係は、内点線形最小二乗法で説明されています。反復表示の詳細は、quadprog を参照してください。

lsqnonlin と lsqcurvefit

以下の表は、lsqnonlinlsqcurvefit に特有の見出しを示します。

lsqnonlin または lsqcurvefit の見出し表示される情報

Directional derivative

探索方向に沿った関数の勾配です。

Lambda

λk の値。次で定義されています。 レーベンバーグ・マルカート法

Resnorm

x における残差の 2 乗ノルム値です。

Residual

関数の残差ベクトルです。

quadprog

以下の表は、quadprog に特有の見出しを示します。'interior-point-convex' アルゴリズムにのみ反復表示があります。

quadprog の見出し表示される情報

Primal Infeas

主問題の実行不可能性。max( norm(Aeq*x - beq, inf), abs(min(0, min(A*x-b))) ) と定義されます。

Dual Infeas

双対問題の実行不可能性。norm(H*x + f - A*lambda_ineqlin - Aeq*lambda_eqlin, inf) と定義されます。

Complementarity

非アクティブな不等式のラグランジュ乗数の最大絶対値の尺度。解においてゼロになります。この数量は、実行不可能性の検出における g です。