Antares Simulator
Power System Simulator
Loading...
Searching...
No Matches
h2o_j_donnees_optimisation.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#ifndef __SOLVER_H2O_J_STRUCTURE_INTERNE__
22#define __SOLVER_H2O_J_STRUCTURE_INTERNE__
23
24#ifdef __CPLUSPLUS
25extern "C"
26{
27#endif
28
29#include "spx_definition_arguments.h"
30#include "spx_fonctions.h"
31
32#ifdef __CPLUSPLUS
33}
34#endif
35
36#define LINFINI 1.e+80
37
38#define JOURS_28 28
39#define JOURS_29 29
40#define JOURS_30 30
41#define JOURS_31 31
42#define NOMBRE_DE_TYPE_DE_MOIS 4
43
44#include <string>
45#include <vector>
46
47/*--------------------------------------------------------------------------------------*/
48/* Matrice des contraintes: il y aura une seule instance pour tous les reservoirs */
49/* Dans ce struct il n'y a que des donnees qui sont lues et surtout pas ecrites */
50/* Ce struct est instancie une seule fois */
52{
53 int NombreDeVariables;
54 std::vector<double> CoutLineaire;
55 std::vector<int> TypeDeVariable; /* Indicateur du type de variable, il ne doit prendre que les
56 suivantes (voir le fichier spx_constantes_externes.h mais ne jamais
57 utiliser les valeurs explicites des constantes): VARIABLE_FIXE ,
58 VARIABLE_BORNEE_DES_DEUX_COTES ,
59 VARIABLE_BORNEE_INFERIEUREMENT ,
60 VARIABLE_BORNEE_SUPERIEUREMENT ,
61 VARIABLE_NON_BORNEE
62 */
63 /* La matrice des contraintes */
64 int NombreDeContraintes;
65 std::vector<char> Sens;
66 std::vector<int> IndicesDebutDeLigne;
67 std::vector<int> NombreDeTermesDesLignes;
68 std::vector<double> CoefficientsDeLaMatriceDesContraintes;
69 std::vector<int> IndicesColonnes;
70 int NombreDeTermesAlloues;
71};
72
73/* Partie variable renseignee avant le lancement de l'optimisation de chaque reservoir */
75{
76 /* Donnees variables de la matrice des contraintes */
77 /* On met quand-meme les bornes dans la partie variable pour le cas ou on voudrait avoir
78 un jour des bornes min et max variables dans le temps et en fonction des reservoirs */
79 std::vector<double> Xmin;
80 std::vector<double> Xmax;
81 std::vector<double> SecondMembre;
82 /* Tableau de pointeur a des doubles. Ce tableau est parallele a X, il permet
83 de renseigner directement les structures de description du reseau avec les
84 resultats contenus dans X */
85 std::vector<double*> AdresseOuPlacerLaValeurDesVariablesOptimisees;
86 /* Resultat */
87 std::vector<double> X;
88 /* En Entree ou en Sortie */
89 int ExistenceDUneSolution; /* En sortie, vaut :
90 OUI_SPX s'il y a une solution,
91 NON_SPX s'il n'y a pas de solution
92 admissible SPX_ERREUR_INTERNE si probleme a l'execution
93 (saturation memoire par exemple), et dans ce cas il n'y a pas de
94 solution SPX_MATRICE_DE_BASE_SINGULIERE si on n'a pas pu
95 construire de matrice de base reguliere, et dans ce cas il n'y a
96 pas de solution
97 */
98
99 std::vector<int>
100 PositionDeLaVariable; /* Vecteur a passer au Simplexe pour recuperer la base optimale */
101 std::vector<int>
102 ComplementDeLaBase; /* Vecteur a passer au Simplexe pour recuperer la base optimale */
103 std::vector<double>
104 CoutsReduits; /* Vecteur a passer au Simplexe pour recuperer les couts reduits */
105 std::vector<double> CoutsMarginauxDesContraintes; /* Vecteur a passer au Simplexe pour recuperer
106 les couts marginaux */
107};
108
109/* Les correspondances fixes des contraintes */
111{
112 int NumeroDeContrainteDEnergieMensuelle;
113 std::vector<int> NumeroDeContrainteSurXi;
114};
115
116/* Les correspondances des variables */
118{
119 std::vector<int> NumeroDeVariableTurbine; /* Turbines */
120 int NumeroDeLaVariableMu; /* Variable de deversement (total sur la periode) */
121 int NumeroDeLaVariableXi; /* Variable decrivant l'ecart max au turbine cible quand le turbine
122 est inferieur au turbine cible */
123};
124
125/* Structure uniquement exploitee par l'optimisation (donc a ne pas acceder depuis l'exterieur) */
127{
128 char LesCoutsOntEteInitialises; /* Vaut OUI ou NON */
129
130 int NombreDeProblemes;
131 std::vector<int> NbJoursDUnProbleme;
132
133 std::vector<CORRESPONDANCE_DES_VARIABLES> CorrespondanceDesVariables;
134 std::vector<CORRESPONDANCE_DES_CONTRAINTES> CorrespondanceDesContraintes;
135
136 std::vector<PROBLEME_LINEAIRE_PARTIE_FIXE> ProblemeLineairePartieFixe;
137 std::vector<PROBLEME_LINEAIRE_PARTIE_VARIABLE> ProblemeLineairePartieVariable;
138
139 std::vector<PROBLEME_SPX*>
140 ProblemeSpx; /* Il y en a 1 par reservoir. Un probleme couvre 1 mois */
141};
142
143#endif
Definition h2o_j_donnees_optimisation.h:111
Definition h2o_j_donnees_optimisation.h:118
Definition h2o_j_donnees_optimisation.h:127
Definition h2o_j_donnees_optimisation.h:52
Definition h2o_j_donnees_optimisation.h:75