最適化のトラブルシューティングとヒント
次の表では、最適化に関する一般的な問題について説明し、推奨される処理方法を提示します。
問題 | 推奨される処理方法 |
---|---|
| 問題が連続で最小値が 1 つしか存在しない場合を除き、解が大域的最小値である保証はありません。大域的最小値を探索するには、複数の開始点 ( |
いくつかの点 | 実行不可能な点 |
最小化ルーチンが無限ループになるように見える、あるいは最小でない解 (関数 | おそらく、目的関数は options = optimset('FunValCheck','on') を設定し、入力引数に |
ソルバーに時間がかかる。 | ほとんどの最適化問題は、開始点をうまく選ぶと解決しやすくなります。問題の特性に基づいて、解に近い可能性のある領域でランダムな開始点を試してください。 進化的な手段を使用して複雑な問題を解くことができる場合があります。まず、独立変数の数が少ない問題を解きます。適切なマッピングを使用することにより、このように比較的単純な問題の解を、複雑な問題の開始点として使用します。また、最適化問題の初期段階で、より単純な目的関数と、あまり厳密でない停止条件を使用することにより、短時間で解を得られる場合もあります。 |
ソルバーが何をしているかが明確でない。 | ソルバーが反復で何を行っているかを確認する方法は次のとおりです。
|
|
|
メモ
最適化ソルバーは実数値の関数に適用されます。ノルムなどの複素数値の実数値関数を除いて、複素数値を最適化することはできません。