This directory contains PDLP, a library for solving linear programming (LP) and quadratic programming (QP) problems using first-order methods.
The implementation is based on the Primal-Dual Hybrid Gradient (PDHG) algorithm, which is preprocessed with scaling and optional presolving to improve performance and numerical stability. See also Mathematical background for PDLP.
primal_dual_hybrid_gradient.h: The main entry pointPrimalDualHybridGradient()for the solver, which takes aQuadraticProgramand solver parameters.quadratic_program.h: Defines theQuadraticProgramstruct to represent the optimization problem, including objective vectors, constraint matrices, and bounds.quadratic_program_io.h: Provides utilities to read quadratic programs from various file formats, including MPS and MPModelProto.sharded_quadratic_program.handsharder.h: These provide the infrastructure for sharding problem data and performing parallel computations.scheduler.h: A thread scheduling interface that supports multiple backends (e.g. Eigen's thread pools).iteration_stats.handtermination.h: Contain logic for computing convergence and infeasibility statistics and checking termination criteria.
solvers.proto: Defines thePrimalDualHybridGradientParamsmessage for configuring the solver, including termination criteria, algorithmic choices like restart strategies, and linesearch rules.solve_log.proto: Defines messages for logging the solver's progress and final result, such asIterationStatsandSolveLog.