🎉 75% of content is free forever — Unlock Premium from $10/mo →
CW
Search courses…
💼 Servicesℹ️ About✉️ ContactView Pricing Plansfrom $10

Quadratic Programming

OptimizationQuadratic🟢 Free Lesson

Advertisement

Quadratic Programming


Quadratic Programming: Standard Form


Positive Definite Hessian


Active Set Methods


Interior Point Methods


Wolfe Dual


Ridge Regression as QP


SVM as QP


Python Implementation: cvxpy

import cvxpy as cp
import numpy as np

# Generate data for a QP: min 0.5*x'*Q*x + c'*x
np.random.seed(42)
n = 5
Q = np.random.randn(n, n)
Q = Q.T @ Q  # Make positive definite
c = np.random.randn(n)

# Decision variable
x = cp.Variable(n)

# Objective
objective = cp.Minimize(0.5 * cp.quad_form(x, Q) + c @ x)

# Constraints
A = np.random.randn(3, n)
b = np.ones(3)
constraints = [A @ x <= b, cp.sum(x) == 1]

# Solve
prob = cp.Problem(objective, constraints)
prob.solve()

print(f"Optimal value: {prob.value:.4f}")
print(f"Optimal x: {x.value}")
print(f"Status: {prob.status}")
print(f"Solver: {prob.solver_stats.solver_name}")

Python Implementation: scipy

from scipy.optimize import minimize
import numpy as np

np.random.seed(42)
n = 5
Q = np.random.randn(n, n)
Q = Q.T @ Q
c = np.random.randn(n)

# Unconstrained QP via scipy
def objective(x):
    return 0.5 * x @ Q @ x + c @ x

def gradient(x):
    return Q @ x + c

def hessian(x):
    return Q

x0 = np.zeros(n)
result = minimize(objective, x0, jac=gradient, hess=hessian, method='trust-constr')

print(f"Optimal value: {result.fun:.4f}")
print(f"Optimal x: {result.x}")
print(f"Converged: {result.success}")

# Constrained QP with bounds
from scipy.optimize import minimize
bounds = [(0, 1) for _ in range(n)]
eq_constraint = {'type': 'eq', 'fun': lambda x: np.sum(x) - 1}

result2 = minimize(objective, x0, jac=gradient, hess=hessian,
                   method='SLSQP', bounds=bounds, constraints=[eq_constraint])
print(f"Constrained optimal: {result2.fun:.4f}")

Applications in AI / Machine Learning


Common Mistakes

MistakeWhy It FailsCorrect Approach
Using a non-symmetric QGradient is ½(Q + Qᵀ)x, not QxSymmetrize: Q <- ½(Q + Qᵀ) before solving
Ignoring positive semi-definitenessNon-convex QP may have many local minimaVerify Q ≽ 0 via eigenvalue decomposition; use global solver if not
Confusing ½ conventionGradient off by factor of 2Always verify: ∇(½xᵀQx) = Qx, not 2Qx
Not scaling constraintsPoorly scaled A, b cause numerical issuesNormalize rows of A so ‖aᵢ‖ ≈ 1
Assuming unbounded feasible regionQP may be infeasible or unboundedCheck feasibility before solving; add bounds
Using QP for non-quadratic objectivesQP solver assumes quadratic curvatureUse nonlinear solver (IPOPT, SNOPT) for general NLP
Ignoring warm-startingRepeated QPs (MPC, online learning) waste timeUse previous solution as warm start for next solve

Interview Questions


Practice Problems


Quick Reference


Cross-References

Need Expert Mathematics Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement