このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
Global Optimization Toolbox ソルバーの特性
ソルバーの選択
このセクションでは、Global Optimization Toolbox ソルバーの特性について説明します。このセクションには、より効果的に結果を得るための推奨事項が含まれています。
より優れた、またはより高速なソリューションを実現するには、まず適切なオプションまたは境界を設定して、推奨ソルバーを調整してみてください。結果が満足できない場合は、他のソルバーを試してください。
望ましい解決策 | スムーズな目標と制約 | 滑らかでない目的または制約 |
---|---|---|
「望ましい解決策」の説明 | スムーズな問題のためのソルバーの選択 | 非滑らかな問題に対するソルバーの選択 |
単一のローカルソリューション | Optimization Toolbox™ 関数。最適化の意思決定表 を参照 | fminbnd , patternsearch , fminsearch , ga , particleswarm , simulannealbnd , surrogateopt |
複数のローカルソリューション | GlobalSearch , MultiStart | patternsearch 、ga 、particleswarm 、simulannealbnd 、または surrogateopt は、複数の初期ポイント x0 または複数の初期集団から開始されました |
単一のグローバルソリューション | GlobalSearch , MultiStart , patternsearch , particleswarm , ga , simulannealbnd , surrogateopt | patternsearch , ga , particleswarm , simulannealbnd , surrogateopt |
並列処理を使用した単一のローカルソリューション | MultiStart 、Optimization Toolbox 関数 | patternsearch , ga , particleswarm , surrogateopt |
並列処理を使用した複数のローカルソリューション | MultiStart | patternsearch 、ga 、またはparticleswarm は、複数の初期ポイントx0 または複数の初期集団から開始されました |
並列処理を使用した単一のグローバルソリューション | MultiStart | patternsearch , ga , particleswarm , surrogateopt |
「望ましい解決策」の説明
「望ましい解決策」の用語の意味を理解するには、次の例を考えてみましょう。
f(x)=100 x2(1– x)2– x、
x1
は 0 付近に、x2
は 1 付近に局所最小値を持ちます。
最小値は次の場所にあります:
fun = @(x)(100*x^2*(x - 1)^2 - x); x1 = fminbnd(fun,-0.1,0.1) x1 = 0.0051 x2 = fminbnd(fun,0.9,1.1) x2 = 1.0049
規約の説明
用語 | 意味 |
---|---|
単一のローカルソリューション | 目的関数 f(x) が局所最小値となる点 x である 1 つの局所解を見つけます。詳細については、大域的最適解と局所的最適解を参照してください。この例では、x1 と x2 は両方ともローカル ソリューションです。 |
複数のローカルソリューション | ローカルソリューションのセットを見つけます。この例では、ローカル ソリューションの完全なセットは {x1,x2} です。 |
単一のグローバルソリューション | 目的関数 f(x) が大域最小値となる点 x を見つけます。この例では、グローバル ソリューションは x2 です。 |
スムーズな問題のためのソルバーの選択
単一のグローバルソリューション
最初に
GlobalSearch
を試行します。これはグローバルソリューションを見つけることに最も重点を置いており、効率的なローカル ソルバーであるfmincon
を備えています。次は
MultiStart
を試してください。効率的なローカル ソルバーを備えており、さまざまな開始点を検索できます。次は
patternsearch
を試してください。グラデーションを使用しないため、効率は低くなります。ただし、patternsearch
は堅牢で、残りのローカル ソルバーよりも効率的です。グローバル ソリューションを検索するには、さまざまな開始点からpatternsearch
を開始します。次に
surrogateopt
を試してください。surrogateopt
は、最小限の目的関数評価を使用してグローバル ソリューションを見つけようとします。surrogateopt
は、他のほとんどのソルバーに比べて関数評価あたりのオーバーヘッドが大きくなります。surrogateopt
は有限境界を必要とし、整数制約、線形制約、および非線形不等式制約を受け入れます。問題に制約がない場合、または制限された制約のみがある場合は、次に
particleswarm
を試してください。通常、particleswarm
は残りのソルバーよりも効率的であり、patternsearch
よりも効率的になる場合があります。次は
ga
を試してください。あらゆる種類の制約を処理でき、通常はsimulannealbnd
よりも効率的です。最後に
simulannealbnd
を試してください。制約なしまたは制限付き制約のある問題を処理できます。simulannealbnd
は通常、最も効率の悪いソルバーです。しかし、冷却スケジュールが十分にゆっくりであれば、全体的な解決策を見つけることができます。
複数のローカルソリューション
GlobalSearch
と MultiStart
はどちらも複数のローカル ソリューションを提供します。複数の解を得るための構文については、複数のソリューション を参照してください。GlobalSearch
と MultiStart
は次の特性が異なります。
MultiStart
はより多くの局所最小値を見つけることができます。これは、GlobalSearch
が生成された多くの開始点 (ローカル ソリューションの初期点) を拒否するためです。基本的に、GlobalSearch
は、その点がグローバル最小値を取得する可能性が高いと判断した場合にのみ、開始点を受け入れます。対照的に、MultiStart
は生成されたすべての開始点をローカル ソルバーに渡します。詳細については、グローバルサーチアルゴリズムを参照してください。MultiStart
では、ローカル ソルバーとしてfmincon
、fminunc
、lsqcurvefit
、またはlsqnonlin
を選択できます。GlobalSearch
ソルバーは、ローカル ソルバーとしてfmincon
のみを使用します。GlobalSearch
は、開始点を生成するために散布検索アルゴリズムを使用します。対照的に、MultiStart
は境界内で均一にランダムにポイントを生成したり、独自のポイントを提供したりすることができます。MultiStart
は並列実行できます。Global Optimization Toolbox で並列処理を使用する方法を参照してください。
非滑らかな問題に対するソルバーの選択
最も小さい番号の該当するソルバーを選択します。整数制約のある問題の場合は、ga
を使用します。
fminbnd
は、1 次元の境界問題にのみ最初に使用してください。fminbnd
は、1 次元ではすぐに収束することが証明されています。他の種類の問題には
patternsearch
を使用します。patternsearch
は確実に収束し、あらゆる種類の制約を処理します。時間のかかる目的関数を持つ問題には、
surrogateopt
を試してください。surrogateopt
はグローバル ソリューションを検索します。surrogateopt
は有限境界を必要とし、整数制約、線形制約、および非線形不等式制約を受け入れます。低次元の無制限問題には、次に
fminsearch
を試してください。fminsearch
はpatternsearch
ほど一般的ではなく、収束に失敗する可能性があります。低次元の問題の場合、fminsearch
はチューニング オプションが少ないため、簡単に使用できます。次に、無制限または制限付きの問題で
particleswarm
を試してください。particleswarm
は裏付けとなる理論がほとんどありませんが、効率的なアルゴリズムであることが多いです。次に
ga
を試してください。ga
は裏付けとなる理論がほとんどなく、patternsearch
やparticleswarm
よりも効率が悪いことがよくあります。ga
はあらゆる種類の制約を処理します。ga
とsurrogateopt
は整数制約を受け入れる唯一の Global Optimization Toolbox ソルバーです。無制限の問題、または制限のある問題の場合は、最後に
simulannealbnd
を試してください。simulannealbnd
は、非常に遅い対数冷却スケジュールに対してのみ収束することが証明されています。simulannealbnd
は制限付きの制約のみを受け入れ、多くの場合ga
よりも効率が低くなります。
ソルバーの特性
ソルバー | 収束 | 特性 |
---|---|---|
GlobalSearch | 滑らかな問題に対する局所最適値への高速収束 | 決定論的反復 |
勾配ベース | ||
自動確率的開始点 | ||
多くの開始点を経験的に削除する | ||
MultiStart | 滑らかな問題に対する局所最適値への高速収束 | 決定論的反復 |
並列実行可能。Global Optimization Toolbox で並列処理を使用する方法 を参照 | ||
勾配ベース | ||
確率的または決定論的な開始点、あるいはその両方の組み合わせ | ||
自動確率的開始点 | ||
すべてのスタートポイントを実行します | ||
ローカル ソルバーの選択: fmincon 、fminunc 、lsqcurvefit 、または lsqnonlin | ||
patternsearch | 局所最適解への収束が実証されているが、勾配ベースのソルバーよりも遅い | 決定論的反復 |
並列実行可能。Global Optimization Toolbox で並列処理を使用する方法 を参照 | ||
グラデーションなし | ||
ユーザー指定の開始点 | ||
surrogateopt | 制限付き問題に対するグローバル最適値への収束が実証されています。勾配ベースのソルバーよりも遅く、通常は関数評価の限界またはその他の限界に達すると停止します。 | 確率的反復 |
並列実行可能。Global Optimization Toolbox で並列処理を使用する方法 を参照 | ||
時間のかかる目的関数に最適 | ||
境界制約が必要で、線形制約と非線形不等式制約を受け入れます | ||
整数制約を許可します。混合整数代理最適化 を参照してください。 | ||
グラデーションなし | ||
自動開始点またはユーザー指定のポイント、あるいはその両方の組み合わせ | ||
particleswarm | 収束証明なし | 確率的反復 |
並列実行可能。Global Optimization Toolbox で並列処理を使用する方法 を参照 | ||
人口ベース | ||
グラデーションなし | ||
自動開始人口またはユーザー指定人口、あるいはその両方の組み合わせ | ||
境界制約のみ | ||
ga | 収束証明なし | 確率的反復 |
並列実行可能。Global Optimization Toolbox で並列処理を使用する方法 を参照 | ||
人口ベース | ||
グラデーションなし | ||
整数制約を許可します。混合整数 ga 最適化 を参照してください。 | ||
自動開始人口またはユーザー指定人口、あるいはその両方の組み合わせ | ||
simulannealbnd | 非常に遅い冷却スケジュールを伴う制限付き問題に対して、グローバル最適値に収束することが証明されています。 | 確率的反復 |
グラデーションなし | ||
ユーザー指定の開始点 | ||
境界制約のみ |
いくつかの特徴の説明:
収束 — ソルバーは、局所的最小値から遠く離れたところから開始すると、どのソリューションにも収束できない場合があります。勾配ベースのソルバーは、局所的最小値の近くで開始すると、滑らかな問題に対しては急速に局所的最小値に収束します。
patternsearch
は広範囲の問題に対して収束することが証明されていますが、収束は勾配ベースのソルバーよりも遅くなります。ga
とsimulannealbnd
は両方とも効果的であることが多いですが、一部の問題では妥当な時間内に収束しない場合があります。反復 — ソルバーは反復してソリューションを見つけます。反復内のステップは反復です。一部のソルバーには決定論的な反復処理があります。その他には乱数を使用し、確率的な反復を行うものもあります。
勾配 — 一部のソルバーは、反復計算に推定またはユーザー指定の導関数を使用します。他のソルバーは導関数を使用または推定せず、目的関数と制約関数の値のみを使用します。
開始点 — ほとんどのソルバーでは、決定変数の次元を取得するために、最適化の開始点を指定する必要があります。
ga
とsurrogateopt
は、決定変数の次元を入力として取得するか、境界から次元を推測するため、開始点は必要ありません。これらのソルバーは、開始点または集団を自動的に生成するか、またはユーザーが指定した 1 つまたは複数のポイントを受け入れます。
Global Optimization Toolbox ソルバーの特性と Optimization Toolbox ソルバーの特性を比較します。
ソルバー | 収束 | 特性 |
---|---|---|
fmincon , fminunc , fseminf , lsqcurvefit , lsqnonlin | 滑らかな問題に対する局所最適値への2次収束が証明されている | 決定論的反復 |
勾配ベース | ||
ユーザー指定の開始点 | ||
fminsearch | 収束の証明はありません。反例が存在します。 | 決定論的反復 |
グラデーションなし | ||
ユーザー指定の開始点 | ||
制約なし | ||
fminbnd | 滑らかな問題では局所最適値への収束が実証されていますが、2 次よりも遅くなります。 | 決定論的反復 |
グラデーションなし | ||
ユーザー指定の開始間隔 | ||
一次元の問題のみ |
これらすべての Optimization Toolbox ソルバー:
決定論的な反復処理を実行する
開始点または間隔を要求する
魅力の盆地を1つだけ検索
一部のソルバーがオブジェクトであるのはなぜですか?
GlobalSearch
と MultiStart
はオブジェクトです。これはあなたにとって何を意味しますか?
問題を実行する前に、
GlobalSearch
またはMultiStart
オブジェクトを作成します。複数の問題を実行するためにオブジェクトを再利用することができます。
GlobalSearch
およびMultiStart
オブジェクトは、アルゴリズムとグローバル オプションのコンテナーです。これらのオブジェクトを使用して、ローカル ソルバーを複数回実行します。ローカル ソルバーには独自のオプションがあります。
詳細については、クラス のドキュメンテーションを参照してください。