SYNTOLOGY HomeExplorerAtlasCodeMethodologyAboutDevelopersFeedPricing
Paper · 2206.14234 · 2022

PyEPO: A PyTorch-based End-to-End Predict-then-Optimize Library for Linear and Integer Programming

arXiv · PDF · Open in the Atlas

Code that ran

We lifted 5 functions out of this paper's own repositories and ran 2 of them in a sandbox. "Ran" means the function executed on a synthesized input and returned a value. It is not a reproduction of the paper's results.

RepositoryRoleRan
khalil-research/pyepo canonical 2 of 5
FunctionStatusWhere it lives
costToNumpy Ran khalil-research/pyepo/pkg/pyepo/utils.py
code served (permissive licence) · get_code("18f71c69a5b59cba")
validate_constraint Ran khalil-research/pyepo/pkg/pyepo/model/_common.py
code served (permissive licence) · get_code("887918e4bdd357c4")
knapsackModel Not yet run khalil-research/pyepo/pkg/pyepo/model/predefined.py
code served (permissive licence) · get_code("ff2e6c81ab03b3ed")
portfolioModel Not yet run khalil-research/pyepo/pkg/pyepo/model/predefined.py
code served (permissive licence) · get_code("9f918ac625ffba77")
shortestPathModel Not yet run khalil-research/pyepo/pkg/pyepo/model/predefined.py
code served (permissive licence) · get_code("34e547520aaffe80")

Repositories linked to this paper

Some links come from the archived Papers with Code dataset (CC BY-SA 4.0): attribution and licence.

Abstract

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 \textit{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 perturbed 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 Shortest Path, Multiple Knapsack, and Traveling Salesperson Problem, and discussed empirical insights that may guide future research. PyEPO and its documentation are available at https://github.com/khalil-research/PyEPO.

For agents

The same record, over MCP at https://syntology.ai/mcp:

get_harvested_code_for_paper("2206.14234")
get_code_for_paper("2206.14234")
have("2206.14234")

Connect an agent — have() is free.