このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
アルゴリズムの選択
Fminconアルゴリズム
fmincon
には,次の5のアルゴリズムオプションがあります。
“内点”
(既定の設定)“trust-region-reflective”
“sqp”
“sqp-legacy”
“激活集”
optimoptions
を使用して,コマンドラ算法
オプションを設定します。
推奨 |
---|
詳細は,内点法アルゴリズムによる精度低下の可能性にいてを参照してください。 |
推奨の理由
“内点”
は大規模なスパ,ス問題と小規模な密問題を処理します。このアルゴリズムは,すべての反復で範囲を満たし,南
または正
の結果から回復できます。これは大規模なアルゴリズムです。大規模アルゴリズムと中規模アルゴリズムを参照してください。このアルゴリズムは,大規模な問題に対して特別な手法を使用できます。詳細は、fmincon
の选项
、「内点法アルゴリズムを参照してください。“sqp”
はすべての反復で範囲を満たします。このアルゴリズムは,南
または正
の結果から回復できます。これは大規模なアルゴリズムではありません。大規模アルゴリズムと中規模アルゴリズムを参照してください。“sqp-legacy”
は“sqp”
に類似していますが,通常,より低速で,さらに多くのメモリを使用します“激活集”
は大きなステップを取ることができるので,高速に処理可能です。このアルゴリズムは,滑らかでない制約をもつ一部の問題に対して効果的です。これは大規模なアルゴリズムではありません。大規模アルゴリズムと中規模アルゴリズムを参照してください。“trust-region-reflective”
は,勾配を与えることを必要とし,範囲のみまたは線形等式制約のみ(ただし両方ではない)が可能です。これらの制限内でならば,このアルゴリズムは大規模なスパース問題と小規模な密問題を効果的に扱うことができます。これは大規模なアルゴリズムです。大規模アルゴリズムと中規模アルゴリズムを参照してください。このアルゴリズムは,ヘッセ乗算関数など、特別な手法を使用してメモリ使用量を節約できます。詳細は、fmincon
の选项
、「信頼領域反思法アルゴリズムを参照してください。
各アルゴリズムの説明にいては,制約付き非線形最適化アルゴリズムを参照してください。
Fsolveアルゴリズム
fsolve
は次の3のアルゴリズムをもっています。
“trust-region-dogleg”
(既定の設定)“信赖域”
“levenberg-marquardt”
optimoptions
を使用して,コマンドラ算法
オプションを設定します。
推奨 |
---|
|
推奨の理由
“trust-region-dogleg”
は,非線形方程式を解くために特別に設計された唯一のアルゴリズムです。その他は,この関数の二乗和を最小にするよう試みます。“信赖域”
アルゴリズムは,スパ,ス問題に対して効果的です。このアルゴリズムは,大規模な問題に対して、ヤコビ乗算関数などのような特別な手法を使用できます。
各アルゴリズムの説明にいては,方程式を解くためのアルゴリズムを参照してください。
Fminuncアルゴリズム
fminunc
は次の2のアルゴリズムをもっています。
“拟牛顿”
(既定の設定)“信赖域”
optimoptions
を使用して,コマンドラ算法
オプションを設定します。
推奨 |
---|
最小化が失敗した場合のヘルプは,ソルバ,が失敗する場合またはソルバ,が成功している可能性がある場合を参照してください。 |
各アルゴリズムの説明にいては,制約なし非線形最適化アルゴリズムを参照してください。
最小二乗アルゴリズム
lsqlin
lsqlin
は次の3のアルゴリズムをもっています。
“内点”
(既定の設定)“trust-region-reflective”
“激活集”
optimoptions
を使用して,コマンドラ算法
オプションを設定します。
推奨 |
---|
最小化が失敗した場合のヘルプは,ソルバ,が失敗する場合またはソルバ,が成功している可能性がある場合を参照してください。 詳細は,内点法アルゴリズムによる精度低下の可能性にいてを参照してください。 |
各アルゴリズムの説明にいては,最小二乗(モデル当てはめ)アルゴリズムを参照してください。
Lsqcurvefitとlsqnonlin
lsqcurvefit
とlsqnonlin
は次の2のアルゴリズムをもっています。
“trust-region-reflective”
(既定の設定)“levenberg-marquardt”
optimoptions
を使用して,コマンドラ算法
オプションを設定します。
推奨 |
---|
最小化が失敗した場合のヘルプは,ソルバ,が失敗する場合またはソルバ,が成功している可能性がある場合を参照してください。 |
各アルゴリズムの説明にいては,最小二乗(モデル当てはめ)アルゴリズムを参照してください。
線形計画法のアルゴリズム
linprog
は次の3のアルゴリズムをもっています。
对偶单纯形的
(既定の設定)“interior-point-legacy”
“内点”
optimoptions
を使用して,コマンドラ算法
オプションを設定します。
推奨 |
---|
まず 最小化が失敗した場合のヘルプは,ソルバ,が失敗する場合またはソルバ,が成功している可能性がある場合を参照してください。 詳細は,内点法アルゴリズムによる精度低下の可能性にいてを参照してください。 |
推奨の理由
多くの場合,
对偶单纯形的
アルゴリズムと“内点”
アルゴリズムは高速で,最小限のメモリを使用します。“interior-point-legacy”
アルゴリズムは“内点”
に類似していますが,“interior-point-legacy”
では速度やロバスト性が低下したり,メモリ使用量が増加したりすることがあります。
各アルゴリズムの説明にいては,線形計画法のアルゴリズムを参照してください。
二次計画法のアルゴリズム
quadprog
は次の3のアルゴリズムをもっています。
“interior-point-convex”
(既定の設定)“trust-region-reflective”
“激活集”
optimoptions
を使用して,コマンドラ算法
オプションを設定します。
推奨 |
---|
最小化が失敗した場合のヘルプは,ソルバ,が失敗する場合またはソルバ,が成功している可能性がある場合を参照してください。 詳細は,内点法アルゴリズムによる精度低下の可能性にいてを参照してください。 |
各アルゴリズムの説明にいては,二次計画法のアルゴリズムを参照してください。
大規模アルゴリズムと中規模アルゴリズム
非スパ,ス行列を保存したり,演算する必要がない線形代数を使用する場合,最適化アルゴリズムは大規模になります。内部の計算処理では可能な限り,スパ,ス行列を用いた保存やスパ,ス線形代数を用いた演算を行います。さらに内部アルゴリズムはスパースコレスキー因子などのようなスパース性を維持し,共役勾配法のように行列を生成することはありません。
一方、中規模メソッドは非スパ,ス行列を内部的に作成し,密な線形代数を利用します。問題が十分に大きい場合,非スパース行列はメモリを大量に消費し,密な線形代数を計算するのに時間がかかります。
“大規模”という名前に間違った印象をもたないでください。大規模アルゴリズムは小規模な問題にも使用できます。また,大規模アルゴリズムを使用するためにスパ,ス行列を指定する必要はありません。制約タesc escプを追加するなどの追加機能にアクセスする場合は,中規模を選択してください。パフォ,マンスが向上する場合があります。
内点法アルゴリズムによる精度低下の可能性にいて
fmincon
、quadprog
、lsqlin
およびlinprog
の内点法アルゴリズムには,メモリの消費量が少ないことや,大規模な問題をすばやく解決できるなど,多くの利点があります。ただし,その解は他のアルゴリズムの解と比較して精度がやや落る可能性があります。潜在的な精度の低下の原因は,内部計算されるバリア関数によって,反復が不等式制約の境界から遠ざけられるためです。
実際に多くの場合,この精度の低下は非常に小さなものです。
精度の低下を抑えるには,以下を試してください。
StepTolerance
、OptimalityTolerance
,また場合によってはConstraintTolerance
の許容誤差を小さくしてソルバ,を再実行します(ただし,妥当な許容誤差は維持してください)。許容誤差と停止条件を参照してください。内点法の求解から始め,別のアルゴリズムを実行します。一部のアルゴリズムでは大量のメモリや長時間を要することがあり,また,すべての
linprog
アルゴリズムと一部のquadprog
アルゴリズムは初期点を受け入れないため,この方法は失敗することがあります。
たとえば,下限が0という制約で関数xを最小化してみます。fmincon
の既定の内点
アルゴリズムを使用します。
选项= optimoptions(@fmincon,“算法”,“内点”,“显示”,“关闭”);X = fmincon(@(X) X,1,[],[],[],[], [],0,[],[],options)
X = 2.0000 -08
fmincon
sqp
アルゴリズムを使用すると次のようになります。
选项。算法=“sqp”;X2 = fmincon(@(x)x,1,[],[],[],[], [],0,[],[],options)
X2 = 0
同様に,linprog
interior-point-legacy
アルゴリズムを使用して同じ問題を解きます。
Opts = optimoptions(@linprog,“显示”,“关闭”,“算法”,“interior-point-legacy”);X = linprog(1,[],[],[],[],0,[],1,opts)
X = 2.0833e-13
linprog
对偶单纯形
アルゴリズムを使用すると次のようになります。
选择。算法=对偶单纯形的;X2 = linprog(1,[],[],[],[], [],0,[],1,opts)
X2 = 0
これらの場合,内点法アルゴリズムで精度は低下しますが,正しい解にきわめて近くなっています。