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