Inverse Optimization with Python
Project description
InvOpt: Inverse Optimization with Python
InvOpt is a Python package for solving Inverse Optimization (IO) problems. In IO problems, our goal is to model the behavior of an expert agent, which given an exogenous signal, returns a response action. The underlying assumption of IO is that to compute its response, the expert agent solves an optimization problem parametric in the exogenous signal. We assume to know the constraints imposed on the expert, but not its cost function. Therefore, our goal is to model the cost function being optimized by the expert, using examples of exogenous signals and corresponding expert response actions. More concretely, given a dataset $\mathcal{D} = \{(\hat{s}_ i, \hat{x}_ i)\}_ {i=1}^N$ of exogenous signals $\hat{s}_ i$ and the respective expert's response $\hat{x}_ i$, our goal is to find a cost vector $\theta \in \mathbb{R}^p$ such that the Forward Optimization Problem (FOP) with feature mapping $\phi$ $$x_i \in \arg\min_ {x \in \mathbb{X}(\hat{s}_ i)} \ \theta^\top \phi(\hat{s}_ i,x)$$ reproduces (or in some sense approximates) the expert's action $\hat{x}_ i$. For a more detailed description of the IO problem and its modelling, please refer to Zattoni Scroccaro et al. (2023) and the references therein.
Installation
pip install invopt
InvOpt depends on NumPy. Moreover, some of its functions also depend on gurobipy or cvxpy. You can get a free academic license for Gurobi here.
Usage and examples
The following functions are available in the InvOpt package to solving IO problems:
discrete_consistent: for FOPs with dicrete decision spaces (e.g., binary), and when the dataset is consistent with some cost vector. Can be used to check if the data is consistent.discrete: for FOPs with dicrete decision spaces (e.g., binary).mixed_integer_linear: for FOPs with mixed-integer decision spaces and cost functions linear w.r.t. the continuous part of the decision variable.mixed_integer_quadratic: for FOPs with mixed-integer decision spaces and cost functions quadratic w.r.t. the continuous part of the decision variable.FOM: for general FOPs. Solves IO problem approximately using first-order methods.
Contributing
Contributions, pull requests and suggestions are very much welcome. The TODO file contains a number of ideas to possibly improve the InvOpt package.
Citing
If you use InvOpt for research, please cite our accompanying paper:
@article{zattoniscroccaro2023learning,
title={Learning in Inverse Optimization: Incenter Cost, Augmented Suboptimality Loss, and Algorithms},
author={Zattoni Scroccaro, Pedro and Atasoy, Bilge and Mohajerin Esfahani, Peyman},
journal={https://arxiv.org/abs/2305.07730},
year={2023}
}
Project details
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 invopt-0.0.4.tar.gz.
File metadata
- Download URL: invopt-0.0.4.tar.gz
- Upload date:
- Size: 14.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99937132508410ba8eedbbe6abd590412521198fd79511285b8baad8baeed46d
|
|
| MD5 |
898b8014bd2b510d3ad2f261187c01bf
|
|
| BLAKE2b-256 |
d067b3a60fe112196accdaa1d94a5920509e5e1f8aa9e14e21bbe6464c5c960a
|
File details
Details for the file invopt-0.0.4-py3-none-any.whl.
File metadata
- Download URL: invopt-0.0.4-py3-none-any.whl
- Upload date:
- Size: 12.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cef46260835812fddd229679425dfe540135479db3d12cf3c3e56818ca474ac
|
|
| MD5 |
274a11fe5c5e13305dc7be9268d97c6a
|
|
| BLAKE2b-256 |
8a00cd55c2426881c92c082c3d14ca02345cc311c3a17d77dfb3ad4a061e0b55
|