Optimization Toolbox のソルバー
Optimization Toolbox™ ソルバーは、4 つの一般的なカテゴリに分類できます。
このグループのソルバーは、開始点
x0の近くにある目的関数の局所的最小値を見つけようとします。これらのソルバーは、制約なしの最適化、線形計画法、二次計画法、錐計画法、および一般的な非線形計画法の問題を扱います。このグループのソルバーは、関数集合の最大値を最小化する (
fminimax) か、関数集合が指定された値より小さくなる位置を見つけようとします (fgoalattain)。このグループのソルバーは、スカラーまたはベクトル値の非線形方程式 f(x) = 0 の解を開始点
x0の近くで見つけようとします。方程式を解くことは f(x) の最小ノルムをx0の近くで探すことと等価であるため最適化の一形式と見なすことができます。このグループのソルバーは、二乗和を最小化しようとします。この種の問題はモデルをデータに当てはめるときによく使われます。これらのソルバーは、非負の解を探す問題、境界値問題、線形制約問題、パラメーター化された非線形モデルを滑らかな制約を受けるデータに当てはめる問題を扱います。
詳細については、Optimization Toolbox の関数が扱う問題を参照してください。最小化用のソルバーの選択については、最適化の意思決定表 を参照してください。
以下の形式の最小化の最適化問題では
一般的に制約が用いられます。f(x) は "目的関数" と呼ばれます。通常、f(x) は double 型のスカラー関数で、x は double 型のベクトルまたはスカラーです。ただし、多目的関数の最適化、方程式解法、および一部の二乗和の最小化は、double 型のベクトルまたは行列の目的関数 F(x) をもつことができます。最小化ではなく最大化の Optimization Toolbox ソルバーを使用するには 目的関数の最大化 を参照してください。
ソルバーに渡すための目的関数は、関数ファイルまたは無名関数ハンドルを使って記述します。多くのソルバーに勾配 ∇f(x) を与えることができます。いくつかのソルバーにヘッシアンを与えることができます。目的関数の作成を参照してください。制約は 制約の作成 で説明されるように特定の形式になります。
Optimization Toolbox ソルバーは "滑らかな" 問題に適用されます。つまり、目的関数と非線形制約関数は、少なくとも 2 回連続して微分可能である必要があります。場合によっては、Optimization Toolbox ソルバーは滑らかでない関数で機能することがあります。任意の問題で自由に試してください。基本の MATLAB® 最適化ソルバー fminbnd、fminsearch、および fzero には平滑性要件がなく、ほとんどの Global Optimization Toolbox ソルバーには平滑性要件がありません。