22 std::unique_ptr<OptimizerFactory> m_master_optimizer;
23 std::unique_ptr<OptimizerFactory> m_integer_master_heuristic_optimizer;
24 std::unique_ptr<OptimizerFactory> m_sub_problem_optimizer;
27 std::unique_ptr<Model> m_deterministic_model;
28 std::list<idol::Var> m_first_stage_variables;
29 std::optional<Annotation<unsigned int>> m_decomposition;
31 void throw_if_no_deterministic_model()
const;
32 void build_deterministic_model();
33 void build_branch_and_price();
35 Convexification(
const Model& t_parent,
42 [[nodiscard]] std::string name()
const override;
44 [[nodiscard]] SolutionStatus get_status()
const override;
46 [[nodiscard]] SolutionReason get_reason()
const override;
48 [[nodiscard]]
double get_best_obj()
const override;
50 [[nodiscard]]
double get_best_bound()
const override;
52 [[nodiscard]]
double get_var_primal(
const Var &t_var)
const override;
54 [[nodiscard]]
double get_var_reduced_cost(
const Var &t_var)
const override;
56 [[nodiscard]]
double get_var_ray(
const Var &t_var)
const override;
58 [[nodiscard]]
double get_ctr_dual(
const Ctr &t_ctr)
const override;
60 [[nodiscard]]
double get_ctr_farkas(
const Ctr &t_ctr)
const override;
62 [[nodiscard]]
unsigned int get_n_solutions()
const override;
64 [[nodiscard]]
unsigned int get_solution_index()
const override;
66 [[nodiscard]]
const Model& deterministic_model()
const;
69 void add(
const Var &t_var)
override;
71 void add(
const Ctr &t_ctr)
override;
73 void add(
const QCtr &t_ctr)
override;
75 void remove(
const Var &t_var)
override;
77 void remove(
const Ctr &t_ctr)
override;
79 void remove(
const QCtr &t_ctr)
override;
81 void update()
override;
83 void write(
const std::string &t_name)
override;
85 void hook_optimize()
override;
87 void set_solution_index(
unsigned int t_index)
override;
89 void update_obj_sense()
override;
91 void update_obj()
override;
93 void update_rhs()
override;
95 void update_obj_constant()
override;
97 void update_mat_coeff(
const Ctr &t_ctr,
const Var &t_var)
override;
99 void update_ctr_type(
const Ctr &t_ctr)
override;
101 void update_ctr_rhs(
const Ctr &t_ctr)
override;
103 void update_var_type(
const Var &t_var)
override;
105 void update_var_lb(
const Var &t_var)
override;
107 void update_var_ub(
const Var &t_var)
override;
109 void update_var_obj(
const Var &t_var)
override;