PyEPO: a PyTorch-based end-to-end predict-then-optimize library for linear and integer programming
- In deterministic optimization, it is typically assumed that all problem parameters are
fixed and known. In practice, however, some parameters may be a priori unknown
but can be estimated from contextual information. A typical predict-then-optimize
approach separates predictions and optimization into two distinct stages. Recently,
end-to-end predict-then-optimize has emerged as an attractive alternative. This work
introduces the
PyEPO package, a
PyTorch-based end-to-end predict-then-optimize
library in Python. To the best of our knowledge,
PyEPO (pronounced like pineapple
with a silent “n") is the first such generic tool for linear and integer programming
with predicted objective function coefficients. It includes various algorithms such as
surrogate decision losses, black-box solvers, and perturbated methods.
PyEPO offers
a user-friendly interface for defining new optimization problems, applying state-of-
the-art algorithms, and using custom neural network architectures. We conducted
experiments comparing various methods on problems such as the Shortest Path, the
Multiple Knapsack, and the Traveling Salesperson Problem, discussing empirical
insights that may guide future research.
PyEPO and its documentation are available
at https://github.com/khalil-research/PyEPO.