Table of Contents
Fetching ...

PDLP: A Practical First-Order Method for Large-Scale Linear Programming

David Applegate, Mateo Díaz, Oliver Hinder, Haihao Lu, Miles Lubin, Brendan O'Donoghue, Warren Schudy

TL;DR

PDLP is a practical first-order method for large-scale linear programming that extends PDHG with diagonal preconditioning, adaptive restarts, adaptive step sizes, primal-weight updates, presolve, and a feasibility polishing phase. Implemented in a multithreaded C++ core within Google OR-Tools, PDLP demonstrates reliable, scalable performance on extremely large LPs (125M to 6.3B nonzeros), solving eight of eleven instances to within a 1% relative gap while maintaining primal and dual feasibility errors below $10^{-8}$. Compared to Gurobi barrier and simplex methods, PDLP achieves competitive wall-clock performance under memory constraints, highlighting the practical potential of carefully engineered first-order methods for industry-scale optimization. The key contributions—feasibility polishing and a high-performance C++ PDLP implementation—substantially advance the applicability of first-order LP solvers in real systems. The work also provides a rich large-scale benchmark suite to guide future algorithmic developments and hardware-accelerated implementations for LP.

Abstract

We present PDLP, a practical first-order method for linear programming (LP) designed to solve large-scale LP problems. PDLP is based on the primal-dual hybrid gradient (PDHG) method applied to the minimax formulation of LP. PDLP incorporates several enhancements to PDHG, including diagonal preconditioning, presolving, adaptive step sizes, adaptive restarting, and feasibility polishing. Our algorithm is implemented in C++, available in Google's open-source OR-Tools library, and supports multithreading. To evaluate our method, we introduce a new collection of eleven large-scale LP problems with sizes ranging from 125 million to 6.3 billion nonzeros. PDLP solves eight of these instances to optimality gaps of 1\% (with primal and dual feasibility errors of less than $10^{-8}$) within six days on a single machine. We also compare PDLP with Gurobi barrier, primal simplex, and dual simplex implementations. Gurobi barrier solves only three instances, exceeding our 1TB RAM limit on the other eight. While primal and dual simplex are more memory-efficient than the barrier method, they are slower and solve only three instances within six days. Compared with the conference version of this work (in: Advances in Neural Information Processing Systems 34 (NeurIPS 2021)), the key new contributions are: (i) feasibility polishing, a technique that quickly finds solutions that are approximately optimal but almost exactly feasible (without which only three of the eleven problems can be solved); (ii) a multithreaded C++ implementation available in Google OR-Tools; and (iii) a new collection of large-scale LP problems. Note that the conference version should be referred to for comparisons with SCS and ablation studies, which we do not repeat in this paper.

PDLP: A Practical First-Order Method for Large-Scale Linear Programming

TL;DR

PDLP is a practical first-order method for large-scale linear programming that extends PDHG with diagonal preconditioning, adaptive restarts, adaptive step sizes, primal-weight updates, presolve, and a feasibility polishing phase. Implemented in a multithreaded C++ core within Google OR-Tools, PDLP demonstrates reliable, scalable performance on extremely large LPs (125M to 6.3B nonzeros), solving eight of eleven instances to within a 1% relative gap while maintaining primal and dual feasibility errors below . Compared to Gurobi barrier and simplex methods, PDLP achieves competitive wall-clock performance under memory constraints, highlighting the practical potential of carefully engineered first-order methods for industry-scale optimization. The key contributions—feasibility polishing and a high-performance C++ PDLP implementation—substantially advance the applicability of first-order LP solvers in real systems. The work also provides a rich large-scale benchmark suite to guide future algorithmic developments and hardware-accelerated implementations for LP.

Abstract

We present PDLP, a practical first-order method for linear programming (LP) designed to solve large-scale LP problems. PDLP is based on the primal-dual hybrid gradient (PDHG) method applied to the minimax formulation of LP. PDLP incorporates several enhancements to PDHG, including diagonal preconditioning, presolving, adaptive step sizes, adaptive restarting, and feasibility polishing. Our algorithm is implemented in C++, available in Google's open-source OR-Tools library, and supports multithreading. To evaluate our method, we introduce a new collection of eleven large-scale LP problems with sizes ranging from 125 million to 6.3 billion nonzeros. PDLP solves eight of these instances to optimality gaps of 1\% (with primal and dual feasibility errors of less than ) within six days on a single machine. We also compare PDLP with Gurobi barrier, primal simplex, and dual simplex implementations. Gurobi barrier solves only three instances, exceeding our 1TB RAM limit on the other eight. While primal and dual simplex are more memory-efficient than the barrier method, they are slower and solve only three instances within six days. Compared with the conference version of this work (in: Advances in Neural Information Processing Systems 34 (NeurIPS 2021)), the key new contributions are: (i) feasibility polishing, a technique that quickly finds solutions that are approximately optimal but almost exactly feasible (without which only three of the eleven problems can be solved); (ii) a multithreaded C++ implementation available in Google OR-Tools; and (iii) a new collection of large-scale LP problems. Note that the conference version should be referred to for comparisons with SCS and ablation studies, which we do not repeat in this paper.
Paper Structure (34 sections, 2 theorems, 28 equations, 1 figure, 4 tables, 5 algorithms)

This paper contains 34 sections, 2 theorems, 28 equations, 1 figure, 4 tables, 5 algorithms.

Key Result

Lemma 1

Suppose that $c = \mathbf 0$ (so we have a primal feasibility problem), $0 < \eta < 1/\| A \|_2$ and $y^{0} = \mathbf 0$. Then PDHG, i.e., eq:PDHG with $\bar{x}^{t} = \frac{1}{t} \sum_{i=1}^t x^{i}$ satisfies where $q = 4 \frac{1 + \eta \| A \|_2}{1 - \eta \| A \|_2}$.

Figures (1)

  • Figure 1: Speed up versus number of threads for PDLP on the design-match linear program on an AMD EPYC 7302 (Rome) processor with 16 cores (32 threads). We recorded the wall clock time to run 10,000 iterations with feasibility polishing disabled (1 measurement per number of threads).

Theorems & Definitions (4)

  • Lemma 1
  • proof
  • Theorem 1
  • proof