21 std::unique_ptr<OptimizerFactory> m_master_optimizer_factory;
22 std::unique_ptr<DantzigWolfe::InfeasibilityStrategyFactory::Strategy> m_strategy;
23 std::unique_ptr<DantzigWolfe::DualPriceSmoothingStabilization::Strategy> m_stabilization;
24 std::unique_ptr<Logs::DantzigWolfe::Factory::Strategy> m_logger;
25 std::optional<DantzigWolfe::SubProblem> m_default_sub_problem_spec;
26 std::vector<DantzigWolfe::SubProblem> m_sub_problem_specifications;
27 unsigned int m_with_dynamic_sub_problems =
true;
28 unsigned int m_max_parallel_pricing;
29 bool m_use_hard_branching;
30 bool m_remove_infeasible_columns;
32 std::optional<PrimalPoint> m_original_space_solution;
34 DantzigWolfeDecomposition(
const Model& t_model,
38 unsigned int t_max_parallel_pricing,
39 bool t_use_hard_branching,
40 bool t_remove_infeasible_columns,
41 std::vector<DantzigWolfe::SubProblem>&& t_sub_problem_specifications,
42 std::optional<DantzigWolfe::SubProblem> t_default_sub_problem_spec,
46 std::string name()
const override;
56 void hook_before_optimize()
override;
57 void hook_optimize()
override;
58 void hook_after_optimize()
override;
60 void add(
const Var &t_var)
override;
61 void add(
const Ctr &t_ctr)
override;
62 void add(
const QCtr &t_ctr)
override;
63 void remove(
const Var &t_var)
override;
64 void remove(
const Ctr &t_ctr)
override;
65 void remove(
const QCtr &t_ctr)
override;
66 void update()
override;
67 void write(
const std::string &t_name)
override;
68 double get_var_primal(
const Var &t_var)
const override;
69 double get_var_reduced_cost(
const Var &t_var)
const override;
70 double get_var_ray(
const Var &t_var)
const override;
71 double get_ctr_dual(
const Ctr &t_ctr)
const override;
72 double get_ctr_farkas(
const Ctr &t_ctr)
const override;
73 unsigned int get_n_solutions()
const override;
74 unsigned int get_solution_index()
const override;
75 void set_solution_index(
unsigned int t_index)
override;
76 void update_obj_sense()
override;
77 void update_obj()
override;
78 void update_rhs()
override;
79 void update_obj_constant()
override;
80 void update_mat_coeff(
const Ctr &t_ctr,
const Var &t_var)
override;
81 void update_ctr_type(
const Ctr &t_ctr)
override;
82 void update_ctr_rhs(
const Ctr &t_ctr)
override;
83 void update_var_type(
const Var &t_var)
override;
84 void update_var_lb(
const Var &t_var)
override;
85 void update_var_ub(
const Var &t_var)
override;
86 void update_var_obj(
const Var &t_var)
override;
87 void add_sub_problem();