Models a simple continuous problem and adds an SOS1 constraint. Then, uses Gurobi to optimize it and print the solution.
\[
\begin{aligned}
\min_{x} \quad & -2x_1 - x_2 - x_3 \\
\text{s.t.} \quad & 0 \le x_j \le 1, \quad \text{for all } j=1,2,3, \\
& \text{SOS1}(x_1,x_2,x_3).
\end{aligned}
\]
#include <iostream>
#include "idol/modeling.h"
#include "idol/mixed-integer/optimizers/wrappers/Gurobi/Gurobi.h"
using namespace idol;
int main(int t_argc, const char** t_argv) {
const auto x = model.add_vars(
Dim<1>(3), 0, 1, Continuous, 0,
"x");
model.add_sosctr(true, x, { 1, 2, 3 });
model.set_obj_expr(-2 * x[0] - x[1] - x[2]);
model.optimize();
if (model.get_status() == Optimal) {
std::cout << "Optimal solution found!" << std::endl;
std::cout << save_primal(model) << std::endl;
}
return 0;
}