Main Content

optimset

最適化オプション構造体の作成または変更

説明

options = optimset(Name,Value) は 1 つ以上の名前と値のペアの引数を使用して指定したパラメーター セットで options を返します。

optimset (入力引数または出力引数なし) はすべてのパラメーターとその有効な値の一覧を表示します。

options = optimset (入力引数なし) は、すべてのパラメーターが [] に設定されるオプション構造体 options を作成します。

options = optimset(optimfun) は、最適化関数 optimfun に関連するすべてのパラメーター名とその既定値をもつ options を作成します。

options = optimset(oldopts,Name,Value)oldopts のコピーを作成し、1 つ以上の名前と値のペアの引数を使用して指定したパラメーターを変更します。

options = optimset(oldopts,newopts) は、既存のオプション構造体 oldopts と、新しいオプション構造体 newopts を組み合わせます。空でない値をもつ newopts のパラメーターは、oldopts の対応するパラメーターに上書きされます。

すべて折りたたむ

プロット関数と既定よりも厳しい停止条件を使用する fminsearch のオプションを設定します。

options = optimset('PlotFcns','optimplotfval','TolX',1e-7);

点 (–1,2) から開始する Rosenbrock 関数を最小化し、このオプションを使用して最小化プロセスを監視します。Rosenbrock 関数は点で (1,1) で最小値 0 になります。

fun = @(x)100*((x(2) - x(1)^2)^2) + (1 - x(1))^2; % Rosenbrock's function
x0 = [-1,2];
[x,fval] = fminsearch(fun,x0,options)

Figure Optimization Plot Function contains an axes object. The axes object with title Current Function Value: 4.73054e-16, xlabel Iteration, ylabel Function value contains an object of type scatter.

x = 1×2

    1.0000    1.0000

fval = 4.7305e-16

fzero ソルバーの既定のオプションを含む構造体を作成します。

options = optimset('fzero');

fzeroTolX オプションの既定値を表示します。

tol = options.TolX
tol = 2.2204e-16

関数の許容誤差 1e-6 を使用するオプションを設定します。

oldopts = optimset('TolFun',1e-6);

oldopts でオプションを変更し、プロット関数 'optimplotfval'1e-6TolX を使用します。

options = optimset(oldopts,'PlotFcns','optimplotfval','TolX',1e-6);

設定した 3 つのオプションを表示します。

disp(options.TolFun);
   1.0000e-06
disp(options.PlotFcns);
optimplotfval
disp(options.TolX);
   1.0000e-06

optimset を使用して、あるオプション構造体の対応する部分を別のオプション構造体で上書きします。

oldopts = optimset('Display','iter','TolX',1e-6);
newopts = optimset('PlotFcns','optimplotfval','Display','off');
options = optimset(oldopts,newopts);

oldoptsnewopts の両方は、Display オプションの値を設定します。newopts がこのオプションの oldopts を上書きすることを確認します。

options.Display
ans = 
'off'

その他 2 つのオプションの値を確認します。

options.TolX
ans = 1.0000e-06
options.PlotFcns
ans = 
'optimplotfval'

入力引数

すべて折りたたむ

最適化ソルバー。名前または関数ハンドルとして指定します。返されたオプション構造体には、指定したソルバーのみ空ではないエントリがあります。

例: options = optimset('fzero')

例: options = optimset(@fminsearch)

データ型: char | string | function_handle

前の最適化オプション。構造体として指定します。出力 options は、指定したパラメーターを除いて oldopts と同じです。

例: options = optimset(oldopts,'TolX',1e-6)

データ型: struct

新しい最適化オプション。構造体として指定します。出力 optionsnewopts と同じであり、newopts で空である oldopts の空でないパラメーターも含まれています。

例: options = optimset(oldopts,newopts)

データ型: struct

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: options = optimset('TolX',1e-6,'PlotFcns',@optimplotfval)

オプション名は先頭から一意に判別できる文字までを入力すれば十分です。optimset では、オプション名の大文字と小文字は区別されません。

表示のレベル。'Display' の値と次のいずれかの値で構成されるコンマ区切りのペアとして指定します。

  • 'notify' — 関数が収束しない場合にのみ出力を表示します。

  • 'final' — 最終出力のみを表示します。

  • 'off' または 'none' — 出力を表示しません。

  • 'iter' — 各反復の出力を表示します (lsqnonneg では使用できません)。

Display はすべての最適化ソルバーで使用できます。

例: options = optimset('Display','iter')

データ型: char | string

関数値が正しいかどうか確認するフラグ。'FunValCheck' および 'off' または 'on' の値で構成されるコンマ区切りのペアとして指定します。値が 'on' の場合、ソルバーは、目的関数が返す値が複素数または NaN である場合にエラーを表示します。

FunValCheckfminbndfminsearchfzero で使用できます。

例: options = optimset('FunValCheck','on')

データ型: char | string

関数評価の最大回数。'MaxFunEvals' と正の整数で構成されるコンマ区切りのペアとして指定します。

MaxFunEvalsfminbndfminsearch で使用できます。

例: options = optimset('MaxFunEvals',2e3)

データ型: single | double

最大反復回数。'MaxIter' と正の整数で構成されるコンマ区切りのペアとして指定します。

MaxIterfminbndfminsearch で使用できます。

例: options = optimset('MaxIter',2e3)

データ型: single | double

出力関数。'OutputFcn' と関数名または関数ハンドルで構成されるコンマ区切りのペアとして指定します。複数の出力関数を関数ハンドルの cell 配列として指定します。出力関数は各反復の後に実行され、解法プロセスを監視したり、反復を停止したりできます。詳細については、最適化ソルバーの出力関数を参照してください。

OutputFcnfminbndfminsearchfzero で使用できます。

例: options = optimset('OutputFcn',{@outfun1,@outfun2})

データ型: char | string | cell | function_handle

プロット関数。 'PlotFcns' と関数名または関数ハンドルで構成されるコンマ区切りのペアとして指定します。複数のプロット関数を関数ハンドルの cell 配列として指定します。プロット関数は各反復の後に実行され、解法プロセスを監視したり、反復を停止したりできます。詳細については、最適化ソルバーのプロット関数を参照してください。

組み込みのプロット関数は以下のとおりです。

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

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

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

PlotFcnsfminbndfminsearchfzero で使用できます。

例: options = optimset('PlotFcns','optimplotfval')

データ型: char | string | cell | function_handle

関数値の終了許容誤差。'TolFun' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。初期関数値を基準として、現在の関数値と前の値の差が TolFun 未満になると反復が終了します。許容誤差と停止条件を参照してください。

TolFunfminsearch でのみ使用できます。

例: options = optimset('TolFun',2e-6)

データ型: single | double

現在点 x に対する終了許容誤差。'TolX' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。x のサイズを基準として、現在の点と前の点の差が TolX 未満になると反復が終了します。許容誤差と停止条件を参照してください。

TolX はすべてのソルバーで使用できます。

例: options = optimset('TolX',2e-6)

データ型: single | double

出力引数

すべて折りたたむ

最適化オプション。構造体として返されます。設定されていないパラメーターの値は [] であり、これによってソルバーはこれらのパラメーターの既定値を使用します。

制限

  • optimset は、4 つの MATLAB® 最適化ソルバー (fminbndfminsearchfzerolsqnonneg) のオプションを設定します。Optimization Toolbox™ または Global Optimization Toolbox ソルバーのオプションを設定する場合、推奨される関数は optimoptions (Optimization Toolbox) です。

  • optimset は、intlinprog など一部の Optimization Toolbox ソルバーのオプションは設定できません。代わりに optimoptions (Optimization Toolbox) を使用してください。

  • optimsetGlobal Optimization Toolbox ソルバーのほとんどのオプションを設定できません。代わりに optimoptions (Optimization Toolbox) を使用してください。

拡張機能

バージョン履歴

R2006a より前に導入