Interior-Point Methods
Walk inside the feasible region, not along its walls. A barrier keeps you interior while Newton steps pull central, then the barrier fades to the corner.
Why Does This Exist?
Simplex crawls on some LPs (exponential worst case) and nonsmooth active-set chatter stalls on degenerate walls. Large sparse LPs, QPs, SOCPs, and SDPs need polynomial-time reliability, not corner-hopping luck.
Interior-point adds a log barrier holding iterates strictly inside, Newton-steps the smoothed KKT system (the central path), and shrinks . Primal-dual variants track both sides with iterations. They solve the programs in linear programming and convex optimization at scale.
The one idea you need first
Slack s_i = b_i - a_i^\\top x > 0 measures wall distance. explodes at walls, gently inside: the barrier tolls proximity without forbidding approach. Central path points minimize c^\\top x - \\mu\\sum\\log s_i per .
Think of It Like This
Hallways, not walls
Simplex slides along walls feeling for corners. Interior-point walks the hallway middle, guided by guard rails (barrier) that push back near walls. As the hallway narrows ( shrinks), the middle converges to the exit corner.
Hallway walking ignores corner count, which is why it wins huge rooms. Where it stops: narrow doorways (ill-conditioning) still squeeze Newton steps, needing careful linear algebra.
How It Actually Works
Each iteration: Newton-solve the perturbed KKT (, A^\\top y + c = 0... with ), step to stay interior, shrink by 0.1-0.5x on progress. Mehrotra predictor-corrector adapts per step in practice. Cross over to a vertex afterward if a basic solution is needed. Sparse Cholesky/KKT factorization dominates cost; ordering and regularization decide speed.
Worked example
Minimize over (push right). Barrier . Minimize : derivative . At : solve . Try : ; : . Root near . At : root near . Path : interior points sliding to the vertex as fades.
Code
mu = 0.1x = 0.5for _ in range(50): # Newton on -x + mu*B g = -1 - mu / x + mu / (1 - x) # gradient h = mu / x**2 + mu / (1 - x)**2 # Hessian x = min(max(x - g / h, 1e-6), 1 - 1e-6)print(round(x, 3)) # -> 0.91Newton lands at 0.910 for , matching the hand root. Shrink and repeat toward 1.
Watch Out For
Starting on the boundary
Barrier is infinite: boundary starts crash immediately. Strict interior starts are mandatory, and aggressive steps that cross walls diverge next iteration.
Initialize strictly inside (analytic center heuristics) and backtrack to stay interior. If iterates stick at slack, the step logic is broken.
Solving KKT systems naively dense
Dense factorization of million-variable KKT systems exhausts memory in one step. Teams blame the algorithm while the linear algebra choice kills it.
Exploit sparsity, use iterative solvers with preconditioners, or switch to first-order for extreme scale. Profile the factorization before the iteration count.
The Quick Version
- Barriers hold iterates interior; Newton tracks the central path; shrinking lands the corner.
- Example on : path 0.910 at sliding to 0.999.
- Primal-dual path-following runs polynomial time on LP, QP, SOCP, SDP.
- Predictor-corrector adapts ; crossover recovers vertices when needed.
- Start strictly interior and step to stay there.
- Sparse KKT algebra decides large-scale speed.