Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
WorkerMaster.h
1#pragma once
2
3#include "SubproblemWorker.h"
4#include "Worker.h"
9class WorkerMaster;
10typedef std::shared_ptr<WorkerMaster> WorkerMasterPtr;
11
12class WorkerMaster : public Worker {
13 public:
14 WorkerMaster(VariableMap const &variable_map,
15 const std::filesystem::path &path_to_mps,
16 const std::string &solver_name, int log_level,
17 int subproblems_count,
18 SolverLogManager&solver_log_manager,
19 bool mps_has_alpha, Logger logger, ProblemsFormat format);
20 ~WorkerMaster() override = default;
21
22 void get(Point &x0, double &overall_subpb_cost_under_approx,
23 DblVector &single_subpb_costs_under_approx);
24 void get_dual_values(std::vector<double> &dual) const;
25 [[nodiscard]] int get_number_constraint() const;
26
27 void add_cut(Point const &s, Point const &x0, double const &rhs) const;
28 void add_cut_by_iter(int i, Point const &s, double const &sx0,
29 double const &rhs) const;
30 void add_dynamic_cut(Point const &s, double const &sx0,
31 double const &rhs) const;
32 void addSubproblemCut(int i, Point const &s, Point const &x0,
33 double const &rhs) const;
34 void fix_alpha(double const &bestUB) const;
35
36 virtual void DeactivateIntegrityConstraints() const;
37 virtual void ActivateIntegrityConstraints() const;
38 [[nodiscard]] virtual std::vector<int> get_id_nb_units() const { return _id_nb_units; };
39
40 private:
41 std::vector<int> _id_nb_units;
42 std::vector<int> id_single_subpb_costs_under_approx_;
43 int _id_alpha = 0;
44 int subproblems_count;
45 bool _mps_has_alpha = false;
46 void define_matval_mclind(const Point &s, std::vector<double> &matval,
47 std::vector<int> &mclind) const;
48
49 void DefineRhsWithMasterVariable(const Point &s, const Point &x0,
50 const double &rhs,
51 std::vector<double> &rowrhs) const;
52
53 void define_rhs_from_sx0(const double &sx0, const double &rhs,
54 std::vector<double> &rowrhs) const;
55
56 void define_matval_mclind_for_index(int i, const Point &s,
57 std::vector<double> &matval,
58 std::vector<int> &mclind) const;
59 void _set_upper_bounds() const;
60 void _set_alpha_var();
61 void _set_nb_units_var_ids();
62};
Definition SolverAbstract.h:16
Definition WorkerMaster.h:12
void add_cut(Point const &s, Point const &x0, double const &rhs) const
Add benders cut to a problem.
Definition WorkerMaster.cpp:91
WorkerMaster(VariableMap const &variable_map, const std::filesystem::path &path_to_mps, const std::string &solver_name, int log_level, int subproblems_count, SolverLogManager &solver_log_manager, bool mps_has_alpha, Logger logger, ProblemsFormat format)
Constructor of a Master Problem.
Definition WorkerMaster.cpp:17
void add_cut_by_iter(int i, Point const &s, double const &sx0, double const &rhs) const
Add benders cut to a problem.
Definition WorkerMaster.cpp:170
void get_dual_values(std::vector< double > &dual) const
Set dual values of a problem in a vector.
Definition WorkerMaster.cpp:74
void fix_alpha(double const &bestUB) const
Fix an upper bound and the variable overall_subpb_cost_under_approx of a problem.
Definition WorkerMaster.cpp:314
int get_number_constraint() const
Return number of constraint in a problem.
Definition WorkerMaster.cpp:82
void addSubproblemCut(int i, Point const &s, Point const &x0, double const &rhs) const
Add one benders cut to a problem.
Definition WorkerMaster.cpp:210
void get(Point &x0, double &overall_subpb_cost_under_approx, DblVector &single_subpb_costs_under_approx)
Return optimal variables of a problem.
Definition WorkerMaster.cpp:48
void add_dynamic_cut(Point const &s, double const &sx0, double const &rhs) const
Add benders cut to a problem.
Definition WorkerMaster.cpp:141
Mother-class Worker.
Definition Worker.h:17