Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
OuterLoopBenders.h
1#pragma once
2#include "antares-xpansion/benders/benders_core/BendersBase.h"
3#include "antares-xpansion/benders/benders_core/CriterionComputation.h"
4#include "antares-xpansion/benders/benders_core/CutsManagement.h"
5#include "antares-xpansion/benders/outer_loop/IMasterUpdate.h"
6#include "antares-xpansion/benders/outer_loop/OuterLoop.h"
7#include "antares-xpansion/benders/outer_loop/OuterLoopBiLevel.h"
8#include "common_mpi.h"
9
10namespace Outerloop {
11
13 : public LogUtils::XpansionError<std::runtime_error> {
14 using LogUtils::XpansionError<std::runtime_error>::XpansionError;
15};
16
18 public:
19 explicit OuterLoopBenders(
20 const std::vector<Benders::Criterion::CriterionSingleInputData>&
21 outer_loop_data,
22 std::shared_ptr<IMasterUpdate> master_updater,
23 std::shared_ptr<ICutsManager> cuts_manager, pBendersBase benders,
24 mpi::communicator& world);
25
26 void Run() override;
27
28 void OuterLoopCheckFeasibility() override;
29 void OuterLoopBilevelChecks() override;
30 void RunAttachedAlgo() override;
31 void PrintLog() override;
32 void init_data() override;
33 bool isExceptionRaised() override;
34 double OuterLoopLambdaMin() const override;
35 double OuterLoopLambdaMax() const override;
36 bool UpdateMaster() override;
37 ~OuterLoopBenders() override = default;
38
39 private:
40 std::shared_ptr<IMasterUpdate> master_updater_;
41 std::shared_ptr<ICutsManager> cuts_manager_;
42 pBendersBase benders_;
43 BendersLoggerBase loggers_;
44 mpi::communicator& world_;
45 bool is_bilevel_check_all_ = false;
46 void InitExternalValues(bool is_bilevel_check_all, double lambda);
47 OuterLoopBiLevel outer_loop_biLevel_;
48};
49} // namespace Outerloop
Definition OuterLoopBenders.h:13
Definition OuterLoopBenders.h:17
Definition OuterLoopBiLevel.h:9
Definition OuterLoop.h:3
Definition ILogger.h:114