最適化オプションの設定
オプションの設定方法
関数 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
のオプション出力です。