20 std::unique_ptr<OptimizerFactory> m_main_optimizer;
21 std::unique_ptr<OptimizerFactory> m_separation_optimizer;
22 const ::idol::Bilevel::Description& m_bilevel_description;
23 const ::idol::Robust::Description& m_robust_description;
25 bool m_has_first_stage_decisions =
true;
26 unsigned int m_solution_index = 0;
28 std::optional<Var> m_epigraph_variable;
29 std::vector<std::vector<std::optional<Var>>> m_y_k;
30 std::vector<std::unique_ptr<Model>> m_master_problem;
31 std::list<Ctr> m_uncertain_constraints;
34 std::vector<std::list<Ctr>> m_scenario_based_constraints;
36 [[nodiscard]]
const Var& get_kadapt_var(
const idol::Var &t_var,
unsigned int t_k)
const;
37 void build_master_if_not_exists();
38 void make_second_stage_variables_duplicates();
39 void make_epigraph_variable_if_not_exists();
40 void add_variables_to_master();
41 void add_deterministic_constraints_to_master();
42 void add_first_stage_objective();
43 void set_uncertainty_disjunction(
unsigned int t_k,
const std::list<PrimalPoint>& t_disjunction);
52 [[nodiscard]] std::string name()
const override;
53 [[nodiscard]]
double get_var_primal(
const Var &t_var)
const override;
54 [[nodiscard]]
double get_var_reduced_cost(
const Var &t_var)
const override;
55 [[nodiscard]]
double get_var_ray(
const Var &t_var)
const override;
56 [[nodiscard]]
double get_ctr_dual(
const Ctr &t_ctr)
const override;
57 [[nodiscard]]
double get_ctr_farkas(
const Ctr &t_ctr)
const override;
58 [[nodiscard]]
unsigned int get_n_solutions()
const override;
59 [[nodiscard]]
unsigned int get_solution_index()
const override;
61 void set_uncertainty_disjunction(
const std::vector<std::list<PrimalPoint>>& t_disjunctions);
63 void add(
const Var &t_var)
override;
64 void add(
const Ctr &t_ctr)
override;
65 void add(
const QCtr &t_ctr)
override;
66 void remove(
const Var &t_var)
override;
67 void remove(
const Ctr &t_ctr)
override;
68 void remove(
const QCtr &t_ctr)
override;
69 void update()
override;
70 void write(
const std::string &t_name)
override;
71 void hook_before_optimize()
override;
72 void hook_optimize()
override;
73 void set_solution_index(
unsigned int t_index)
override;
74 void update_obj_sense()
override;
75 void update_obj()
override;
76 void update_rhs()
override;
77 void update_obj_constant()
override;
78 void update_mat_coeff(
const Ctr &t_ctr,
const Var &t_var)
override;
79 void update_ctr_type(
const Ctr &t_ctr)
override;
80 void update_ctr_rhs(
const Ctr &t_ctr)
override;
81 void update_var_type(
const Var &t_var)
override;
82 void update_var_lb(
const Var &t_var)
override;
83 void update_var_ub(
const Var &t_var)
override;
84 void update_var_obj(
const Var &t_var)
override;