二次规划是指带有二次型目标函数和约束条件的最优化问题。
其标准形式如下:
即在Gx<h 和Ax=b的约束下,最小化目标函数。其中,当P是正定矩阵时,目标函数存在全局唯一最优解;P是半正定矩阵时,目标函数是凸函数,存在全局最优解(不唯一);P是不定矩阵时,目标函数非凸,存在多个局部最小值和稳定点,为np难问题。
下面代码中,由于系数1/2的存在,P矩阵为二次方项系数两倍的对角阵
import numpy as np
from cvxopt import matrix,solvers
n=3;
P=matrix(0.,(n,n))
P[::n+1]=[3,2,1.7]
q=matrix([3,-8.2,-1.95])
A=matrix([[1.,0,1],[-1,2,0],[0,1,2]]).T
b=matrix([2.,2,3])
Aeq=matrix(1.,(1,n))
beq=matrix(3.)
s=solvers.qp(P,q,A,b,Aeq,beq)
print("最优解为:",s['x'])
print("最优值为:",s['primal objective'])