Antares Xpansion
Investment simulations for Antares studies
Loading...
Searching...
No Matches
AdditionalConstraints.h
1#pragma once
2
3#include <map>
4#include <set>
5#include <string>
6#include <utility>
7
8#include "antares-xpansion/lpnamer/helper/ProblemGenerationLogger.h"
9
17class AdditionalConstraint: public std::map<std::string, double>
18{
19private:
20 std::string _sectionName;
21 std::string _name;
22 std::string _sign;
23 double _rhs = 0.0;
24
25public:
30
41 AdditionalConstraint(std::string sectionName_p,
42 std::string constraintName_p,
43 std::string sign_p,
44 double rhs_p):
45 _sectionName(std::move(sectionName_p)),
46 _name(std::move(constraintName_p)),
47 _sign(std::move(sign_p)),
48 _rhs(rhs_p)
49 {
50 }
51
55 virtual ~AdditionalConstraint() = default;
56
62 [[nodiscard]] std::string getName() const
63 {
64 return _name;
65 }
66
72 [[nodiscard]] double getRHS() const
73 {
74 return _rhs;
75 }
76
83 [[nodiscard]] std::string getSign() const
84 {
85 return _sign;
86 }
87
94 void setCoeff(const std::string& varName_p, const double varCoeff_p)
95 {
96 (*this)[varName_p] = varCoeff_p;
97 }
98};
99
107class AdditionalConstraints: public std::map<std::string, AdditionalConstraint>
108{
109private:
110 // set of variables to which a binary corresponding variable will be created
111 std::map<std::string, std::string> _variablesToBinarise;
112 std::set<std::string> _binaryVariables;
113 std::string constraintsFilePath_;
114 std::shared_ptr<ProblemGenerationLog::ProblemGenerationLogger> logger_;
115
116public:
121 std::shared_ptr<ProblemGenerationLog::ProblemGenerationLogger> logger):
122 logger_(std::move(logger))
123 {
124 }
125
132 explicit AdditionalConstraints(
133 std::string constraints_file_path,
134 std::shared_ptr<ProblemGenerationLog::ProblemGenerationLogger> logger);
135
136 void SetConstraintsFile(const std::string& constraints_file_path)
137 {
138 constraintsFilePath_ = constraints_file_path;
139 }
140
141 void ReadConstraintsFile();
152 void addVariableToBinarise(const std::string& oldVarName_p, const std::string& binVarName_p);
153
164 void addVariablesToBinarise(const std::map<std::string, std::string>& variables_section);
165
173 [[nodiscard]] const std::map<std::string, std::string>& getVariablesToBinarise() const;
174
182 const std::string& sectionName_l,
183 const std::map<std::string, std::string>& constarintsSection_l);
184
192 [[nodiscard]] std::string checkAndReturnConstraintName(
193 const std::string& sectionName_l,
194 const std::map<std::string, std::string>& constarintsSection_l) const;
195
203 [[nodiscard]] std::string checkAndReturnSectionSign(
204 const std::string& sectionName_l,
205 const std::map<std::string, std::string>& constarintsSection_l) const;
206
213 [[nodiscard]] double checkAndReturnSectionRhs(
214 const std::string& sectionName_l,
215 const std::map<std::string, std::string>& constarintsSection_l) const;
216};
additional constraint to add to master problem
Definition AdditionalConstraints.h:18
std::string getSign() const
AdditionalConstraint::_sign getter.
Definition AdditionalConstraints.h:83
virtual ~AdditionalConstraint()=default
AdditionalConstraint destructor.
AdditionalConstraint()=default
AdditionalConstraint default constructor.
double getRHS() const
AdditionalConstraint::_rhs getter.
Definition AdditionalConstraints.h:72
void setCoeff(const std::string &varName_p, const double varCoeff_p)
adds a term to the constraint
Definition AdditionalConstraints.h:94
std::string getName() const
AdditionalConstraint::_name getter.
Definition AdditionalConstraints.h:62
AdditionalConstraint(std::string sectionName_p, std::string constraintName_p, std::string sign_p, double rhs_p)
AdditionalConstraint constructor.
Definition AdditionalConstraints.h:41
candidate exclusion constraint structure
Definition AdditionalConstraints.h:108
void constructAdditionalConstraints(const std::string &sectionName_l, const std::map< std::string, std::string > &constarintsSection_l)
the method is responsible for creating and filling constraints
Definition AdditionalConstraints.cpp:66
std::string checkAndReturnConstraintName(const std::string &sectionName_l, const std::map< std::string, std::string > &constarintsSection_l) const
the method is responsible for checking that section has defined a unique constraint name
Definition AdditionalConstraints.cpp:123
const std::map< std::string, std::string > & getVariablesToBinarise() const
getter for AdditionalConstraints::_variablesToBinarise
Definition AdditionalConstraints.cpp:61
std::string checkAndReturnSectionSign(const std::string &sectionName_l, const std::map< std::string, std::string > &constarintsSection_l) const
the method is responsible for checking that section has defined a sign
Definition AdditionalConstraints.cpp:149
void addVariablesToBinarise(const std::map< std::string, std::string > &variables_section)
adds a binary variable to be created and links it to the corresponding variable
Definition AdditionalConstraints.cpp:52
double checkAndReturnSectionRhs(const std::string &sectionName_l, const std::map< std::string, std::string > &constarintsSection_l) const
the method is responsible for checking that section has defined a rhs
Definition AdditionalConstraints.cpp:170
void addVariableToBinarise(const std::string &oldVarName_p, const std::string &binVarName_p)
adds a binary variable to be created and links it to the corresponding variable
Definition AdditionalConstraints.cpp:39
AdditionalConstraints(std::shared_ptr< ProblemGenerationLog::ProblemGenerationLogger > logger)
default constructor for struct AdditionalConstraints
Definition AdditionalConstraints.h:120