2015-09-12 27 views
2

我想使用cvxopt求解器qp並計算拉格朗日乘數,但我想知道它是如何「完全」工作的。我試圖找到更多的信息,但沒有太多有關cvxopt的信息。我在看這個例子問題,我不確定這些變量是什麼意思,以及他們如何提出解決方案。python cvxopt求解器qp基本上可以工作

的例子是這樣的:

minimize: 2x_{1}^{2} + x_{2}^{2} + x_{1}x_{2} + x_{1} + x_{2} 
subject to: x_{1} >= 0 
      x_{2} >= 0 
      x_{1} + x_{2} = 1 

可以通過使用

Q = 2*matrix([ [2, .5], [.5, 1] ]) 
p = matrix([1.0, 1.0]) 
G = matrix([[-1.0,0.0],[0.0,-1.0]]) 
h = matrix([0.0,0.0]) 
A = matrix([1.0, 1.0], (1,2)) 
b = matrix(1.0) 
sol=solvers.qp(Q, p, G, h, A, b) 
print(sol['x']) 

回答

6

可以解決你應該看看這個:

Solving QP with CVXopt

爲了解決二次編程問題,CVXopt接受一組矩陣,屬被提及爲P,q,G,A和h。 您必須首先將您的問題轉換爲CVXopt接受的特定形式(在鏈接中提到)。 目的是找到一個最佳的解決方案,(在你的情況下,拉格朗日乘子),這是矩陣'x'。

「存儲」解決方案的對象具有許多屬性,其中一個屬性是矩陣「x」,您可以將其打印或用於進一步計算。