Main Content

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

問題ベースのアプローチとソルバーベースのアプローチのどちらを選択するか

Global Optimization Toolbox ソルバーを使用して、滑らかでない関数を最適化したり、グローバル ソリューションを検索したり、多目的問題を解決したりします。問題ベースのアプローチを使用すると、より簡単に問題を設定して解決できます。

問題ベースの特性

利点制限
セットアップとデバッグが簡単方程式の問題はありません
同じ問題に対して異なるソルバーを実行するのが簡単になりますカスタム データ型はありません
適切なソルバーを自動的に取得するsurrogateopt のチェックポイント ファイルがありません
目的制約と非線形制約が同じ時間のかかる関数で計算される問題の解決を自動的に高速化します (通常はシミュレーション)ベクトル化なし
ソルバーベースのアプローチに関連するオプションの変数を変換する必要があります

利点:

  • セットアップとデバッグが簡単になります。問題ベースのアプローチでは、シンボリック スタイルの変数を使用して最適化式と制約を作成します。問題ベースのグローバル最適化のセットアップを参照してください。ソルバーベースのアプローチでは、すべての変数を単一のベクトルに配置する必要がありますが、これは、特に変数が大きい場合や次元が異なる場合には扱いにくい場合があります。

  • 同じ問題に対して異なるソルバーを実行するのが簡単になります。一部のソルバーでは呼び出し構文が異なります。たとえば、surrogateopt の非線形制約の構文は、他のすべてのソルバーの構文とは異なります。ソルバーベースのアプローチで surrogateopt と別のソルバーの両方を使用して問題を実行するには、目的関数の異なるバージョンを作成する必要があります。対照的に、問題ベースのアプローチでは構文の翻訳が行われるため、ソルバー名と場合によってはいくつかのオプションのみを変更する必要があります。

  • 適切なソルバーを自動的に取得します。solve 関数は、目的と制約を処理できるソルバーを自動的に選択します。ソルバーベースのアプローチでは、適切なソルバーを選択する必要があります。

  • 目的制約と非線形制約が同じ時間のかかる関数 (通常はシミュレーション) で計算される問題の解決を自動的に高速化します。多くの場合、シミュレーションまたは ODE ソルバーは、同じ関数で目的制約と非線形制約を計算します。fcn2optimexpr を使用して時間のかかる関数を最適化式に変換する場合、'ReuseEvaluation' 引数を true に設定することで、解決時間を節約できます。この設定により、ソルバーは目的制約と非線形制約を評価するときに、時間のかかる関数の再計算を回避します。ソルバーベースのアプローチでこの時間節約を実現するには、例 同じ関数における目的と非線形制約 に示すように、追加のプログラミングが必要になる場合があります。

制限事項:

参考

関連するトピック