このページの翻訳は最新ではありません。ここをクリックして,英语の最新版を参照してください。
粉刺
には,次の5つのアルゴリズムオプションがあります。
“内点”
(既定の设定)
“信任区域反射”
“小数量议定书”
“SQP遗”
“有源集”
optimoptions
を使用して,コマンドラインで算法
オプションを设定します。
推奨 |
---|
详细は,内点法アルゴリズムによる精度低下の可能性についてを参照してください。 |
“内点”
は大规模なスパース问题と小规模な密问题を处理します。このアルゴリズムは,すべての反复で范囲を満たし,南
またはINF.
の结果から回复できます。これは大规模なアルゴリズムです。大规模アルゴリズムと中规模アルゴリズムを参照してください。このアルゴリズムは,大规模な问题に対して特别な手法を使用できます详细。は,粉刺
の选项
,「内点法アルゴリズム」を参照してください。
“小数量议定书”
はすべての反复で范囲を満たします。このアルゴリズムは,南
またはINF.
の结果から回复できます。これは大规模なアルゴリズムではありません。大规模アルゴリズムと中规模アルゴリズムを参照してください。
“SQP遗”
は“小数量议定书”
に类似していますが,通常,より低速で,さらに多くのメモリを使用します。
“有源集”
は大きなステップを取ることができるので,高速に处理可能です。このアルゴリズムは,滑らかでない制约をもつ一部の问题に対して效果的です。これは大规模なアルゴリズムではありません。大规模アルゴリズムと中规模アルゴリズムを参照してください。
“信任区域反射”
は,勾配を与えることを必要とし,范囲のみまたは线形等式制约のみ(ただし両方ではない)が可能です。これらの制限内でならば,このアルゴリズムは大规模なスパース问题と小规模な密问题を效果的に扱うことができます。これは大规模なアルゴリズムです。大规模アルゴリズムと中规模アルゴリズムを参照してください。このアルゴリズムは,ヘッセ乘算关数など,特别な手法を使用してメモリ使用量を节约できます详细。は,粉刺
の选项
,「信頼领域反射法アルゴリズム」を参照してください。
各アルゴリズムの说明については,制约付き非线形最适化アルゴリズムを参照してください。
FSOLVE.
は次の3つのアルゴリズムをもっています。
“信任区域狗腿”
(既定の设定)
“信任区”
“文伯格 - 马夸特”
optimoptions
を使用して,コマンドラインで算法
オプションを设定します。
推奨 |
---|
|
“信任区域狗腿”
は,非线形方程式を解くために特别に设计された唯一のアルゴリズムです。その他は,この关数の二乘和を最小にするよう试みます。
“信任区”
アルゴリズムは,スパース问题に対して效果的です。このアルゴリズムは,大规模な问题に対して,ヤコビ乘算关数などのような特别な手法を使用できます。
各アルゴリズムの说明については,方程式を解くためのアルゴリズムを参照してください。
Fminunc.
は次の2つのアルゴリズムをもっています。
“准牛顿”
(既定の设定)
“信任区”
optimoptions
を使用して,コマンドラインで算法
オプションを设定します。
推奨 |
---|
最小化が失败した场合のヘルプは,ソルバーが失败する场合またはソルバーが成功している可能性がある场合を参照してください。 |
各アルゴリズムの说明については,制约なし非线形最适化アルゴリズムを参照してください。
lsqlin
は次の3つのアルゴリズムをもっています。
“内点”
(既定の设定)
“信任区域反射”
“有源集”
optimoptions
を使用して,コマンドラインで算法
オプションを设定します。
推奨 |
---|
最小化が失败した场合のヘルプは,ソルバーが失败する场合またはソルバーが成功している可能性がある场合を参照してください。 详细は,内点法アルゴリズムによる精度低下の可能性についてを参照してください。 |
各アルゴリズムの说明については,最小二乘(モデル当てはめ)アルゴリズムを参照してください。
lsqcurvefit
とlsqnonlin
は次の2つのアルゴリズムをもっています。
“信任区域反射”
(既定の设定)
“文伯格 - 马夸特”
optimoptions
を使用して,コマンドラインで算法
オプションを设定します。
推奨 |
---|
最小化が失败した场合のヘルプは,ソルバーが失败する场合またはソルバーが成功している可能性がある场合を参照してください。 |
各アルゴリズムの说明については,最小二乘(モデル当てはめ)アルゴリズムを参照してください。
linprog
は次の3つのアルゴリズムをもっています。
“双单”
(既定の设定)
“内点遗留”
“内点”
optimoptions
を使用して,コマンドラインで算法
オプションを设定します。
推奨 |
---|
まず 最小化が失败した场合のヘルプは,ソルバーが失败する场合またはソルバーが成功している可能性がある场合を参照してください。 详细は,内点法アルゴリズムによる精度低下の可能性についてを参照してください。 |
多くの场合,“双单”
アルゴリズムと“内点”
アルゴリズムは高速で,最小限のメモリを使用します。
“内点遗留”
アルゴリズムは“内点”
に类似していますが,“内点遗留”
では速度やロバスト性が低下したり,メモリ使用量が増加したりすることがあります。
各アルゴリズムの说明については,线形计画法のアルゴリズムを参照してください。
quadprog
は次の3つのアルゴリズムをもっています。
“内点凸”
(既定の设定)
“信任区域反射”
“有源集”
optimoptions
を使用して,コマンドラインで算法
オプションを设定します。
推奨 |
---|
最小化が失败した场合のヘルプは,ソルバーが失败する场合またはソルバーが成功している可能性がある场合を参照してください。 详细は,内点法アルゴリズムによる精度低下の可能性についてを参照してください。 |
各アルゴリズムの说明については,二次计画法のアルゴリズムを参照してください。
非スパース行列を保存したり,演算する必要がない线形代数を使用する场合,最适化アルゴリズムは大规模になります。内部の计算处理では可能な限り,スパース行列を用いた保存やスパース线形代数を用いた演算を行います。さらに内部アルゴリズムはスパースコレスキー因子などのようなスパース性を维持し,共役勾配法のように行列を生成することはありません。
一方,中规模メソッドは非スパース行列を内部的に作成し,密な线形代数を利用します。问题が十分に大きい场合,非スパース行列はメモリを大量に消费し,密な线形代数を计算するのに时间がかかります。
「大规模」という名前に间违った印象をもたないでください。大规模アルゴリズムは小规模な问题にも使用できます。また,大规模アルゴリズムを使用するためにスパース行列を指定する必要はありません。制约タイプを追加するなどの追加机能にアクセスする场合は,中规模を选択してください。パフォーマンスが向上する场合があります。
粉刺
那quadprog
那lsqlin
およびlinprog
の内点法アルゴリズムには,メモリの消费量が少ないことや,大规模な问题をすばやく解决できるなど,多くの利点があります。ただし,その解は他のアルゴリズムの解と比较して精度がやや落ちる可能性があります。潜在的な精度の低下の原因は,内部计算されるバリア关数によって,反复が不等式制约の境界から远ざけられるためです。
実际に多くの场合,この精度の低下は非常に小さなものです。
精度の低下を抑えるには,以下を试してください。
StepTolerance
那OptimalityTolerance
,また场合によってはConstraintTolerance
の许容误差を小さくしてソルバーを再実行します(ただし,妥当な许容误差は维持してください)。许容误差と停止条件を参照してください。
内点法の求解から始め,别のアルゴリズムを実行します。一部のアルゴリズムでは大量のメモリや长时间を要することがあり,また,すべてのlinprog
アルゴリズムと一部のquadprog
アルゴリズムは初期点を受け入れないため,この方法は失败することがあります。
たとえば,下限が0という制约で关数Xを最小化してみます。粉刺
の既定の内点
アルゴリズムを使用します。
选项= optimoptions(@fmincon,'算法'那“内点”那'展示'那'离开');X = fmincon(@(X)X,1,[],[],[],[],0,[],[],选项)
X = 2.0000E-08
粉刺
SQP
アルゴリズムを使用すると次のようになります。
options.Algorithm =“小数量议定书”;X2 = fmincon(@(X)X,1,[],[],[],[],0,[],[],选项)
X2 = 0
同様に,linprog
内点遗留
アルゴリズムを使用して同じ问题を解きます。
OPTS = optimoptions(@linprog,'展示'那'离开'那'算法'那“内点遗留”);X = linprog(1,[],[],[],[],0,[],1,OPTS)
X = 2.0833e-13
linprog
双单
アルゴリズムを使用すると次のようになります。
opts.Algorithm =“双单”;X2 = linprog(1,[],[],[],[],0,[],1,OPTS)
X2 = 0
これらの场合,内点法アルゴリズムで精度は低下しますが,正しい解にきわめて近くなっています。