ClpSimplex

Main simplex solver class - orchestrates primal and dual simplex algorithms

Algorithm

Simplex Method for Linear Programming: Maintains a basic feasible solution (BFS) at a vertex of the polytope. Each iteration moves along an edge to an adjacent vertex with better objective.

  • Primal simplex: maintains primal feasibility, achieves dual feasibility
  • Dual simplex: maintains dual feasibility, achieves primal feasibility Terminates when both primal and dual feasibility achieved (optimality).

Complexity: $O(2^n)$ worst-case (Klee-Minty), but typically polynomial in practice. Per-iteration cost: $O(m²)$ for basis update + $O(mn)$ for pricing. Iteration count: typically $O(m)$ to $O(3m)$ for practical problems.

References:

  • Dantzig, G.B. (1963). "Linear Programming and Extensions". Princeton University Press. [Original simplex method]
  • Forrest, J.J. and Goldfarb, D. (1992). "Steepest-edge simplex algorithms for linear programming". Math. Programming 57:341-374. [Steepest edge pricing] @note The algorithm_ member indicates variant: positive=primal, negative=dual
  • Wright, S.J. (1997). "Primal-Dual Interior-Point Methods". SIAM.

See Also

Source

Header file: `src/ClpSimplex.hpp`