Pyepo

Latest version: v0.4.5

Safety actively analyzes 701325 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

0.4.0

<p align="center"><img width="30%" src="images/logo1.png" /></p>

:tada: We're happy to announce the PyEPO 0.4.0 release. :tada:

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](https://arxiv.org/abs/2402.03256)". 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!

0.3.9

<p align="center"><img width="30%" src="images/logo1.png" /></p>

:tada: We're happy to announce the PyEPO 0.3.9 release. :tada:

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](https://arxiv.org/abs/2310.04328) by Noah Schutte, which has been accepted at IJCAI. You can explore this feature in our [Google Colab tutorial](https://colab.research.google.com/github/khalil-research/PyEPO/blob/main/notebooks/06%20kNN%20Robust%20Losses.ipynb) 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!

0.3.8

<p align="center"><img width="30%" src="images/logo1.png" /></p>

:tada: We're happy to announce the PyEPO 0.3.8 release. :tada:

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](https://khalil-research.github.io/PyEPO/build/html/content/examples/data.html#portfolio) and [optimization model](https://khalil-research.github.io/PyEPO/build/html/content/examples/model.html#portfolio).

This synthetic dataset comes from [Smart “Predict, then Optimize”](https://pubsonline.informs.org/doi/abs/10.1287/mnsc.2020.3922) with detailed implementation guidelines provided in Appendix-D of the [supplemental material](https://pubsonline.informs.org/doi/suppl/10.1287/mnsc.2020.3922/suppl_file/mnsc.2020.3922.sm2.pdf).

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!

0.3.8a

<p align="center"><img width="30%" src="images/logo1.png" /></p>

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

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

0.3.7

<p align="center"><img width="30%" src="images/logo1.png" /></p>

:tada: We're happy to announce the PyEPO 0.3.7 release. :tada:

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](https://ojs.aaai.org/index.php/AAAI/article/view/26103). See details in our [docs](https://khalil-research.github.io/PyEPO/build/html/content/examples/function.html#adaptive-implicit-maximum-likelihood-estimator-ai-mle).

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!

0.3.6

<p align="center"><img width="30%" src="images/logo1.png" /></p>

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

The package is now available on [PyPI](https://pypi.org/project/pyepo/) for installation. You can easily install `PyEPO` using pip by running the following command:

bash
pip install pyepo

Page 1 of 2

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.