21 #ifndef __SOLVER_VARIABLE_ECONOMY_CongestionProbability_H__
22 #define __SOLVER_VARIABLE_ECONOMY_CongestionProbability_H__
24 #include <antares/study/area/constants.h>
26 #include "../../variable.h"
28 namespace Antares::Solver::Variable::Economy
35 return "CONG. PROB. (+/-)";
47 return "Probability for the line to be congested in the upstream-downstream way";
59 & (Category::FileLevel::va);
70 static constexpr uint8_t spatialAggregateMode = Category::spatialAggregateEachYear;
71 static constexpr uint8_t spatialAggregatePostProcessing = 0;
78 typedef IntermediateValuesBaseType* IntermediateValuesType;
82 static std::string Caption(uint indx)
87 return "CONG. PROB +";
89 return "CONG. PROB -";
95 static std::string Unit([[maybe_unused]]
const unsigned int indx)
106 template<
class NextT = Container::EndOfList>
108 :
public Variable::IVariable<CongestionProbability<NextT>, NextT, VCardCongestionProbability>
129 template<
int CDataLevel,
int CFile>
145 delete[] pValuesForTheCurrentYear;
146 delete[] pValuesForYearLocalReport;
151 pNbYearsParallel = study.maxNbYearsInParallel;
153 yearsWeight = study.parameters.getYearsWeight();
154 yearsWeightSum = study.parameters.getYearsWeightSum();
163 pValuesForTheCurrentYear =
new VCardType::IntermediateValuesBaseType[pNbYearsParallel];
164 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; ++numSpace)
168 pValuesForTheCurrentYear[numSpace][i].initializeFromStudy(study);
172 pValuesForYearLocalReport =
new VCardType::IntermediateValuesBaseType[pNbYearsParallel];
173 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; ++numSpace)
177 pValuesForYearLocalReport[numSpace][i].initializeFromStudy(study);
182 NextType::initializeFromStudy(study);
188 NextType::initializeFromArea(study, area);
194 NextType::initializeFromAreaLink(study, link);
197 void simulationBegin()
199 for (
unsigned int numSpace = 0; numSpace < pNbYearsParallel; ++numSpace)
201 pValuesForTheCurrentYear[numSpace][0].reset();
202 pValuesForTheCurrentYear[numSpace][1].reset();
206 NextType::simulationBegin();
212 NextType::simulationEnd();
215 void yearBegin(uint year,
unsigned int numSpace)
218 pValuesForTheCurrentYear[numSpace][0].reset();
219 pValuesForTheCurrentYear[numSpace][1].reset();
221 pValuesForYearLocalReport[numSpace][0].reset();
222 pValuesForYearLocalReport[numSpace][1].reset();
225 NextType::yearBegin(year, numSpace);
228 void yearEndBuild(
State& state,
unsigned int year,
unsigned int numSpace)
231 NextType::yearEndBuild(state, year, numSpace);
234 void yearEnd(uint year, uint numSpace)
239 pValuesForTheCurrentYear[numSpace][i].computeProbabilitiesForTheCurrentYear();
243 NextType::yearEnd(year, numSpace);
246 void computeSummary(
unsigned int year,
unsigned int numSpace)
256 NextType::computeSummary(year, numSpace);
259 void hourBegin(uint hourInTheYear)
262 NextType::hourBegin(hourInTheYear);
265 void hourForEachArea(
State& state,
unsigned int numSpace)
268 NextType::hourForEachArea(state, numSpace);
271 void hourForEachLink(
State& state,
unsigned int numSpace)
274 float ratio = yearsWeight[state.year] / yearsWeightSum;
276 assert(state.link != NULL);
277 const auto& linkDirectCapa = state.link->directCapacities;
278 const auto& linkIndirectCapa = state.link->indirectCapacities;
280 if (state.ntc.ValeurDuFlux[state.link->index]
281 > +linkDirectCapa.getCoefficient(state.year, state.hourInTheYear) - 10e-6)
283 pValuesForTheCurrentYear[numSpace][0].hour[state.hourInTheYear] += 100.0 * ratio;
286 if (state.ntc.ValeurDuFlux[state.link->index]
287 < -linkIndirectCapa.getCoefficient(state.year, state.hourInTheYear) + 10e-6)
289 pValuesForTheCurrentYear[numSpace][1].hour[state.hourInTheYear] += 100.0 * ratio;
293 NextType::hourForEachLink(state, numSpace);
296 void beforeYearByYearExport(uint , uint numSpace)
300 for (uint h = 0; h != HOURS_PER_YEAR; ++h)
302 pValuesForYearLocalReport[numSpace][i].hour[h] = (pValuesForTheCurrentYear[numSpace]
310 for (uint d = 0; d != DAYS_PER_YEAR; ++d)
312 pValuesForYearLocalReport[numSpace][i].day[d] = (pValuesForTheCurrentYear[numSpace]
320 for (uint w = 0; w != WEEKS_PER_YEAR; ++w)
322 pValuesForYearLocalReport[numSpace][i].week[w] = (pValuesForTheCurrentYear[numSpace]
330 for (uint m = 0; m != MONTHS_PER_YEAR; ++m)
332 pValuesForYearLocalReport[numSpace][i].month[m] = (pValuesForTheCurrentYear
340 pValuesForYearLocalReport[numSpace][i].year = (pValuesForTheCurrentYear[numSpace][i]
348 Antares::Memory::Stored<double>::ConstReturnType retrieveRawHourlyValuesForCurrentYear(
352 return pValuesForTheCurrentYear[numSpace][column].hour;
355 void localBuildAnnualSurveyReport(SurveyResults&
results,
361 results.isCurrentVarNA = AncestorType::isNonApplicable;
365 if (AncestorType::isPrinted[i])
368 results.variableCaption = VCardType::Multiple::Caption(i);
369 results.variableUnit = VCardType::Multiple::Unit(i);
370 pValuesForYearLocalReport[numSpace][i]
371 .template buildAnnualSurveyReport<VCardType>(
results, fileLevel, precision);
378 std::vector<float> yearsWeight;
379 float yearsWeightSum;
381 typename VCardType::IntermediateValuesType pValuesForTheCurrentYear;
382 typename VCardType::IntermediateValuesType pValuesForYearLocalReport;
383 unsigned int pNbYearsParallel;
Definition of a link between two areas (Interconnection)
Definition: links.h:58
Definition for a single area.
Definition: area.h:51
Marginal CongestionProbability.
Definition: congestionProbability.h:109
VCardCongestionProbability VCardType
VCard.
Definition: congestionProbability.h:114
NextT NextType
Type of the next static variable.
Definition: congestionProbability.h:112
Variable::IVariable< CongestionProbability< NextT >, NextT, VCardType > AncestorType
Ancestor.
Definition: congestionProbability.h:116
@ count
How many items have we got.
Definition: congestionProbability.h:126
VCardType::ResultsType ResultsType
List of expected results.
Definition: congestionProbability.h:119
Interface for any variable.
Definition: variable.h:47
const StoredResultType & results() const
The results.
Definition: variable.hxx:544
StoredResultType pResults
All the results about this variable.
Definition: variable.h:323
@ count
The count if item in the list.
Definition: results.h:52
Definition: cbuilder.h:120
Definition: congestionProbability.h:131
Definition: congestionProbability.h:81
Definition: congestionProbability.h:31
static constexpr uint8_t hasIntermediateValues
Intermediate values.
Definition: congestionProbability.h:73
static constexpr uint8_t isPossiblyNonApplicable
Can this variable be non applicable (0 : no, 1 : yes)
Definition: congestionProbability.h:75
static constexpr int columnCount
Number of columns used by the variable (One ResultsType per column)
Definition: congestionProbability.h:67
static constexpr uint8_t decimal
Decimal precision.
Definition: congestionProbability.h:65
static constexpr uint8_t categoryDataLevel
Data Level.
Definition: congestionProbability.h:56
static std::string Description()
The short description of the variable.
Definition: congestionProbability.h:45
static std::string Caption()
Caption.
Definition: congestionProbability.h:33
Results< R::AllYears::Raw< > > ResultsType
The expecte results.
Definition: congestionProbability.h:53
static constexpr uint8_t spatialAggregate
The Spatial aggregation.
Definition: congestionProbability.h:69
static constexpr uint8_t nodeDepthForGUI
Indentation (GUI)
Definition: congestionProbability.h:63
static std::string Unit()
Unit.
Definition: congestionProbability.h:39
static constexpr uint8_t categoryFileLevel
File level (provided by the type of the results)
Definition: congestionProbability.h:58
static constexpr uint8_t precision
Precision (views)
Definition: congestionProbability.h:61