https://github.com/hlefebvr/idol
Solve optimization problems and build custom algorithms
https://github.com/hlefebvr/idol
bilevel-optimization branch-and-bound branch-and-cut-and-price branch-and-price column-and-constraint-generation column-generation mathematical-programming milp milp-model mixed-integer-programming optimization robust-optimization solver
Last synced: about 1 month ago
JSON representation
Solve optimization problems and build custom algorithms
- Host: GitHub
- URL: https://github.com/hlefebvr/idol
- Owner: hlefebvr
- License: gpl-3.0
- Created: 2022-09-02T08:30:42.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2026-04-22T16:08:27.000Z (about 1 month ago)
- Last Synced: 2026-04-22T17:35:28.146Z (about 1 month ago)
- Topics: bilevel-optimization, branch-and-bound, branch-and-cut-and-price, branch-and-price, column-and-constraint-generation, column-generation, mathematical-programming, milp, milp-model, mixed-integer-programming, optimization, robust-optimization, solver
- Language: C++
- Homepage: https://henrilefebvre.com/idol
- Size: 25.1 MB
- Stars: 38
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# idol, A C++ Framework for Optimization





[](https://app.codecov.io/gh/hlefebvr/idol)
[](https://github.com/sponsors/hlefebvr)
## What is idol?
idol is a C++ framework for mathematical optimization and complex decision-making problems. It is designed to help you build new algorithms for solving complex optimization problems. The main philosophy behind idol is interoperability and ease of use. Hence, any algorithm can be seamlessly combined with any other algorithm to create a new one.
For instance, you can combine a branch-and-bound algorithm with a column generation algorithm to create a branch-and-price algorithm.
```cpp
const auto branch_and_price = branch_and_bound + column_generation;
model.use(branch_and_price);
model.optimize();
```
With idol, you can also interface with your favorite solver:
- Mixed-integer optimization ([Gurobi](https://www.gurobi.com/), [Cplex](https://www.ibm.com/products/ilog-cplex-optimization-studio), [HiGHS](https://github.com/ERGO-Code/HiGHS), [GLPK](https://www.gnu.org/software/glpk/), [coin-or/Osi](https://github.com/coin-or/Osi/) and the Julia framework [JuMP](https://github.com/jump-dev/JuMP.jl));
- Bilevel optimization ([coin-or/MibS](https://github.com/coin-or/MibS));
## Documentation
Visit our [online documentation](https://hlefebvr.github.io/idol/).
## Installation
### On Linux (amd64)
```shell
echo "deb [arch=amd64 trusted=yes] https://henrilefebvre.com/apt stable main" \
| sudo tee /etc/apt/sources.list.d/idol.list
sudo apt update
sudo apt install idol
```
### On Mac (arm64)
```shell
brew tap hlefebvr/idol
brew update
brew install idol
```
### From Source (Expert Users)
```
git clone https://github.com/hlefebvr/idol.git
cd idol
mkdir build
cd build
cmake ..
make
sudo make install
```
## Using idol for Research?
If you're interested in idol or use it for research, do not hesitate to contact me at henri.lefebvre@cnrs.fr.