Python-cvxopt库的使用(2)(解决QP问题)

对于python cvxopt 库,这个库用于求解线性和二次规划。本节介绍如何求解线性规划问题。
形如以下的问题:
在这里插入图片描述
我们将其写成标准形式:
在这里插入图片描述
注意,约束条件需要化为:
在这里插入图片描述
对应写出P,q,G,h,A,b矩阵。

P=2 * matrix([[2., 0.5],[0.5,1.]])
q=matrix([1.,1.])
G=matrix([[-1.,0.],[0.,-1.]])
h=matrix([0.,0.])
A=matrix([1.,1.],(1,2))
b=matrix(1.)

要注意,这里的matrix是cvx库的matrix写法,要求是按列从左到右书写。另外,要严格按照标准形式的方式写出对应矩阵。

接下来调用标准的求解器solver.lp计算:

solvers.options['show_progress'] = True
sol = solvers.qp(P,q,G,h,A,b)
print(sol['x'])
print(sol['primal objective'])

结果如下:

     pcost       dcost       gap    pres   dres
 0:  1.8889e+00  7.7778e-01  1e+00  2e-16  2e+00
 1:  1.8769e+00  1.8320e+00  4e-02  1e-16  6e-02
 2:  1.8750e+00  1.8739e+00  1e-03  1e-16  5e-04
 3:  1.8750e+00  1.8750e+00  1e-05  0e+00  5e-06
 4:  1.8750e+00  1.8750e+00  1e-07  2e-16  5e-08
Optimal solution found.
[ 2.50e-01]
[ 7.50e-01]
1.8750000000000182
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章