美文网首页
python的cvxopt库解决二次规划问题

python的cvxopt库解决二次规划问题

作者: 一路向后 | 来源:发表于2021-05-31 22:12 被阅读0次

1.二次规划标准型

Min\quad\frac{1}{2}x^TPx\ +\ q^T
s.t.\quad Gx\ \leqslant\ h
Ax\ =\ b

2.以一个标准的例子进行过程说明

Min\quad\frac{1}{2}x^2+3x+4y
s.t.\ \quad x,y≥0
\quad\quad\quad x+3y≥15
\quad\quad\quad 2x+5y≤100
\quad\quad\quad 3x+4y≤80

3.提取变量

P = \begin{bmatrix} 1&0&0&0\\0&0&0&0\end{bmatrix}

q = \begin{bmatrix} 3&4\end{bmatrix}

G = \begin{bmatrix} -1&0&-1&2&3\\0&-1&-3&5&4\end{bmatrix}

h = \begin{bmatrix} 0&0&-15&100&80\end{bmatrix}

4.源码实现

from cvxopt import solvers, matrix
  
P = matrix([[1.0,0.0],[0.0,0.0]])   # matrix里区分int和double,所以数字后面都需要加小数点

q = matrix([3.0,4.0])

G = matrix([[-1.0,0.0,-1.0,2.0,3.0],[0.0,-1.0,-3.0,5.0,4.0]])

h = matrix([0.0,0.0,-15.0,100.0,80.0])

sol = solvers.qp(P,q,G,h)           # 调用优化函数solvers.qp求解

print(sol['x'])                     # 打印结果,sol里面还有很多其他属性,读者可以自行了解

5.运行及其结果

$ python3 example.py
     pcost       dcost       gap    pres   dres
 0:  1.0780e+02 -7.6366e+02  9e+02  1e-16  4e+01
 1:  9.3245e+01  9.7637e+00  8e+01  1e-16  3e+00
 2:  6.7311e+01  3.2553e+01  3e+01  6e-17  1e+00
 3:  2.6071e+01  1.5068e+01  1e+01  2e-16  7e-01
 4:  3.7092e+01  2.3152e+01  1e+01  2e-16  4e-01
 5:  2.5352e+01  1.8652e+01  7e+00  8e-17  3e-16
 6:  2.0062e+01  1.9974e+01  9e-02  6e-17  3e-16
 7:  2.0001e+01  2.0000e+01  9e-04  6e-17  3e-16
 8:  2.0000e+01  2.0000e+01  9e-06  9e-17  2e-16
Optimal solution found.
[ 7.13e-07]
[ 5.00e+00]

相关文章

网友评论

      本文标题:python的cvxopt库解决二次规划问题

      本文链接:https://www.haomeiwen.com/subject/lkhisltx.html