ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

許容誤差と停止条件

最適化の反復数はソルバーの "停止条件" に依存します。これらの条件には、自分で設定できるいくつかの "許容誤差" があります。許容誤差は、一般的に、それを超えた場合にソルバーの反復を停止するしきい値です。

オプションの設定と変更で説明するように、optimoptions を使用して、許容誤差と他の基準を設定します。

    ヒント:   一般的に、TolFunTolX などの許容誤差は eps をかなり上回り、通常は 1e-14 を上回るように設定します。許容誤差を小さく設定すると、正確な結果が常に得られるとは限りません。ソルバーで収束が認識されず、無意味な反復が繰り返される可能性があります。許容誤差の値を eps より小さくすると、停止条件が実質的に無効になります。

既定の許容誤差については「最適化アプリケーション」を参照してください。アルゴリズムによっては既定の許容誤差が異なる場合があるため、ソルバーとアルゴリズムの両方を設定してください。

optimoptions では既定の許容誤差が表示されます。たとえば、次のようになります。

options = optimoptions('fmincon')

また、ソルバー関数のリファレンス ページにあるオプションの節でも、既定の許容誤差を確認できます。

  • 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)|) の場合や類似の相対尺度の場合に反復が終了します。

  • TolFun は 1 次の最適性の尺度の範囲でもあります。最適性の尺度が TolFun より小さい場合、反復計算が終了します。TolFun は相対範囲の場合もあります。1 次の最適性の尺度は1 次の最適性の尺度で定義されています。

  • TolCon はすべての制約関数の大きさの上限です。ソルバーが c(x) > TolCon または |ceq(x)| > TolCon となる点 x を返す場合、ソルバーは x で制約の違反があることを報告します。TolCon は相対範囲の場合もあります。

      メモ:   TolCon は他の許容誤差とは別に処理されます。TolCon の条件が満たされない場合 (すなわち制約関数の大きさが TolCon を超えた場合) は、他の理由で中止されない限りソルバーは計算を続行しようとします。ソルバーが単純に計算を中止しないのは、続行することで TolCon の条件が満たされるためです。

  • MaxIter は、ソルバー反復回数に関する範囲です。MaxFunEvals は、関数評価回数に関する範囲です。反復と関数評価は 反復と関数計算回数 で説明されています。

特定のソルバーに適用される他の 2 つの許容誤差 TolPCGMaxPCGIter があります。これらは前処理付き共役勾配手順に関連します。詳細は、前処理付き共役勾配法を参照してください。

fmincon 内点法アルゴリズムにのみ適用される許容誤差がいくつかあります。詳細は、「Interior-Point アルゴリズム」を参照してください。

この情報は役に立ちましたか?