25 std::unique_ptr<OptimizerFactory> m_single_level_optimizer;
26 std::optional<bool> m_with_zero_one_uncertainty_set;
29 std::vector<Var> m_slack_for_constraints;
30 std::optional<Var> m_slack_for_objective;
32 BigMFreeSeparation(
const BigMFreeSeparation& t_src);
35 BigMFreeSeparation() =
default;
37 void operator()()
override;
38 [[nodiscard]]
Separation* clone()
const override {
return new BigMFreeSeparation(*
this); }
40 BigMFreeSeparation& with_single_level_optimizer(
const OptimizerFactory& t_optimizer);
42 BigMFreeSeparation& with_binary_uncertainty_set(
bool t_value);
44 std::pair<idol::Model, idol::Bilevel::Description> build_separation_problem()
override;
47 const BigMFreeSeparation& m_parent;
49 BoundProvider(
const BigMFreeSeparation& t_parent);
51 double get_var_lb(
const Var& t_var)
override;
52 double get_var_ub(
const Var& t_var)
override;
53 double get_ctr_dual_lb(
const Ctr &t_ctr)
override;
54 double get_ctr_dual_ub(
const Ctr &t_ctr)
override;
55 double get_ctr_slack_lb(
const Ctr &t_ctr)
override;
56 double get_ctr_slack_ub(
const Ctr &t_ctr)
override;
57 double get_var_lb_dual_ub(
const Var &t_var)
override;
58 double get_var_ub_dual_lb(
const Var &t_var)
override;
59 [[nodiscard]] BoundProvider *clone()
const override {
return new BoundProvider(*
this); }