Computing Library › Optimization
Optimization

Second-Order Cone Programming

Second-order cone programming optimizes a linear objective subject to constraints that a norm is bounded by an affine function, generalizing quadratic programs.

The cone constraint

A second-order cone program (SOCP) minimizes a linear objective subject to one or more constraints of the form ||A x + b|| <= c^T x + d, where the norm is the standard Euclidean norm. Each such constraint says a point lies inside a second-order cone, also called the ice-cream or Lorentz cone. These constraints are convex, so SOCPs are efficiently and reliably solvable.

What it generalizes

SOCP sits between linear programming and semidefinite programming in the tractability hierarchy. Linear programs are SOCPs with trivial (zero-radius) cones. Convex quadratic programs and quadratically constrained quadratic programs can be recast as SOCPs. So a single SOCP solver handles LP, QP, and QCQP as special cases, while remaining much cheaper than a general SDP.

Problems that fit

The norm-bound form captures many practical conditions directly. Robust linear programming with ellipsoidal uncertainty becomes an SOCP: hedging against uncertainty in a constraint's coefficients turns a linear constraint into a norm constraint. Portfolio problems with a variance limit, minimum-enclosing-ball and facility-location problems, and control problems with quadratic energy limits are all SOCPs.

python

import cvxpy as cp, numpy as np

# minimize c^T x  s.t.  ||A x + b||_2 <= d
x = cp.Variable(3)
A = np.random.randn(4,3); b = np.random.randn(4); c = np.ones(3)
prob = cp.Problem(cp.Minimize(c @ x), [cp.norm(A @ x + b, 2) <= 5])
prob.solve()

Why it is a sweet spot

SOCP is often the best home for a problem: expressive enough to model Euclidean norms, ellipsoidal uncertainty, and convex quadratics, yet solved by interior-point methods almost as efficiently as linear programs. When a modeling need pushes past linear programming, casting it as an SOCP rather than jumping to a full SDP usually preserves both accuracy and speed.