Antares Simulator
Power System Simulator
Loading...
Searching...
No Matches
opt_rename_problem.h
1/*
2** Copyright 2007-2024, RTE (https://www.rte-france.com)
3** See AUTHORS.txt
4** SPDX-License-Identifier: MPL-2.0
5** This file is part of Antares-Simulator,
6** Adequacy and Performance assessment for interconnected energy networks.
7**
8** Antares_Simulator is free software: you can redistribute it and/or modify
9** it under the terms of the Mozilla Public Licence 2.0 as published by
10** the Mozilla Foundation, either version 2 of the License, or
11** (at your option) any later version.
12**
13** Antares_Simulator is distributed in the hope that it will be useful,
14** but WITHOUT ANY WARRANTY; without even the implied warranty of
15** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16** Mozilla Public Licence 2.0 for more details.
17**
18** You should have received a copy of the Mozilla Public Licence 2.0
19** along with Antares_Simulator. If not, see <https://opensource.org/license/mpl-2-0/>.
20*/
21#pragma once
22#include "antares/solver/optimisation/opt_structure_probleme_a_resoudre.h"
23
24#include "opt_export_structure.h"
25
26const std::string SEPARATOR = "::";
27const std::string AREA_SEP = "$$";
28
30{
31public:
32 explicit TargetVectorUpdater(std::vector<std::string>& target):
33 target_(target)
34 {
35 }
36
37 void UpdateTargetAtIndex(const std::string& full_name, unsigned int index)
38 {
39 target_[index] = full_name;
40 }
41
42private:
43 std::vector<std::string>& target_;
44};
45
46class Namer
47{
48public:
49 explicit Namer(std::vector<std::string>& target):
50 targetUpdater_(target)
51 {
52 }
53
54 void UpdateTimeStep(unsigned int timeStep)
55 {
56 timeStep_ = timeStep;
57 }
58
59 void UpdateArea(const std::string& area)
60 {
61 area_ = area;
62 }
63
64 void SetLinkElementName(unsigned int variable, const std::string& variableType);
65 void SetAreaElementNameHour(unsigned int variable, const std::string& variableType);
66 void SetAreaElementNameWeek(unsigned int variable, const std::string& variableType);
67 void SetAreaElementName(unsigned int variable,
68 const std::string& variableType,
69 const std::string& timeStepType);
70 void SetThermalClusterElementName(unsigned int variable,
71 const std::string& variableType,
72 const std::string& clusterName);
73
74 unsigned int timeStep_ = 0;
75 std::string origin_;
76 std::string destination_;
77 std::string area_;
78 TargetVectorUpdater targetUpdater_;
79};
80
81class VariableNamer: public Namer
82{
83public:
84 using Namer::Namer;
85 void DispatchableProduction(unsigned int variable, const std::string& clusterName);
86 void NODU(unsigned int variable, const std::string& clusterName);
87 void NumberStoppingDispatchableUnits(unsigned int variable, const std::string& clusterName);
88 void NumberStartingDispatchableUnits(unsigned int variable, const std::string& clusterName);
89 void NumberBreakingDownDispatchableUnits(unsigned int variable, const std::string& clusterName);
90 void NTCDirect(unsigned int variable,
91 const std::string& origin,
92 const std::string& destination);
93 void IntercoDirectCost(unsigned int variable,
94 const std::string& origin,
95 const std::string& destination);
96 void IntercoIndirectCost(unsigned int variable,
97 const std::string& origin,
98 const std::string& destination);
99 void ShortTermStorageInjection(unsigned int variable, const std::string& shortTermStorageName);
100 void ShortTermStorageWithdrawal(unsigned int variable, const std::string& shortTermStorageName);
101 void ShortTermStorageLevel(unsigned int variable, const std::string& shortTermStorageName);
102 void ShortTermStorageCostVariationInjection(unsigned int variable,
103 const std::string& shortTermStorageName);
104 void ShortTermStorageCostVariationWithdrawal(unsigned int variable,
105 const std::string& shortTermStorageName);
106 void HydProd(unsigned int variable);
107 void HydProdDown(unsigned int variable);
108 void HydProdUp(unsigned int variable);
109 void Pumping(unsigned int variable);
110 void HydroLevel(unsigned int variable);
111 void Overflow(unsigned int variable);
112 void FinalStorage(unsigned int variable);
113 void LayerStorage(unsigned int variable, int layerIndex);
114 void PositiveUnsuppliedEnergy(unsigned int variable);
115 void NegativeUnsuppliedEnergy(unsigned int variable);
116 void AreaBalance(unsigned int variable);
117
118private:
119 void SetAreaVariableName(unsigned int variable,
120 const std::string& variableType,
121 int layerIndex);
122 void SetShortTermStorageVariableName(unsigned int variable,
123 const std::string& variableType,
124 const std::string& shortTermStorageName);
125};
126
128{
129public:
130 using Namer::Namer;
131
132 void FlowDissociation(unsigned int constraint,
133 const std::string& origin,
134 const std::string& destination);
135
136 void AreaBalance(unsigned int constraint);
137 void FictiveLoads(unsigned int constraint);
138 void HydroPower(unsigned int constraint);
139 void HydroPowerSmoothingUsingVariationSum(unsigned int constraint);
140 void HydroPowerSmoothingUsingVariationMaxDown(unsigned int constraint);
141 void HydroPowerSmoothingUsingVariationMaxUp(unsigned int constraint);
142 void MinHydroPower(unsigned int constraint);
143 void MaxHydroPower(unsigned int constraint);
144 void MaxPumping(unsigned int constraint);
145 void AreaHydroLevel(unsigned int constraint);
146 void FinalStockEquivalent(unsigned int constraint);
147 void FinalStockExpression(unsigned int constraint);
148 void NbUnitsOutageLessThanNbUnitsStop(unsigned int constraint, const std::string& clusterName);
149 void NbDispUnitsMinBoundSinceMinUpTime(unsigned int constraint, const std::string& clusterName);
150 void MinDownTime(unsigned int constraint, const std::string& clusterName);
151 void PMaxDispatchableGeneration(unsigned int constraint, const std::string& clusterName);
152 void PMinDispatchableGeneration(unsigned int constraint, const std::string& clusterName);
153 void ConsistenceNODU(unsigned int constraint, const std::string& clusterName);
154 void ShortTermStorageLevel(unsigned int constraint, const std::string& name);
155 void BindingConstraintHour(unsigned int constraint, const std::string& name);
156 void BindingConstraintDay(unsigned int constraint, const std::string& name);
157 void BindingConstraintWeek(unsigned int constraint, const std::string& name);
158 void CsrFlowDissociation(unsigned int constraint,
159 const std::string& origin,
160 const std::string& destination);
161
162 void CsrAreaBalance(unsigned int constraint);
163 void CsrBindingConstraintHour(unsigned int constraint, const std::string& name);
164
165 void ShortTermStorageCostVariation(const std::string& constraint_name,
166 unsigned int constraint,
167 const std::string& short_term_name);
168
169 void ShortTermStorageCumulation(const std::string& constraint_type,
170 unsigned int constraint,
171 const std::string& short_term_name,
172 const std::string& constraint_name);
173
174private:
175 void nameWithTimeGranularity(unsigned int constraint,
176 const std::string& name,
177 const std::string& type);
178};
179
180inline std::string TimeIdentifier(unsigned int timeStep, const std::string& timeStepType)
181{
182 return timeStepType + "<" + std::to_string(timeStep) + ">";
183}
184
185inline std::string ShortTermStorageCumulationIdentifier(const std::string& name)
186{
187 return "Constraint<" + name + ">";
188}
189
190inline std::string LocationIdentifier(const std::string& location, const std::string& locationType)
191{
192 return locationType + "<" + location + ">";
193}
Definition AreaBalance.h:40
Definition AreaHydroLevel.h:36
Definition BindingConstraintDay.h:39
Definition BindingConstraintHour.h:36
Definition BindingConstraintWeek.h:37
Definition opt_rename_problem.h:128
Definition CsrAreaBalance.h:43
Definition CsrBindingConstraintHour.h:35
Definition CsrFlowDissociation.h:39
Definition FinalStockEquivalent.h:35
Definition FinalStockExpression.h:36
Definition FlowDissociation.h:38
Definition HydroPowerSmoothingUsingVariationMaxDown.h:30
Definition HydroPowerSmoothingUsingVariationMaxUp.h:29
Definition HydroPowerSmoothingUsingVariationSum.h:31
Definition HydroPower.h:37
Definition MaxHydroPower.h:36
Definition MaxPumping.h:36
Definition MinDownTime.h:36
Definition MinHydroPower.h:37
Definition opt_rename_problem.h:47
Definition NbDispUnitsMinBoundSinceMinUpTime.h:35
Definition NbUnitsOutageLessThanNbUnitsStop.h:35
Definition PMaxDispatchableGeneration.h:29
Definition PMinDispatchableGeneration.h:29
Definition ShortTermStorageCostVariation.h:26
Definition ShortTermStorageCumulation.h:26
Definition ShortTermStorageLevel.h:26
Definition opt_rename_problem.h:30
Definition opt_rename_problem.h:82