Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
BendersFactory.h
1#pragma once
2#include <antares-xpansion/benders/benders_core/BendersMethod.h>
3#include <antares-xpansion/benders/benders_core/CriterionInputDataReader.h>
4#include <antares-xpansion/benders/benders_core/common.h>
5#include <memory>
6#include <optional>
7#include <variant>
8
11
12namespace boost::mpi
13{
14class communicator;
15class environment;
16} // namespace boost::mpi
17
18namespace Output
19{
20class OutputWriter;
21}
22class ILogger;
23class BendersBase;
26
28{
29public:
31 {
32 std::unique_ptr<BendersBase> benders{nullptr};
35 criterion_input_data;
36 BENDERSMETHOD method{BENDERSMETHOD::BENDERS};
37 };
38
39 BendersFactory(const SimulationOptions& options,
40 std::shared_ptr<ILogger> logger,
41 std::shared_ptr<Output::OutputWriter> writer,
42 std::shared_ptr<MathLoggerDriver> math_log_driver_,
43 int rank,
44 boost::mpi::environment* env,
45 boost::mpi::communicator* world,
46 BendersLoggerBase& benders_loggers);
47 auto PrepareForExecution(bool outer_loop) -> std::optional<BendersEnvironment>;
48
49private:
50 auto ConfigureBenders(const BendersBaseOptions& benders_options,
51 const CouplingMap& coupling_map) -> BendersEnvironment;
52 [[nodiscard]] std::variant<Benders::Criterion::CriterionInputData,
54 ProcessCriterionInput();
55 Benders::Criterion::CriterionInputData BuildPatternsUsingAreaFile();
56 std::set<std::string> ReadAreaFile();
57 void ConfigureSolverLog(BendersBase* benders);
58
59 const SimulationOptions& options_;
60 std::shared_ptr<ILogger> logger_;
61 std::shared_ptr<Output::OutputWriter> writer_;
62 std::shared_ptr<MathLoggerDriver> math_log_driver_;
63 boost::mpi::environment* env_ = nullptr;
64 boost::mpi::communicator* world_ = nullptr;
65 int rank = 0;
66 BENDERSMETHOD method_;
67 BendersLoggerBase& benders_loggers_;
68 std::string context_ = bendersmethod_to_string(BENDERSMETHOD::BENDERS);
69 static constexpr const char* const LOLD_FILE = "LOLD.txt";
70};
Definition BendersBase.h:38
Definition BendersFactory.h:28
this class contains all data read from user input file
Definition CriterionInputDataReader.h:83
this class contains all data read from user input file
Definition CriterionInputDataReader.h:103
abstract class for operational logs
Definition ILogger.h:180
Definition BendersMathLogger.h:213
Definition SimulationOptions.h:6
Definition common.h:203
Definition BendersFactory.h:31
Definition ILogger.h:131