2010-11-26 49 views
1

我想知道用計算機解決二次編程的方法(不是用手工)。我可以閱讀的任何數學材料?謝謝!解決二次編程問題

+3

我假設你在談論[一種特殊的(數學)優化問題](http://en.wikipedia.org/wiki/Quadratic_programming)... – 2010-11-26 02:53:23

+0

是的。解決這個數學問題的計算方法 – franziga 2010-11-26 04:09:50

+0

我不知道這個東西,但一個視圖點擊導致[這篇維基百科文章](https://secure.wikimedia.org/wikipedia/en/wiki/Sequential_quadratic_programming)其中提到幾個包。 – 2010-11-26 14:42:43

回答

1

您想使用黑盒軟件包。實施一個強大的QP解算器是非常困難的。

您沒有提及您使用的語言,但如果是C++,QuadProg ++是輕量級且免費的。

1

可以使用某種內點法。 通常QP問題是非常特殊的,可以使用較少的一般方法,例如支持向量機中出現的QP的Platt算法。

1

如果代碼很短並且使用SVD和LU,那麼它可能是一個簡單的求解器,只存在等式約束或根本沒有約束的問題。可以使用諸如quadprog(matlab),quadprog ++(C++),mosek(matlab和C++)等工具來解決具有不等式約束的QP。 C++庫可以使用.net語言。

0

答案很大程度上取決於問題的大小以及二次函數的凸性。如果你的問題是凸的,你喜歡使用python,你可以使用cvxmodfree。對於數學材料,還有凸形優化書freely available。對於非凸問題,硬幣或項目的包IPopt將工作以找到本地最佳解決方案。