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

Kronos motion — loss cone

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.