Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
BendersFactory.h
1#pragma once
2#include <antares-xpansion/benders/benders_core/BendersBase.h>
3#include <antares-xpansion/benders/benders_core/BendersMethod.h>
4#include <antares-xpansion/benders/benders_core/CriterionInputDataReader.h>
5#include <antares-xpansion/benders/benders_core/common.h>
6#include <antares-xpansion/benders/factories/BendersPluginFactory.h>
7#include <antares-xpansion/benders/plugins/BendersPlugin.h>
8#include <memory>
9#include <optional>
10#include <variant>
11
14
15namespace boost::mpi
16{
17class communicator;
18class environment;
19} // namespace boost::mpi
20
21namespace Output
22{
23class OutputWriter;
24}
25class ILogger;
28
30{
31public:
33 {
34 std::unique_ptr<BendersBase> benders{nullptr};
37 criterion_input_data;
38 BENDERSMETHOD method{BENDERSMETHOD::BENDERS};
39 };
40
42 {
43 std::shared_ptr<ILogger> logger;
44 std::shared_ptr<Output::OutputWriter> writer;
45 std::shared_ptr<MathLoggerDriver> math_log_driver;
46 BendersLoggerBase& benders_loggers;
47 };
48
49 BendersFactory(const SimulationOptions& options,
50 boost::mpi::communicator* world,
51 Dependencies dependencies);
52 auto PrepareForExecution(bool outer_loop) -> std::optional<BendersEnvironment>;
53
54private:
55 auto ConfigureBenders(const BendersBaseOptions& benders_options,
56 const CouplingMap& coupling_map) -> BendersEnvironment;
57 [[nodiscard]] std::variant<Benders::Criterion::CriterionInputData,
59 ProcessCriterionInput();
60 Benders::Criterion::CriterionInputData BuildPatternsUsingAreaFile();
61 std::set<std::string> ReadAreaFile();
62 void ConfigureSolverLog(BendersBase* benders);
63
64 const SimulationOptions& options_;
65 Dependencies dependencies_;
66 boost::mpi::communicator* world_ = nullptr;
67 std::shared_ptr<BendersPluginFactory> benders_plugin_factory_;
68 int rank = 0;
69 BENDERSMETHOD method_;
70 std::string context_ = bendersmethod_to_string(BENDERSMETHOD::BENDERS);
71 static constexpr const char* const LOLD_FILE = "LOLD.txt";
72};
Definition BendersBase.h:40
Definition BendersFactory.h:30
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:184
Definition BendersMathLogger.h:213
Definition SimulationOptions.h:6
Definition common.h:205
Definition BendersFactory.h:33
Definition BendersFactory.h:42
Definition ILogger.h:135