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;
}