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+, DBB, NID, DPO, PFYL, NCE, LTR, I-MLE, AI-MLE, and PG - Support Gurobi, COPT, Pyomo, Google OR-Tools, and MPAX API - Support parallel computing for optimization solvers - Support solution caching to speed up training - Support kNN robust loss to improve decision quality - GPU-accelerated solving with MPAX (JAX-based PDHG solver)