Skip to content

Interface to OR-Tools/PDLP #1649

@mlubin

Description

@mlubin

OR-Tools (master branch) now includes a C++ implementation of the PDLP algorithm that we presented at NeurIPS 2021 (paper). In contrast to the Julia prototype used the paper, the C++ implementation is multithreaded and a bit faster in serial. Our experience is that it's the fastest LP solver among first-order solvers, especially when solving to high precision (we compared with SCS, haven't benchmarked with OSQP). It's not close to being uniformly better than simplex or barrier solvers, but it does outperform them on occasion. We think this solver would be a useful option for CVXPY users.

Could you provide some guidance on how to create a CVXPY interface?

Some relevant technical points:

  • PDLP solves LPs and QPs with diagonal objective matrices (only). The underlying algorithm could be generalized to conic problems, but we're unlikely to implement that anytime soon.
  • OR-Tools already has a python interface installable through pip and conda. (Though these releases don't include PDLP yet.)
  • OR-Tools has its own solver abstraction. It may make sense to create an "or-tools" wrapper rather than a direct "PDLP" wrapper in order to enable users to access other solvers like Glop. Glop is a production-ready simplex-based solver that's used widely within Google.

CC @dapplegate @lperron @Mizux @bodono

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions