Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
Worker.h
1#pragma once
2
3#include <filesystem>
4
5#include "SolverIO.h"
6#include "antares-xpansion/benders/output/OutputWriter.h"
7#include "antares-xpansion/multisolver_interface/Solver.h"
8#include "antares-xpansion/xpansion_interfaces/ILogger.h"
9#include "common.h"
10
17class Worker
18{
19public:
20 Worker(VariableMap variable_map, std::filesystem::path path_to_mps, Logger logger);
21 void init(const std::string& solver_name,
22 int log_level,
23 SolverLogManager& solver_log_manager,
24 ProblemsFormat format);
25 virtual ~Worker() = default;
26
27 void get_value(double& lb) const;
28
29 void get_splex_num_of_ite_last(int& result) const;
30
31 void free();
32 void write_basis(const std::filesystem::path& filename) const;
33 [[nodiscard]] virtual std::shared_ptr<SolverAbstract> solver() const;
34
35public:
36 std::filesystem::path _path_to_mps;
37 VariableMap _name_to_id;
38 Int2Str _id_to_name;
40public:
41 void solve(int& lp_status,
42 const std::string& outputroot,
43 const std::string& output_master_mps_file_name,
44 std::shared_ptr<Output::OutputWriter> writer) const;
45 int RowIndex(const std::string& row_name) const;
46 void ChangeRhs(int id_row, double val) const;
47 void GetRhs(double* val, int id_row) const;
48 void AddRows(const std::vector<char>& qrtype_p,
49 const std::vector<double>& rhs_p,
50 const std::vector<double>& range_p,
51 const std::vector<int>& mstart_p,
52 const std::vector<int>& mclind_p,
53 const std::vector<double>& dmatval_p,
54 const std::vector<std::string>& row_names) const;
55
61 int Getnrows() const;
62
63 int Getncols() const;
64
65public:
66 std::shared_ptr<SolverAbstract> _solver = nullptr;
67 bool _is_master = false;
68
69 Logger logger_;
70
71private:
72 void read_prob(SolverAbstract* problem, const std::filesystem::path& path) const;
73 SolverIO solver_io_;
74 void writeProb(const std::filesystem::path& out) const;
75};
Definition SolverAbstract.h:200
Definition SolverIO.h:8
Definition SolverAbstract.h:17
Mother-class Worker.
Definition Worker.h:18
std::shared_ptr< SolverAbstract > _solver
Definition Worker.h:66
VariableMap _name_to_id
Definition Worker.h:37
void solve(int &lp_status, const std::string &outputroot, const std::string &output_master_mps_file_name, std::shared_ptr< Output::OutputWriter > writer) const
Method to solve a problem.
Definition Worker.cpp:80
void get_splex_num_of_ite_last(int &result) const
Get the number of iteration needed to solve a problem.
Definition Worker.cpp:131
void init(const std::string &solver_name, int log_level, SolverLogManager &solver_log_manager, ProblemsFormat format)
Initialization of a problem.
Definition Worker.cpp:45
Int2Str _id_to_name
Definition Worker.h:38
int Getnrows() const
Returns the number of rows (constraints)
Definition Worker.cpp:167
void get_value(double &lb) const
Return the optimal value of a problem.
Definition Worker.cpp:25
void free()
Free the problem.
Definition Worker.cpp:11