Main Content

このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。

Global Optimization Toolbox ソルバーの特性

ソルバーの選択

このセクションでは、Global Optimization Toolbox ソルバーの特性について説明します。このセクションには、より効果的に結果を得るための推奨事項が含まれています。

より優れた、またはより高速なソリューションを実現するには、まず適切なオプションまたは境界を設定して、推奨ソルバーを調整してみてください。結果が満足できない場合は、他のソルバーを試してください。

望ましい解決策スムーズな目標と制約滑らかでない目的または制約
「望ましい解決策」の説明スムーズな問題のためのソルバーの選択非滑らかな問題に対するソルバーの選択
単一のローカルソリューションOptimization Toolbox™ 関数。最適化の意思決定表 を参照fminbnd, patternsearch, fminsearch, ga, particleswarm, simulannealbnd, surrogateopt
複数のローカルソリューションGlobalSearch, MultiStartpatternsearchgaparticleswarmsimulannealbnd、または surrogateopt は、複数の初期ポイント x0 または複数の初期集団から開始されました
単一のグローバルソリューションGlobalSearch, MultiStart, patternsearch, particleswarm, ga, simulannealbnd, surrogateoptpatternsearch, ga, particleswarm, simulannealbnd, surrogateopt
並列処理を使用した単一のローカルソリューションMultiStart、Optimization Toolbox 関数patternsearch, ga, particleswarm, surrogateopt
並列処理を使用した複数のローカルソリューションMultiStartpatternsearchga、またはparticleswarmは、複数の初期ポイントx0または複数の初期集団から開始されました
並列処理を使用した単一のグローバルソリューションMultiStartpatternsearch, 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 つの局所解を見つけます。詳細については、大域的最適解と局所的最適解を参照してください。この例では、x1x2 は両方ともローカル ソリューションです。
複数のローカルソリューションローカルソリューションのセットを見つけます。この例では、ローカル ソリューションの完全なセットは {x1,x2} です。
単一のグローバルソリューション目的関数 f(x) が大域最小値となる点 x を見つけます。この例では、グローバル ソリューションは x2 です。

スムーズな問題のためのソルバーの選択

単一のグローバルソリューション

  1. 最初に GlobalSearch を試行します。これはグローバルソリューションを見つけることに最も重点を置いており、効率的なローカル ソルバーである fmincon を備えています。

  2. 次はMultiStartを試してください。効率的なローカル ソルバーを備えており、さまざまな開始点を検索できます。

  3. 次はpatternsearchを試してください。グラデーションを使用しないため、効率は低くなります。ただし、patternsearch は堅牢で、残りのローカル ソルバーよりも効率的です。グローバル ソリューションを検索するには、さまざまな開始点から patternsearch を開始します。

  4. 次に surrogateopt を試してください。surrogateopt は、最小限の目的関数評価を使用してグローバル ソリューションを見つけようとします。surrogateopt は、他のほとんどのソルバーに比べて関数評価あたりのオーバーヘッドが大きくなります。surrogateopt は有限境界を必要とし、整数制約、線形制約、および非線形不等式制約を受け入れます。

  5. 問題に制約がない場合、または制限された制約のみがある場合は、次に particleswarm を試してください。通常、particleswarm は残りのソルバーよりも効率的であり、patternsearch よりも効率的になる場合があります。

  6. 次はgaを試してください。あらゆる種類の制約を処理でき、通常は simulannealbnd よりも効率的です。

  7. 最後にsimulannealbndを試してください。制約なしまたは制限付き制約のある問題を処理できます。simulannealbnd は通常、最も効率の悪いソルバーです。しかし、冷却スケジュールが十分にゆっくりであれば、全体的な解決策を見つけることができます。

複数のローカルソリューション

GlobalSearchMultiStart はどちらも複数のローカル ソリューションを提供します。複数の解を得るための構文については、複数のソリューション を参照してください。GlobalSearchMultiStart は次の特性が異なります。

  • MultiStart はより多くの局所最小値を見つけることができます。これは、GlobalSearch が生成された多くの開始点 (ローカル ソリューションの初期点) を拒否するためです。基本的に、GlobalSearch は、その点がグローバル最小値を取得する可能性が高いと判断した場合にのみ、開始点を受け入れます。対照的に、MultiStart は生成されたすべての開始点をローカル ソルバーに渡します。詳細については、グローバルサーチアルゴリズムを参照してください。

  • MultiStart では、ローカル ソルバーとして fminconfminunclsqcurvefit、または lsqnonlin を選択できます。GlobalSearch ソルバーは、ローカル ソルバーとして fmincon のみを使用します。

  • GlobalSearch は、開始点を生成するために散布検索アルゴリズムを使用します。対照的に、MultiStart は境界内で均一にランダムにポイントを生成したり、独自のポイントを提供したりすることができます。

  • MultiStart は並列実行できます。Global Optimization Toolbox で並列処理を使用する方法を参照してください。

非滑らかな問題に対するソルバーの選択

最も小さい番号の該当するソルバーを選択します。整数制約のある問題の場合は、ga を使用します。

  1. fminbnd は、1 次元の境界問題にのみ最初に使用してください。fminbnd は、1 次元ではすぐに収束することが証明されています。

  2. 他の種類の問題には patternsearch を使用します。patternsearch は確実に収束し、あらゆる種類の制約を処理します。

  3. 時間のかかる目的関数を持つ問題には、surrogateopt を試してください。surrogateopt はグローバル ソリューションを検索します。surrogateopt は有限境界を必要とし、整数制約、線形制約、および非線形不等式制約を受け入れます。

  4. 低次元の無制限問題には、次に fminsearch を試してください。fminsearchpatternsearch ほど一般的ではなく、収束に失敗する可能性があります。低次元の問題の場合、fminsearch はチューニング オプションが少ないため、簡単に使用できます。

  5. 次に、無制限または制限付きの問題で particleswarm を試してください。particleswarm は裏付けとなる理論がほとんどありませんが、効率的なアルゴリズムであることが多いです。

  6. 次に ga を試してください。 ga は裏付けとなる理論がほとんどなく、 patternsearchparticleswarm よりも効率が悪いことがよくあります。 ga はあらゆる種類の制約を処理します。 gasurrogateopt は整数制約を受け入れる唯一の Global Optimization Toolbox ソルバーです。

  7. 無制限の問題、または制限のある問題の場合は、最後に simulannealbnd を試してください。 simulannealbnd は、非常に遅い対数冷却スケジュールに対してのみ収束することが証明されています。 simulannealbnd は制限付きの制約のみを受け入れ、多くの場合 ga よりも効率が低くなります。

ソルバーの特性

ソルバー収束特性
GlobalSearch滑らかな問題に対する局所最適値への高速収束決定論的反復
勾配ベース
自動確率的開始点
多くの開始点を経験的に削除する
MultiStart滑らかな問題に対する局所最適値への高速収束決定論的反復
並列実行可能。Global Optimization Toolbox で並列処理を使用する方法 を参照
勾配ベース
確率的または決定論的な開始点、あるいはその両方の組み合わせ
自動確率的開始点
すべてのスタートポイントを実行します
ローカル ソルバーの選択: fminconfminunclsqcurvefit、または lsqnonlin
patternsearch局所最適解への収束が実証されているが、勾配ベースのソルバーよりも遅い決定論的反復
並列実行可能。Global Optimization Toolbox で並列処理を使用する方法 を参照
グラデーションなし
ユーザー指定の開始点
surrogateopt制限付き問題に対するグローバル最適値への収束が実証されています。勾配ベースのソルバーよりも遅く、通常は関数評価の限界またはその他の限界に達すると停止します。確率的反復
並列実行可能。Global Optimization Toolbox で並列処理を使用する方法 を参照
時間のかかる目的関数に最適
境界制約が必要で、線形制約と非線形不等式制約を受け入れます
整数制約を許可します。混合整数代理最適化 を参照してください。
グラデーションなし
自動開始点またはユーザー指定のポイント、あるいはその両方の組み合わせ
particleswarm収束証明なし確率的反復
並列実行可能。Global Optimization Toolbox で並列処理を使用する方法 を参照
人口ベース
グラデーションなし
自動開始人口またはユーザー指定人口、あるいはその両方の組み合わせ
境界制約のみ
ga収束証明なし確率的反復
並列実行可能。Global Optimization Toolbox で並列処理を使用する方法 を参照
人口ベース
グラデーションなし
整数制約を許可します。混合整数 ga 最適化 を参照してください。
自動開始人口またはユーザー指定人口、あるいはその両方の組み合わせ
simulannealbnd非常に遅い冷却スケジュールを伴う制限付き問題に対して、グローバル最適値に収束することが証明されています。確率的反復
グラデーションなし
ユーザー指定の開始点
境界制約のみ

いくつかの特徴の説明:

  • 収束 — ソルバーは、局所的最小値から遠く離れたところから開始すると、どのソリューションにも収束できない場合があります。勾配ベースのソルバーは、局所的最小値の近くで開始すると、滑らかな問題に対しては急速に局所的最小値に収束します。patternsearch は広範囲の問題に対して収束することが証明されていますが、収束は勾配ベースのソルバーよりも遅くなります。gasimulannealbnd は両方とも効果的であることが多いですが、一部の問題では妥当な時間内に収束しない場合があります。

  • 反復 — ソルバーは反復してソリューションを見つけます。反復内のステップは反復です。一部のソルバーには決定論的な反復処理があります。その他には乱数を使用し、確率的な反復を行うものもあります。

  • 勾配 — 一部のソルバーは、反復計算に推定またはユーザー指定の導関数を使用します。他のソルバーは導関数を使用または推定せず、目的関数と制約関数の値のみを使用します。

  • 開始点 — ほとんどのソルバーでは、決定変数の次元を取得するために、最適化の開始点を指定する必要があります。gasurrogateopt は、決定変数の次元を入力として取得するか、境界から次元を推測するため、開始点は必要ありません。これらのソルバーは、開始点または集団を自動的に生成するか、またはユーザーが指定した 1 つまたは複数のポイントを受け入れます。

Global Optimization Toolbox ソルバーの特性と Optimization Toolbox ソルバーの特性を比較します。

ソルバー収束特性
fmincon, fminunc, fseminf, lsqcurvefit, lsqnonlin滑らかな問題に対する局所最適値への2次収束が証明されている決定論的反復
勾配ベース
ユーザー指定の開始点
fminsearch収束の証明はありません。反例が存在します。決定論的反復
グラデーションなし
ユーザー指定の開始点
制約なし
fminbnd滑らかな問題では局所最適値への収束が実証されていますが、2 次よりも遅くなります。決定論的反復
グラデーションなし
ユーザー指定の開始間隔
一次元の問題のみ

これらすべての Optimization Toolbox ソルバー:

  • 決定論的な反復処理を実行する

  • 開始点または間隔を要求する

  • 魅力の盆地を1つだけ検索

一部のソルバーがオブジェクトであるのはなぜですか?

GlobalSearchMultiStart はオブジェクトです。これはあなたにとって何を意味しますか?

  • 問題を実行する前に、GlobalSearch または MultiStart オブジェクトを作成します。

  • 複数の問題を実行するためにオブジェクトを再利用することができます。

  • GlobalSearch および MultiStart オブジェクトは、アルゴリズムとグローバル オプションのコンテナーです。これらのオブジェクトを使用して、ローカル ソルバーを複数回実行します。ローカル ソルバーには独自のオプションがあります。

詳細については、クラス のドキュメンテーションを参照してください。

関連する例

詳細