Quadratic program(二次规划)
标准形式:-A quadratic program is an optimization problem with a quadratic objective and affine equality and inequality constraints.
import numpy as np
import cvxpy as cp
#problem data
m,n = 15,10
p = 5
np.random.seed(1)
P = np.random.randn(n,n)
P = P.T@P
q = np.random.randn(n)
G = np.random.randn(m,n)
h = G@np.random.randn(n)
A = np.random.randn(p,n)
b = np.random.randn(p)
#@:n*n matrix
#problem variable
x = cp.Variable(n)
#constraints
constraints = [G@x<=h, A@x==b]
#objective
objective = cp.Minimize(0.5*cp.quad_form(x,P)+q.T@x)#x.T@A@x
#construct the problem
prob = cp.Problem(objective,constraints)
#sovle
prob.solve(solver = cp.OSQP,verbose = True)
#expression
print('x = %s'%x.value)
print('Min-value:%s'%prob.value)