メインコンテンツ

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

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)2x,

これは、0 付近で極小値 x1 を持ち、1 付近で x2 を持ちます。

 図を生成するコード

最小値は次の場所にあります。

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滑らかな問題では局所最適値への収束が証明されていますが、二次関数よりも遅くなります。決定論的な反復
グラデーションなし
ユーザー指定の開始間隔
一次元の問題のみ

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

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

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

  • 1つの魅力盆地だけを探索する

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

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

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

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

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

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

参考

トピック