Antares Simulator
Power System Simulator
opt_rename_problem.h
1 /*
2 ** Copyright 2007-2025, 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 
26 const std::string SEPARATOR = "::";
27 const std::string AREA_SEP = "$$";
28 
30 {
31 public:
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 
42 private:
43  std::vector<std::string>& target_;
44 };
45 
46 class Namer
47 {
48 public:
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 
81 class VariableNamer: public Namer
82 {
83 public:
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 ShortTermStorageOverflow(unsigned int variable, const std::string& shortTermStorageName);
103  void ShortTermStorageCostVariationInjection(unsigned int variable,
104  const std::string& shortTermStorageName);
105  void ShortTermStorageCostVariationWithdrawal(unsigned int variable,
106  const std::string& shortTermStorageName);
107  void HydProd(unsigned int variable);
108  void HydProdDown(unsigned int variable);
109  void HydProdUp(unsigned int variable);
110  void Pumping(unsigned int variable);
111  void HydroLevel(unsigned int variable);
112  void Overflow(unsigned int variable);
113  void FinalStorage(unsigned int variable);
114  void LayerStorage(unsigned int variable, int layerIndex);
115  void PositiveUnsuppliedEnergy(unsigned int variable);
116  void NegativeUnsuppliedEnergy(unsigned int variable);
117  void AreaBalance(unsigned int variable);
118 
119 private:
120  void SetAreaVariableName(unsigned int variable,
121  const std::string& variableType,
122  int layerIndex);
123  void SetShortTermStorageVariableName(unsigned int variable,
124  const std::string& variableType,
125  const std::string& shortTermStorageName);
126 };
127 
128 class ConstraintNamer: public Namer
129 {
130 public:
131  using Namer::Namer;
132 
133  void FlowDissociation(unsigned int constraint,
134  const std::string& origin,
135  const std::string& destination);
136 
137  void AreaBalance(unsigned int constraint);
138  void FictiveLoads(unsigned int constraint);
139  void HydroPower(unsigned int constraint);
140  void HydroPowerSmoothingUsingVariationSum(unsigned int constraint);
141  void HydroPowerSmoothingUsingVariationMaxDown(unsigned int constraint);
142  void HydroPowerSmoothingUsingVariationMaxUp(unsigned int constraint);
143  void MinHydroPower(unsigned int constraint);
144  void MaxHydroPower(unsigned int constraint);
145  void MaxPumping(unsigned int constraint);
146  void AreaHydroLevel(unsigned int constraint);
147  void FinalStockEquivalent(unsigned int constraint);
148  void FinalStockExpression(unsigned int constraint);
149  void NbUnitsOutageLessThanNbUnitsStop(unsigned int constraint, const std::string& clusterName);
150  void NbDispUnitsMinBoundSinceMinUpTime(unsigned int constraint, const std::string& clusterName);
151  void MinDownTime(unsigned int constraint, const std::string& clusterName);
152  void PMaxDispatchableGeneration(unsigned int constraint, const std::string& clusterName);
153  void PMinDispatchableGeneration(unsigned int constraint, const std::string& clusterName);
154  void ConsistenceNODU(unsigned int constraint, const std::string& clusterName);
155  void ShortTermStorageLevel(unsigned int constraint, const std::string& name);
156  void BindingConstraintHour(unsigned int constraint, const std::string& name);
157  void BindingConstraintDay(unsigned int constraint, const std::string& name);
158  void BindingConstraintWeek(unsigned int constraint, const std::string& name);
159  void CsrFlowDissociation(unsigned int constraint,
160  const std::string& origin,
161  const std::string& destination);
162 
163  void CsrAreaBalance(unsigned int constraint);
164  void CsrBindingConstraintHour(unsigned int constraint, const std::string& name);
165 
166  void ShortTermStorageCostVariation(const std::string& constraint_name,
167  unsigned int constraint,
168  const std::string& short_term_name);
169 
170  void ShortTermStorageCumulation(const std::string& constraint_type,
171  unsigned int constraint,
172  const std::string& short_term_name,
173  const std::string& constraint_name);
174 
175 private:
176  void nameWithTimeGranularity(unsigned int constraint,
177  const std::string& name,
178  const std::string& type);
179 };
180 
181 inline std::string TimeIdentifier(unsigned int timeStep, const std::string& timeStepType)
182 {
183  return timeStepType + "<" + std::to_string(timeStep) + ">";
184 }
185 
186 inline std::string ShortTermStorageCumulationIdentifier(const std::string& name)
187 {
188  return "Constraint<" + name + ">";
189 }
190 
191 inline std::string LocationIdentifier(const std::string& location, const std::string& locationType)
192 {
193  return locationType + "<" + location + ">";
194 }
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:129
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