ドキュメンテーション

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

終了フラグと終了メッセージ

終了フラグ

最適化ソルバーがそのタスクを完了すると、終了フラグが設定されます。終了フラグは、ソルバーがその反復を停止した理由を示す整数のコードです。一般的に以下のようになります。

  • 正の終了フラグは結果が適切であることを意味します。

  • 負の終了フラグは結果が適切でないことを意味します。

  • 0 個の終了フラグは反復制限または関数評価数の制限を超えることにより停止させられたソルバーに対応します (反復と関数計算回数および許容誤差と停止条件を参照)。

ソルバーの関数リファレンス節にあるソルバー出力表は、各ソルバーの終了フラグの意味を一覧表示します。

    メモ:    終了フラグは解の質への絶対に間違いのないガイドではありません。許容誤差設定などの他の多くの要因によって、満足できる解かどうかに影響する可能性があります。ソルバーが満足できる答えを返すかどうかを判断するのはユーザー自身です。負の終了フラグが「不適切な」解であるとは限りません。同様に、正の終了フラグが「適切な」解であるとも限りません。

exitflag 構文でソルバーを呼び出すことにより、終了フラグを取得します。この構文はソルバーにより異なります。詳細は、ソルバー関数のリファレンス ページを参照してください。たとえば、fsolve の場合、終了フラグを取得するための呼び出し構文は以下のとおりです。

[x,fval,exitflag] = fsolve(...)

以下の例は、この構文を使用しています。非線形方程式のシステムを解くことにしましょう。

2x1x2=ex1x1+2x2=ex2.

解における 0 ベクトルをもたらす無名関数として、これらの方程式を記述します。

myfcn = @(x)[2*x(1) - x(2) - exp(-x(1));
      -x(1) + 2*x(2) - exp(-x(2))];

fsolveexitflag 構文により初期点 [-5 -5] で呼び出します。

[xfinal fval exitflag] = fsolve(myfcn,[-5 -5])

Equation solved.

fsolve completed because the vector of function values is near 
zero as measured by the default value of the function tolerance, 
and the problem appears regular as measured by the gradient.

xfinal =
    0.5671    0.5671

fval =
  1.0e-006 *
   -0.4059
   -0.4059

exitflag =
     1

出力引数にある fsolve の表で、終了フラグ値 1 とは「解 x に収束される関数」という意味です。つまり、fsolve は、myfcnx = [0.5671 0.5671] においてほぼ 0 であることを示します。

終了メッセージ

各ソルバーは、反復の終了時にメッセージを MATLAB® のコマンド ウィンドウに発行します。このメッセージは、ソルバーが停止した理由を簡単に説明します。メッセージは終了フラグよりも詳しい説明を与えます。

本書の多くの例は終了メッセージを示します。たとえば、コマンド ラインでの最小化または手順 2: 制約なし最適化ルーチンの 1 つを呼び出します。を参照してください。前節終了フラグの例は、以下の終了メッセージを示します。

Equation solved.

fsolve completed because the vector of function values is near 
zero as measured by the default value of the function tolerance, 
and the problem appears regular as measured by the gradient.

このメッセージは終了フラグより有益です。メッセージは、勾配が適切であることを示します。また、メッセージは、関数許容誤差が関数値のベクトルを制御して、fsolve に対して必ず 0 の近傍になるようにし、解が完了したとみなすことを記述します。

より詳細な終了メッセージ

ソルバーによっては、詳細な情報のリンクを含む終了メッセージをもつものがあります。リンクには以下の 2 種類があります。

  • 語句のリンク。このリンクをクリックするとウィンドウが開き、用語の定義を表示するか、他の情報を与えます。新しいウィンドウは、より詳細な情報用のヘルプ ブラウザー ドキュメンテーションへのリンクを含むことがあります。

  • 表示の最終行として <stopping criteria details> を示すリンク。このリンクをクリックすると、MATLAB はソルバーが停止した理由についての詳細情報を表示します。

fminunc ソルバーはより詳細な終了メッセージをもちます。

opts = optimoptions(@fminunc,'Algorithm','quasi-newton'); % 'trust-region' needs gradient
[xfinal fval exitflag] = fminunc(@sin,0,opts)

以下の結果が生成されます。

下線付きの語句ごとに、より多くの情報を提供するリンクが含まれます。

  • <stopping criteria details> リンクは、以下を MATLAB コマンド ラインに表示します。

    Optimization completed: The first-order optimality measure, 0.000000e+000, is less 
    than the default value of options.TolFun = 1.000000e-006.
    
    Optimization Metric                                       User Options
    relative norm(gradient) =  0.00e+000                  TolFun =  1e-006 (default)
  • 他のリンクは用語の定義をもつヘルプ ウィンドウを表示します。たとえば、Local minimum found リンクをクリックすると、以下のウィンドウが開きます。

    first-order optimality measure 展開リンクをクリックすると、fminunc の 1 次の最適性の尺度の定義が表示されます。

    展開リンクは、同じウィンドウ内でより詳細な情報を取得する方法です。first-order optimality measure 展開リンクを再度クリックすると、定義が閉じます。

  • 他のリンクはヘルプ ビューアーを開きます。

終了メッセージのオプション

Display オプションを設定して、終了メッセージと反復表示の両方の外観を変更します。詳細は、反復表示を参照してください。以下の表は Display オプションのさまざまな設定の効果を示します。

Display オプションの値コマンド ウィンドウへの出力
終了メッセージ反復表示
'none'、または同義の 'off'なしなし
'final' (大部分のソルバーでは既定の設定)既定の設定なし
'final-detailed'詳細なし
'iter'既定の設定はい
'iter-detailed'詳細はい
'notify'exitflag ≤ 0 の場合にのみ既定の設定なし
'notify-detailed'exitflag ≤ 0 の場合にのみ詳細を表示なし

たとえば、

opts = optimoptions(@fminunc,'Display','iter-detailed','Algorithm','quasi-newton');
[xfinal fval] = fminunc(@cos,1,opts);

は、以下を表示します。

この情報は役に立ちましたか?