Skip to content

Releases: khalil-research/PyEPO

v0.4.0

20 Dec 23:41
Compare
Choose a tag to compare

🎉 We're happy to announce the PyEPO 0.4.0 release. 🎉

Happy Holiday! We're thrilled to bring you an exciting new feature in this release:

We are excited to announce the addition of a new module, perturbationGradient, designed to implement Perturbation Gradient (PG) loss. This module provides flexibility for various optimization tasks with configurable parameters such as sigma (step size) and two_sides (differencing type).

This feature is based on the paper "Decision-Focused Learning with Directional Gradients". It is a surrogate loss function of objective value, which measures the decision quality of the optimization problem. According to Danskin’s Theorem, the PG Loss is derived from different zeroth order approximations and has an informative gradient. Thus, it allows us to design an algorithm based on stochastic gradient descent.

In addition, thank you, @RuoyuChen615, for providing her version of PG loss. Her version of PG loss implementation has provided good insights, helping us refine and enhance this module.

We're eager for you to test these out and share your feedback with us. As always, thank you for being a part of our growing community!

v0.3.9

11 Jun 01:22
46aa949
Compare
Choose a tag to compare

🎉 We're happy to announce the PyEPO 0.3.9 release. 🎉

We're thrilled to bring you an exciting new feature in this release:

We are excited to announce the addition of a new module, optDatasetKNN, thanks to @NoahJSchutte. This module is designed for implementing k-nearest neighbors (kNN) robust loss in decision-focused learning. The implementation introduces a new class, optDatasetKNN in dataset.py with the parameters k and weight.

This feature is based on the paper Robust Losses for Decision-Focused Learning by Noah Schutte, which has been accepted at IJCAI. You can explore this feature in our Google Colab tutorial for hands-on guidance.

We're eager for you to test these out and share your feedback with us. As always, thank you for being a part of our growing community!

v0.3.8a

20 May 21:31
b363410
Compare
Choose a tag to compare

🎉 We're happy to announce the PyEPO 0.3.8a release. 🎉

We fixed a bug for portfolio.py while using multi-processor.

v0.3.8

24 Apr 20:56
9135bf2
Compare
Choose a tag to compare

🎉 We're happy to announce the PyEPO 0.3.8 release. 🎉

We're thrilled to bring you some exciting new features in this release:

We add a data generator pyepo.data.portfolio.genData for portfolio optimization and the corresponding Gurobi model pyepo.model.grb.portfolioModel. See details in our docs for data and optimization model.

This synthetic dataset comes from Smart “Predict, then Optimize” with detailed implementation guidelines provided in Appendix-D of the supplemental material.

Additionally, we have addressed several minor bugs to ensure a smoother user experience.

We're eager for you to test these out and share your feedback with us. As always, thank you for being a part of our growing community!

v0.3.7

19 Apr 05:03
Compare
Choose a tag to compare

🎉 We're happy to announce the PyEPO 0.3.7 release. 🎉

We're thrilled to bring you some exciting new features in this release:

We add an autograd module pyepo.func.adaptiveImplicitMLE, which uses the perturb-and-MAP framework and adaptively chooses the interpolation step size. This module samples noise perturbation from a Sum-of-Gamma distribution, subsequently interpolating the loss function for a more precise finite difference approximation. There is the corresponding paper Adaptive Perturbation-Based Gradient Estimation for Discrete Latent Variable Models. See details in our docs.

We're eager for you to test these out and share your feedback with us. As always, thank you for being a part of our growing community!

v0.3.6

14 Feb 03:59
Compare
Choose a tag to compare

🎉 We're happy to announce the PyEPO 0.3.6 release on PyPI. 🎉

The package is now available on PyPI for installation. You can easily install PyEPO using pip by running the following command:

pip install pyepo

v0.3.5

21 Oct 16:48
8d1d0b1
Compare
Choose a tag to compare

🎉 We're happy to announce the PyEPO 0.3.5 release. 🎉

We're thrilled to bring you some exciting new features in this release:

  • We add an autograd module pyepo.func.implicitMLE, which uses the perturb-and-MAP framework. This module samples noise perturbation from a Sum-of-Gamma distribution, subsequently interpolating the loss function for a more precise finite difference approximation. There is the corresponding paper Implicit MLE: Backpropagating Through Discrete Exponential Family Distributions. See details in our docs.
  • PyEPO is now compatible with COPT (Cardinal Optimizer) API, one of the fastest solvers for various optimization problems.

We're eager for you to test these out and share your feedback with us. As always, thank you for being a part of our growing community!

v0.3.3

17 Jul 06:43
Compare
Choose a tag to compare

We're happy to announce the 0.3.3 release.

We fix the sign bug of pyepo.func.NCE, and add modules pyepo.func.contrastiveMAP and pyepo.func.negativeIdentity. See details in our docs.

There are the corresponding papers Contrastive losses and solution caching for predict-and-optimize and Backpropagation through combinatorial algorithms: Identity with projection works.

v0.3.0

10 Jul 07:47
3d3dcea
Compare
Choose a tag to compare

We're happy to announce the 0.3.0 release.

Thank @ijskar to add new end-to-end predict-then-optimize methods: noise contrastive estimation and learning to rank. We add modules pyepo.func.NCE, pyepo.func.pointwiseLTR, pyepo.func.pairwiseLTR and pyepo.func.listwiseLTR. See details in our docs.

There are the corresponding papers Contrastive losses and solution caching for predict-and-optimize and Decision-focused learning: through the lens of learning to rank.

v0.2.4

15 Mar 04:49
Compare
Choose a tag to compare

We're happy to announce the 0.2.4 release.

This new version includes several bug fixes and improvements that should enhance the stability and usability of the package.