17 const Model& m_parent;
18 const ::idol::Robust::Description &m_robust_description;
19 const ::idol::Bilevel::Description &m_bilevel_description;
22 std::optional<::idol::Bilevel::Description> m_bilevel_description_master;
23 std::vector<Var> m_second_stage_variables;
24 std::vector<Ctr> m_second_stage_constraints;
25 std::vector<Ctr> m_linking_constraints;
26 std::vector<Ctr> m_coupling_constraints;
28 unsigned int m_n_added_scenario = 0;
29 std::list<PrimalPoint> m_generated_scenarios;
30 bool m_has_second_stage_objective =
false;
31 std::optional<Var> m_second_stage_epigraph;
33 void parse_variables();
34 void parse_objective();
35 void parse_constraints();
36 void copy_bilevel_description(const ::idol::Bilevel::Description& t_src, const ::idol::Bilevel::Description& t_dest)
const;
41 const ::idol::Robust::Description &t_robust_description,
42 const ::idol::Bilevel::Description &t_bilevel_description
45 Model& master() {
return m_master; }
46 const Model& master()
const {
return m_master; }
47 void add_scenario_to_master(
const Point<Var>& t_scenario,
bool t_add_annotation,
bool t_check_for_repeated_scenarios);
51 unsigned int n_coupling_constraints()
const {
return m_coupling_constraints.size(); }
52 unsigned int n_added_scenarios()
const {
return m_n_added_scenario; }
53 const Bilevel::Description& bilevel_description_master()
const {
return *m_bilevel_description_master; }
54 bool is_adjustable_robust_problem()
const;
55 bool is_wait_and_see_follower()
const {
return !is_adjustable_robust_problem(); }
56 bool should_have_epigraph_and_epigraph_is_not_in_master()
const;
57 const Var& second_stage_epigraph()
const {
return *m_second_stage_epigraph; }
58 void add_epigraph_to_master();
60 auto second_stage_constraints()
const {
return ConstIteratorForward(m_second_stage_constraints); }
61 const Model& original_model()
const {
return m_parent; }
62 bool has_second_stage_epigraph()
const {
return m_second_stage_epigraph.has_value(); }
63 bool has_second_stage_objective()
const {
return m_has_second_stage_objective; }