Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

最適化ソルバーのプロット関数

プロット関数とは

options 構造体の PlotFcns フィールドは最適化関数が呼び出す 1 つ以上の関数を指定します。これらの関数は進行状況を示すさまざまな測定値をプロットするために各反復で呼び出されます。関数ハンドル、または関数ハンドルの cell 配列を渡します。プロット関数の構造は出力関数の構造と同じです。この構造の詳細は、最適化ソルバーの出力関数を参照してください。

次の MATLAB® 最適化関数では、PlotFcns オプションを使用できます。

これらの最適化関数に対する事前定義されたプロット関数には次のものがあります。

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

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

  • @optimplotfunccount は関数計算をプロットします (関数 fzero では使用できません)。

事前定義されたプロット関数を表示または変更するには、MATLAB エディターで関数ファイルを開きます。たとえば、現在の点をプロットするために関数ファイルを表示するには、以下のように入力します。

edit optimplotx.m

例: プロット関数

プロット関数 @optimplotfval と共に関数 fminsearch を使用して最小化の進捗状況を表示します。

  1. 目的関数のファイルを記述します。たとえば、次のように使用します。

    function f = onehump(x)
    
    r = x(1)^2 + x(2)^2;
    s = exp(-r);
    f = x(1)*s+r/20;
  2. プロット関数を使用するためのオプションを設定します。

    options = optimset('PlotFcns',@optimplotfval);
  3. 関数 fminsearch を [2,1] から開始して呼び出します。

    [x ffinal] = fminsearch(@onehump,[2,1],options)
  4. MATLAB は、以下を返します。

    x =
       -0.6691    0.0000
    
    ffinal =
       -0.4052

    As the iterations proceed, the function value first decreases, then becomes constant.

関連するトピック