Python cvxopt求解器qp如何工作

我想使用cvxopt求解器qp并计算拉格朗日乘数,但我想知道它是如何“完全”的.我试图找到更多的信息,但没有太多关于cvxopt的信息.我正在研究这个示例问题,我不确定这些变量的含义以及它们如何提出解决方案.

这个例子是这样的:

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'])

最佳答案 你应该看看这个:

Solving QP with CVXopt

为了解决二次规划问题,CVXopt接受一组矩阵,通常称为P,q,G,A和h.
您必须先将问题转换为CVXopt接受的特定形式(在链接中提到).
目的是找到一个最优解,(在你的例子中,拉格朗日乘数),它是矩阵’x’.

您“存储”解决方案的对象具有许多属性,其中一个属性是矩阵“x”,您可以打印或用于进一步计算.

点赞