最適化オプションの設定
オプションの設定方法
関数 optimset を使用して options 構造体を作成することで、最適化パラメーターを指定できます。options 構造体は、最適化関数に入力します。たとえば、次の構文により関数 fminbnd を呼び出して、最適化関数の入力に渡すことができます。
x = fminbnd(fun,x1,x2,options)
または関数 fminsearch を次の構文により呼び出します。
x = fminsearch(fun,x0,options)
たとえば、アルゴリズムの各反復の出力を表示するには、次のようにして Display オプションを 'iter' に設定します。
options = optimset('Display','iter');
オプションの表
| オプション | 説明 | ソルバー |
|---|---|---|
| 中間ステップを画面に表示するかどうかを指定するフラグ。
| fminbnd, fminsearch, fzero, lsqnonneg |
| 目的関数値が正しいかどうかチェックします。
| fminbnd, fminsearch, fzero |
| 可能な関数評価の最大回数。既定値は関数 | fminbnd, fminsearch |
| 許容される最大反復回数。既定値は関数 | fminbnd, fminsearch |
| ソルバーの各反復回数の情報を表示します。既定は | fminbnd, fminsearch, fzero |
| ソルバーの各反復回数の情報をプロットします。既定は | fminbnd, fminsearch, fzero |
| 関数値の終了許容誤差。既定値は | fminsearch |
| x の終了許容誤差。既定値は | fminbnd, fminsearch, fzero, lsqnonneg |
許容誤差と停止条件
最適化の反復数はソルバーの "停止条件" に依存します。これらの条件には、自分で設定できるいくつかの "許容誤差" があります。許容誤差は、一般的に、それを超えた場合にソルバーの反復を停止するしきい値です。
ヒント
一般的に、TolFun と TolX の許容誤差は eps よりもかなり高く設定し、通常は 1e-14 を上回るように設定します。許容誤差を小さく設定することで、正確な結果が得られるとは限りません。ソルバーで収束が認識されず、無意味な反復が繰り返される可能性があります。許容誤差の値を eps より小さくすると、停止条件が実質的に無効になります。このヒントは、TolX の既定値 eps を使用する fzero には適用されません。
TolXはステップ サイズの下限であり、(xi – xi+1) のノルムを示します。ソルバーの試行するステップがTolXより小さくなると、反復は終了します。ソルバーは一般的にTolXを "相対" 範囲として使用します。この場合、|(xi – xi+1)| <TolX*(1 + |xi|) または類似の相対尺度が満たされると反復が終了します。
TolFunはステップ間の目的関数値の変位の下限です。|f(xi) – f(xi+1)| <TolFunの場合に反復は終了します。ソルバーは一般的にTolFunを "相対" 範囲として使用します。この場合、|f(xi) – f(xi+1)| <TolFun(1 + |f(xi)|) または類似の相対尺度が満たされると反復が終了します。MaxIterは、ソルバー反復回数に関する範囲です。MaxFunEvalsは、関数評価回数に関する範囲です。
メモ
他のソルバーとは異なり、fminsearch は TolFun と TolX の "両方" を満たすと停止します。
Output 構造体
output 構造体には、関数評価回数、反復回数、アルゴリズムが含まれています。次のように、fminbnd、fminsearch または fzero に 4 番目の出力引数を指定すると、構造体が表示されます。
[x,fval,exitflag,output] = fminbnd(@humps,0.3,1);
各ソルバーの output 構造体の詳細については、関数リファレンス ページを参照してください。
output 構造体は optimset で選択するオプションではありません。この構造体は、fminbnd、fminsearch および fzero のオプション出力です。