Main Content

optimset

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

説明

MATLAB® ソルバーのオプション構造体を作成または変更します。

メモ

fzerofminbndfminsearch、および lsqnonneg を除くすべてのソルバーには、optimset の代わりに optimoptions の使用を推奨します。

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 contains an object of type line.

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);

'optimplotfval' プロット関数と、TolX の値として 1e-6 を使用するために、oldopts のオプションを変更します。

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 の値を返すと、ソルバーはエラーを表示します。

FunValCheckfminbndfminsearch、および fzero で使用できます。

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

データ型: char | string

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

MaxFunEvalsfminbndfminsearch で使用できます。

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

データ型: single | double

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

MaxIterfminbndfminsearch で使用できます。

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

データ型: single | double

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

OutputFcnfminbndfminsearch、および fzero で使用できます。

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

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

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

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

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

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

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

PlotFcnsfminbndfminsearch、および fzero で使用できます。

例: 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('TolFun',2e-6)

データ型: single | double

出力引数

すべて折りたたむ

最適化オプション。構造体として返されます。設定しなかったパラメーターは、返される値が [] となります。その結果、ソルバーはこれらのパラメーターの既定値を使用します。

制限

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

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

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

拡張機能

バージョン履歴

R2006a より前に導入