Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
CriterionInputDataReader.h
1#pragma once
2#include <filesystem>
3#include <string>
4#include <vector>
5
6#include "antares-xpansion/xpansion_interfaces/LoggerUtils.h"
7#include "yaml-cpp/yaml.h"
8
9namespace Benders::Criterion
10{
11static constexpr const char* const PositiveUnsuppliedEnergy = "PositiveUnsuppliedEnergy::";
12
13class CriterionInputFileError: public LogUtils::XpansionError<std::runtime_error>
14{
15 using LogUtils::XpansionError<std::runtime_error>::XpansionError;
16};
17
18class CriterionInputFileIsEmpty: public LogUtils::XpansionError<std::runtime_error>
19{
20 using LogUtils::XpansionError<std::runtime_error>::XpansionError;
21};
22
23class CriterionInputFileNoPatternFound: public LogUtils::XpansionError<std::runtime_error>
24{
25 using LogUtils::XpansionError<std::runtime_error>::XpansionError;
26};
27
28class CriterionInputPatternsShouldBeArray: public LogUtils::XpansionError<std::runtime_error>
29{
30 using LogUtils::XpansionError<std::runtime_error>::XpansionError;
31};
32
33class CouldNotReadAreaField: public LogUtils::XpansionError<std::runtime_error>
34{
35 using LogUtils::XpansionError<std::runtime_error>::XpansionError;
36};
37
38class CouldNotReadCriterionField: public LogUtils::XpansionError<std::runtime_error>
39{
40 using LogUtils::XpansionError<std::runtime_error>::XpansionError;
41};
42
45{
46public:
47 explicit CriterionPattern(std::string prefix, std::string body);
48 CriterionPattern() = default;
49 [[nodiscard]] std::string Value() const;
50 [[nodiscard]] const std::string& GetPrefix() const;
51 void SetPrefix(const std::string& prefix);
52 [[nodiscard]] const std::string& GetBody() const;
53 void SetBody(const std::string& body);
54
55private:
56 std::string prefix_;
57 std::string body_;
58};
59
62{
63public:
64 CriterionSingleInputData() = default;
69 CriterionSingleInputData(const std::string& prefix, const std::string& body, double criterion);
70
71 [[nodiscard]] CriterionPattern Pattern() const;
72 [[nodiscard]] double Criterion() const;
73 void SetCriterion(double criterion);
74 void ResetPattern(const std::string& prefix, const std::string& body);
75
76private:
77 CriterionPattern pattern_;
78 double criterion_ = 0;
79};
80
83{
84public:
85 CriterionInputData() = default;
86
87 [[nodiscard]] const std::vector<CriterionSingleInputData>& Criteria() const;
88
89 [[nodiscard]] std::vector<std::string> PatternBodies() const;
90 [[nodiscard]] std::string PatternsPrefix() const;
91
92 void SetCriterionCountThreshold(double count_threshold);
93 [[nodiscard]] double CriterionCountThreshold() const;
94 void AddSingleData(const CriterionSingleInputData& data);
95
96private:
97 std::vector<CriterionSingleInputData> criterion_vector_;
98 double count_threshold_ = 1;
99};
100
103{
104public:
105 OuterLoopCriterionInputData() = default;
106 [[nodiscard]] double StoppingThreshold() const;
107 void setStoppingThreshold(double stoppingThreshold);
108
109private:
110 double stopping_threshold_ = 1e-4;
111};
112
115{
116public:
117 virtual OuterLoopCriterionInputData Read(const std::filesystem::path& input_file) = 0;
118 virtual ~ICriterionInputDataReader() = default;
119};
120
122{
123public:
124 CriterionInputFromYaml() = default;
125 OuterLoopCriterionInputData Read(const std::filesystem::path& input_file) override;
126
127private:
128 CriterionInputData criterion_input_data_;
129};
130
131} // namespace Benders::Criterion
Definition CriterionInputDataReader.h:34
Definition CriterionInputDataReader.h:39
this class contains all data read from user input file
Definition CriterionInputDataReader.h:83
Definition CriterionInputDataReader.h:14
Definition CriterionInputDataReader.h:19
Definition CriterionInputDataReader.h:24
Definition CriterionInputDataReader.h:122
Definition CriterionInputDataReader.h:29
lovely class
Definition CriterionInputDataReader.h:45
holds the pattern and the criterion
Definition CriterionInputDataReader.h:62
Abstract.
Definition CriterionInputDataReader.h:115
this class contains all data read from user input file
Definition CriterionInputDataReader.h:103