Matlabはリニアプログラムを解決するための複数のアルゴリズムを提供しています。例えば、Matlab R2012bは、「アクティブセット」、「信頼領域反射」、「内点」、「内点凸」、「levenberg-marquardt」、「信頼領域dogleg」、 lm-line-search '、または' sqp 'を指定します。matlabはすべてのlinprogアルゴリズムを実行しています(アルゴリズムのmatlabリストはありますか?)
しかし、他のバージョンのMatlabでは、さまざまなアルゴリズムがサポートされています。
ユーザーMatlab-Versionでサポートされているすべてのアルゴリズムでループを実行したいと思います。 Matlabの推奨命令のように注文するようにしたいと思います。
私はこのような何かを実装したいと思います:
i=1;
x=[];
while (isempty(x))
options=optimset(options,'Algorithm',Here_I_need_a_list_of_Algorithms(i))
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options);
end
99%で、このコードは
x = linprog(f,A,b,Aeq,beq,lb,ub,x0,options);
と同等でなければなりませんが、時にはアルゴリズムがあるため数値的な問題の空の配列をバック与えます( exitflag -4)。他のアルゴリズムの1つが解決策を見つける可能性がある場合は、私もそれらを試してみたいと思います。
私の質問は: インストールされているMatlabバージョンでサポートされているすべてのlinprogアルゴリズムのリストをMatlabが推奨するように自動的に取得する可能性はありますか?
私はすべてのアルゴリズムをループすると、他のシナリオでも意味をなさないと思います。たとえば、非常に正確なデータが必要で時間がかかる場合は、それらをすべて実行し、最良の結果を与えるものを評価することができます。 または、特定の構造を持つLPに対してどのアルゴリズムが最適であるかを見たい場合は、すべてのアルゴリズムをループしたいと考えています。
私はmatlabに詳しくはありませんが、[クイックチェック](https://de.mathworks.com/help/optim/ug/choosing-the-algorithm.html#bsbwx4h)にはデュアルシンプレックス私が期待していた私のための2つの内点アルゴリズム(あなたは本当にLPについて話していますか?)もちろん、非線形アプローチのほとんどはLPも解くことができますが、私はそれをお勧めしません。私はそれらの実装がどれほど良いのか分かりませんが、LPは面倒ではありません(非常に不安定なものを除いて)。私はデュアルシンプレックスとインテリアポイントのalgsを試し、他のすべてを無視するだろう! (これは精度についての推論も簡素化します) – sascha
@sascha残念ながら、dual-simplexは私の古いMatlab R2012bでは実装されていません。しかし、現在のMatlab R2017aのデュアルシンプレックスはデフォルトです。大規模な内部ポイント •中規模のアクティブセット •中規模のシンプレックス は、私の元の質問に記載されているアルゴリズムの一部がLP-ソルバー。 – Jakob