2010-11-26 10 views
1

コンピュータで二次プログラミングを解決する方法を知りたい(手作業ではない)。私が読むことができる数学的な資料ですか?ありがとう!二次プログラミングを解く

+3

私は[特定の種類の(数学的な)最適化問題](http://en.wikipedia.org/wiki/Quadratic_programming)について話していると仮定します。 –

+0

はい。その数学的問題を解決するための計算方法 – franziga

+0

私はこのようなことについて手掛かりはありませんでしたが、ビューのクリックは[このWikipediaの記事](https://secure.wikimedia.org/wikipedia/en/wiki/Sequential_quadratic_programming)いくつかのパッケージ。 –

答えて

1

ブラックボックスのソフトウェアパッケージを使用します。堅牢なQPソルバを実装することは難しいことです。

あなたはどの言語を使用しているかは言及していませんが、C++の場合、QuadProg ++は軽量で無料です。

+0

本当に難しいのであれば、本当にパッケージを使う必要があると思います。私は.NETを使用しています。私は無料のライブラリがあることを願っています。 – franziga

1

ある種の内点法が使用できます。 QPの問題は非常に特殊であり、SVMで発生するQPのPlattのアルゴリズムなど、あまり一般的でない方法を使用することは可能です。

+0

ありがとうございます。実際に私は(コンピュータ科学以外の学生では書かれていない)コードを持っていますが、彼はSVDとLUの操作をいくつか使用していましたが、完全な画像を得ることはできません。 – franziga

1

コードが短くSVDとLUを使用している場合は、等価制約または制約なしの問題に対する単純なソルバーである可能性があります。不等式制約付きQPは、quadprog(matlab)、quadprog ++(C++)、mosek(matlabおよびC++)などのツールを使用して解決できます。 C++ライブラリは.net言語で使用できます。

0

答えは、問題のサイズと二次関数の凸性に強く依存します。あなたの問題が凸で、Pythonを好きなら、freecvxmodを使うことができます。数学的な材料については、凸最適化ブックfreely availableもあります。凸でない問題の場合、コインまたはプロジェクトのIPoptパッケージは、ローカル最適解を見つけるために動作します。