PyTorch/JAX-based End-to-End Predict-then-Optimize Tool
Project description
PyEPO: A PyTorch-based End-to-End Predict-then-Optimize Tool
PyEPO (PyTorch-based End-to-End Predict-then-Optimize Tool) is a Python-based, open-source software that supports modeling and solving predict-then-optimize problems with linear objective functions. The core capability of PyEPO is to build optimization models with GurobiPy, COPT, Pyomo, Google OR-Tools, MPAX, or any other solvers and algorithms, then embed the optimization model into an artificial neural network for the end-to-end training. For this purpose, PyEPO implements various methods as PyTorch autograd modules.
Features
- Implement SPO+, PG, DPO (additive and multiplicative perturbations), PFYL (additive and multiplicative perturbations), I-MLE, AI-MLE, L2-regularized RFWO/RFYL, DBB, NID, CaVE, NCE, and LTR
- Support Gurobi, COPT, Pyomo, Google OR-Tools, and MPAX API
- Symbolic modeling with
pyepo.dsl: define an LP, MIP, or QP once, then compile it to any backend - JAX frontend (
pyepo.func.jax): train any loss in JAX/Flax withjax.grad - Support parallel computing for optimization solvers
- Support solution caching to speed up training
- Support kNN robust loss to improve decision quality
CaVE for Binary Linear Programs
For end-to-end learning on binary linear programs (TSP, CVRP, knapsack, ...), PyEPO ships CaVE. CaVE replaces the per-step ILP solve with a cone-alignment projection onto the binding-constraint normals at the true optimum, backed by an interior-point QP solver (Clarabel). Because the cone projection is far cheaper than the per-instance ILP solve, CaVE trains an order of magnitude faster than SPO+ at TSP scale.
GPU-Accelerated Solving with MPAX
PyEPO integrates MPAX, a JAX-based mathematical programming solver using the PDHG algorithm for GPU-accelerated optimization. Key advantages: (1) GPU-native solving — the first-order PDHG method runs efficiently on GPU; (2) batch solving — an entire mini-batch can be solved simultaneously via vectorization; (3) no GPU-CPU data transfer overhead — both the neural network and the solver stay on GPU, eliminating the data transfer bottleneck.
Documentation
The official docs can be found at https://khalil-research.github.io/PyEPO.
Publication
PyEPO: A PyTorch-based End-to-End Predict-then-Optimize Library for Linear and Integer Programming (Mathematical Programming Computation)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyepo-2.2.5.tar.gz.
File metadata
- Download URL: pyepo-2.2.5.tar.gz
- Upload date:
- Size: 164.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
056e1c6fb05cd9cee4f752be1b75071fbbe9f5688c63343716f982173824ff40
|
|
| MD5 |
4db87d1b08c4deddb6c8e980a80c49b8
|
|
| BLAKE2b-256 |
4a7241eddecf79f7fc163faf7614d3b0165c9abc301d156b06cb66f153082c27
|
File details
Details for the file pyepo-2.2.5-py3-none-any.whl.
File metadata
- Download URL: pyepo-2.2.5-py3-none-any.whl
- Upload date:
- Size: 161.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16e443126d8945454dc104e7b320a81ff2c0f3f2116464b339cb9b0c15131776
|
|
| MD5 |
27a14c207342cd3d08963ce2785a8536
|
|
| BLAKE2b-256 |
28e7686fb688b4d44a360603896cfecd2f45d065cb648d99c1bafe0eea5c1e1a
|