このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
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,
これは、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 つの局所解を見つけます。詳細については、大域的最適解と局所的最適解を参照してください。この例では、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 | 滑らかな問題では局所最適値への収束が証明されていますが、二次関数よりも遅くなります。 | 決定論的な反復 |
| グラデーションなし | ||
| ユーザー指定の開始間隔 | ||
| 一次元の問題のみ |
これらすべての Optimization Toolbox ソルバー:
決定論的な反復処理を実行する
開始点または間隔を要求する
1つの魅力盆地だけを探索する
一部のソルバーがオブジェクトであるのはなぜですか?
GlobalSearch と MultiStart はオブジェクトです。これはあなたにとって何を意味しますか?
問題を実行する前に、
GlobalSearchまたはMultiStartオブジェクトを作成します。複数の問題を実行するためにオブジェクトを再利用することができます。
GlobalSearchおよびMultiStartオブジェクトは、アルゴリズムとグローバル オプションのコンテナーです。これらのオブジェクトを使用して、ローカル ソルバーを複数回実行します。ローカル ソルバーには独自のオプションがあります。
詳細については、クラス ドキュメントを参照してください。
