このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
許容誤差と停止条件
最適化の反復数はソルバーの "停止条件" に依存します。これらの条件には、自分で設定できるいくつかの "許容誤差" があります。許容誤差は、一般的に、それを超えた場合にソルバーの反復を停止するしきい値です。
オプションの設定と変更で説明するように、optimoptions
を使用して、許容誤差と他の基準を設定します。
ヒント
一般的に、OptimalityTolerance
や StepTolerance
などの許容誤差は eps
をかなり上回り、通常は 1e-14
を上回るように設定します。許容誤差を小さく設定すると、正確な結果が常に得られるとは限りません。ソルバーで収束が認識されず、無意味な反復が繰り返される可能性があります。許容誤差の値を eps
より小さくすると、停止条件が実質的に無効になります。このヒントは、TolX
の許容誤差について eps
の既定値を使用する fzero
には当てはまりません。
optimoptions
では許容誤差が表示されます。たとえば、
options = optimoptions('fmincon');
[options.OptimalityTolerance,options.FunctionTolerance,options.StepTolerance]
ans = 1.0e-06 * 1.0000 1.0000 0.0001
また、ソルバー関数のリファレンス ページにあるオプションの節でも、既定の許容誤差を確認できます。
StepTolerance
はステップ サイズの下限であり、(xi – xi+1) のノルムを示します。ソルバーがStepTolerance
より小さいステップで処理しようとした場合、反復が終了します。StepTolerance
は一般的に "相対" 的な範囲として使用され、|(xi – xi+1)| <StepTolerance
*(1 + |xi|) の場合、または同様な相対尺度の場合に反復が終了します。詳細は、許容誤差の詳細を参照してください。一部のアルゴリズムでは、
FunctionTolerance
はステップ中の目的関数値の変位の下限です。これらのアルゴリズムでは、|f(xi) – f(xi+1)| <FunctionTolerance
の場合、反復が終了します。FunctionTolerance
は一般的に "相対" 範囲として使用され、|f(xi) – f(xi+1)| <FunctionTolerance
*(1 + |f(xi)|) の場合や類似の相対尺度の場合に反復が終了します。詳細は、許容誤差の詳細を参照してください。メモ
他のソルバーとは異なり、
fminsearch
はTolFun
(関数の許容誤差) とTolX
(ステップの許容誤差) の "両方" を満たすと停止します。OptimalityTolerance
は 1 次の最適性の尺度の許容誤差です。最適性の尺度がOptimalityTolerance
より小さい場合、反復計算が終了します。OptimalityTolerance
は 1 次の最適性尺度の相対範囲の場合もあります。詳細は、許容誤差の詳細を参照してください。1 次の最適性の尺度は1 次の最適性の尺度で定義されています。ConstraintTolerance
はすべての制約関数の大きさの上限です。ソルバーが c(x) >ConstraintTolerance
または |ceq(x)| >ConstraintTolerance
となる点 x を返す場合、ソルバーは x で制約の違反があることを報告します。ConstraintTolerance
は相対範囲の場合もあります。詳細は、許容誤差の詳細を参照してください。メモ
ConstraintTolerance
は他の許容誤差とは別に処理されます。ConstraintTolerance
の条件が満たされない場合 (すなわち制約関数の大きさがConstraintTolerance
を超えた場合) は、他の理由で中止されない限りソルバーは計算を続行しようとします。ソルバーが単純に計算を中止しないのは、続行することでConstraintTolerance
の条件が満たされるためです。MaxIterations
は、ソルバー反復回数に関する範囲です。MaxFunctionEvaluations
は、関数評価回数に関する範囲です。反復と関数評価は 反復と関数計算回数 で説明されています。
特定のソルバーに適用される他の 2 つの許容誤差 TolPCG
と MaxPCGIter
があります。これらは前処理付き共役勾配手順に関連します。詳細は、前処理付き共役勾配法を参照してください。
fmincon
内点法アルゴリズムにのみ適用される許容誤差がいくつかあります。詳細は、fmincon
の options
、「内点法アルゴリズム」を参照してください。
intlinprog
にのみ適用される許容誤差がいくつかあります。詳細は、一部の “整数” 解は整数ではないと分枝限定法を参照してください。