optimset
最適化オプション構造体の作成または変更
構文
説明
は 1 つ以上の名前と値のペアの引数を使用して指定したパラメーター セットで options
= optimset(Name,Value
)options
を返します。
optimset
(入力引数または出力引数なし) はすべてのパラメーターとその有効な値の一覧を表示します。
(入力引数なし) は、すべてのパラメーターが options
= optimset[]
に設定されるオプション構造体 options
を作成します。
は options
= optimset(oldopts
,Name,Value
)oldopts
のコピーを作成し、1 つ以上の名前と値のペアの引数を使用して指定したパラメーターを変更します。
例
既定以外のオプションの作成
プロット関数と既定よりも厳しい停止条件を使用する 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)
x = 1×2
1.0000 1.0000
fval = 4.7305e-16
ソルバーの既定オプションの作成
fzero
ソルバーの既定のオプションを含む構造体を作成します。
options = optimset('fzero');
fzero
の TolX
オプションの既定値を表示します。
tol = options.TolX
tol = 2.2204e-16
オプションの変更
関数の許容誤差 1e-6
を使用するオプションを設定します。
oldopts = optimset('TolFun',1e-6);
oldopts
でオプションを変更し、プロット関数 'optimplotfval'
と 1e-6
の TolX
を使用します。
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);
oldopts
と newopts
の両方は、Display
オプションの値を設定します。newopts
がこのオプションの oldopts
を上書きすることを確認します。
options.Display
ans = 'off'
その他 2 つのオプションの値を確認します。
options.TolX
ans = 1.0000e-06
options.PlotFcns
ans = 'optimplotfval'
入力引数
optimfun
— 最適化ソルバー
名前 | 関数ハンドル
最適化ソルバー。名前または関数ハンドルとして指定します。返されたオプション構造体には、指定したソルバーのみ空ではないエントリがあります。
例: options = optimset('fzero')
例: options = optimset(@fminsearch)
データ型: char
| string
| function_handle
oldopts
— 前の最適化オプション
構造体
前の最適化オプション。構造体として指定します。出力 options
は、指定したパラメーターを除いて oldopts
と同じです。
例: options = optimset(oldopts,'TolX',1e-6)
データ型: struct
newopts
— 新しい最適化オプション
構造体
新しい最適化オプション。構造体として指定します。出力 options
は newopts
と同じであり、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'
表示のレベル。'Display' の値と次のいずれかの値で構成されるコンマ区切りのペアとして指定します。
'notify'
— 関数が収束しない場合にのみ出力を表示します。'final'
— 最終出力のみを表示します。'off'
または'none'
— 出力を表示しません。'iter'
— 各反復の出力を表示します (lsqnonneg
では使用できません)。
Display
はすべての最適化ソルバーで使用できます。
例: options = optimset('Display','iter')
データ型: char
| string
FunValCheck
— 関数値が正しいかどうか確認するフラグ
'off'
(既定値) | 'on'
関数値が正しいかどうか確認するフラグ。'FunValCheck'
および 'off'
または 'on'
の値で構成されるコンマ区切りのペアとして指定します。値が 'on'
の場合、ソルバーは、目的関数が返す値が複素数または NaN
である場合にエラーを表示します。
FunValCheck
は fminbnd
、fminsearch
、fzero
で使用できます。
例: options = optimset('FunValCheck','on')
データ型: char
| string
MaxFunEvals
— 関数評価の最大回数
fminbnd
の 500
、fminsearch
の 200*(number of variables)
(既定値) | 正の整数
関数評価の最大回数。'MaxFunEvals'
と正の整数で構成されるコンマ区切りのペアとして指定します。
MaxFunEvals
は fminbnd
と fminsearch
で使用できます。
例: options = optimset('MaxFunEvals',2e3)
データ型: single
| double
MaxIter
— 最大反復回数
fminbnd
の 500
、fminsearch
の 200*(number of variables)
(既定値) | 正の整数
最大反復回数。'MaxIter'
と正の整数で構成されるコンマ区切りのペアとして指定します。
MaxIter
は fminbnd
と fminsearch
で使用できます。
例: options = optimset('MaxIter',2e3)
データ型: single
| double
OutputFcn
— 出力関数
[]
(既定値) | 関数名 | 関数ハンドル | 関数ハンドルの cell 配列
出力関数。'OutputFcn'
と関数名または関数ハンドルで構成されるコンマ区切りのペアとして指定します。複数の出力関数を関数ハンドルの cell 配列として指定します。出力関数は各反復の後に実行され、解法プロセスを監視したり、反復を停止したりできます。詳細については、最適化ソルバーの出力関数を参照してください。
OutputFcn
は fminbnd
、fminsearch
、fzero
で使用できます。
例: options = optimset('OutputFcn',{@outfun1,@outfun2})
データ型: char
| string
| cell
| function_handle
PlotFcns
— プロット関数
[]
(既定値) | 関数名 | 関数ハンドル | 関数ハンドルの cell 配列
プロット関数。 'PlotFcns'
と関数名または関数ハンドルで構成されるコンマ区切りのペアとして指定します。複数のプロット関数を関数ハンドルの cell 配列として指定します。プロット関数は各反復の後に実行され、解法プロセスを監視したり、反復を停止したりできます。詳細については、最適化ソルバーのプロット関数を参照してください。
組み込みのプロット関数は以下のとおりです。
@optimplotx
は現在の点をプロットします。@optimplotfval
は関数値をプロットします。@optimplotfunccount
は関数計算をプロットします (関数fzero
では使用できません)。
PlotFcns
は fminbnd
、fminsearch
、fzero
で使用できます。
例: options = optimset('PlotFcns','optimplotfval')
データ型: char
| string
| cell
| function_handle
TolFun
— 関数値の終了許容誤差
1e-4
(既定値) | 非負のスカラー
関数値の終了許容誤差。'TolFun'
と非負のスカラーで構成されるコンマ区切りのペアとして指定します。初期関数値を基準として、現在の関数値と前の値の差が TolFun
未満になると反復が終了します。許容誤差と停止条件を参照してください。
TolFun
は fminsearch
でのみ使用できます。
例: options = optimset('TolFun',2e-6)
データ型: single
| double
TolX
— 現在点 x
に対する終了許容誤差。
fminbnd
と fminsearch
の 1e-4
、fzero
の eps
、lsqnonneg
の 10*eps*norm(c,1)*length(c)
(既定値) | 非負のスカラー
現在点 x
に対する終了許容誤差。'TolX'
と非負のスカラーで構成されるコンマ区切りのペアとして指定します。x
のサイズを基準として、現在の点と前の点の差が TolX
未満になると反復が終了します。許容誤差と停止条件を参照してください。
TolX
はすべてのソルバーで使用できます。
例: options = optimset('TolFun',2e-6)
データ型: single
| double
出力引数
options
— 最適化オプション
構造体
最適化オプション。構造体として返されます。設定されていないパラメーターの値は []
であり、これによってソルバーはこれらのパラメーターの既定値を使用します。
制限
optimset
は、4 つの MATLAB® 最適化ソルバー (fminbnd
、fminsearch
、fzero
、lsqnonneg
) のオプションを設定します。Optimization Toolbox™ または Global Optimization Toolbox ソルバーのオプションを設定する場合、推奨される関数はoptimoptions
(Optimization Toolbox) です。optimset
は、intlinprog
など一部の Optimization Toolbox ソルバーのオプションは設定できません。代わりにoptimoptions
(Optimization Toolbox) を使用してください。optimset
は Global Optimization Toolbox ソルバーのほとんどのオプションを設定できません。代わりにoptimoptions
(Optimization Toolbox) を使用してください。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
コード生成では、入力引数または出力引数をとらない構文はサポートしません。
optimset
options
で指定する関数は、コード生成でサポートされていなければなりません。入力引数
optimfun
は、コード生成でサポートされている関数でなければなりません。オプション構造体
oldopts
のフィールドは固定サイズ フィールドでなければなりません。コード生成では
Display
オプションは無視されます。コード生成では、Optimization Toolbox の関数
optimset
で作成されたオプション構造体で追加のオプションがサポートされません。入力オプション構造体に追加の Optimization Toolbox オプションが含まれる場合、出力構造体にそれらのオプションは含まれません。
スレッドベースの環境
MATLAB® backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ のThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、Run MATLAB Functions in Thread-Based Environmentを参照してください。
バージョン履歴
参考
optimget
| fminbnd
| fminsearch
| fzero
| lsqnonneg
| optimoptions
(Optimization Toolbox)
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)