Antares Simulator
Power System Simulator
Loading...
Searching...
No Matches
opt_structure_probleme_a_resoudre.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_OPTIMISATION_STRUCTURE_PROBLEME_A_RESOUDRE_H__
22#define __SOLVER_OPTIMISATION_STRUCTURE_PROBLEME_A_RESOUDRE_H__
23
24#include <memory>
25#include <string>
26#include <vector>
27
28#include <antares/solver/utils/basis_status.h>
29
30#include "SparseVector.hxx"
31#include "opt_constants.h"
32
33/*--------------------------------------------------------------------------------------*/
34
35/* Le probleme a resoudre */
37{
38 /* La matrice des contraintes */
39 int NombreDeVariables;
40 int NombreDeContraintes; /* Il est egal a :
41 ( NombreDePays contraintes de bilan
42 + NombreDePays contraintes de reserve
43 + NombreDeContraintesCouplantes
44 )* NombreDePasDeTempsDUneJournee
45 + NombreDePays contraintes de turbine */
46 std::string Sens;
47 std::vector<int> IndicesDebutDeLigne;
48 std::vector<int> NombreDeTermesDesLignes;
49 SparseVector<double> CoefficientsDeLaMatriceDesContraintes;
50 SparseVector<int> IndicesColonnes;
51 int IncrementDAllocationMatriceDesContraintes;
52 int NombreDeTermesDansLaMatriceDesContraintes;
53 /* Donnees variables de la matrice des contraintes */
54 std::vector<double> CoutQuadratique;
55 std::vector<double> CoutLineaire;
56 std::vector<int> TypeDeVariable; /* Indicateur du type de variable, il ne doit prendre que les
57 suivantes (voir le fichier spx_constantes_externes.h mais ne jamais
58 utiliser les valeurs explicites des constantes): VARIABLE_FIXE ,
59 VARIABLE_BORNEE_DES_DEUX_COTES ,
60 VARIABLE_BORNEE_INFERIEUREMENT ,
61 VARIABLE_BORNEE_SUPERIEUREMENT ,
62 VARIABLE_NON_BORNEE
63 */
64 std::vector<double> Xmin;
65 std::vector<double> Xmax;
66 std::vector<double> SecondMembre;
67 /* Tableau de pointeur a des doubles. Ce tableau est parallele a X, il permet
68 de renseigner directement les structures de description du reseau avec les
69 resultats contenus dans X */
70 std::vector<double*> AdresseOuPlacerLaValeurDesVariablesOptimisees;
71 /* Resultat */
72 std::vector<double> X;
73 /* Tableau de pointeur a des doubles. Ce tableau est parallele a CoutsMarginauxDesContraintes,
74 il permet de renseigner directement les structures de description du reseau avec les
75 resultats sur les couts marginaux */
76 std::vector<double*> AdresseOuPlacerLaValeurDesCoutsMarginaux;
77 std::vector<double> CoutsMarginauxDesContraintes;
78 /* Tableau de pointeur a des doubles. Ce tableau est parallele a CoutsMarginauxDesContraintes,
79 il permet de renseigner directement les structures de description du reseau avec les
80 resultats sur les couts reduits */
81 std::vector<double*> AdresseOuPlacerLaValeurDesCoutsReduits;
82 std::vector<double> CoutsReduits;
83 /* En Entree ou en Sortie */
84 int ExistenceDUneSolution; /* En sortie, vaut :
85 OUI_SPX s'il y a une solution,
86 NON_SPX s'il n'y a pas de solution admissible
87 SPX_ERREUR_INTERNE si probleme a l'execution (saturation memoire
88 par exemple), et dans ce cas il n'y a pas de solution
89 SPX_MATRICE_DE_BASE_SINGULIERE si on n'a pas pu construire de
90 matrice de base reguliere, et dans ce cas il n'y a pas de solution
91 */
92
93 std::vector<void*> ProblemesSpx;
94
95 std::vector<int>
96 PositionDeLaVariable; /* Vecteur a passer au Simplexe pour recuperer la base optimale */
97 std::vector<int>
98 ComplementDeLaBase; /* Vecteur a passer au Simplexe pour recuperer la base optimale */
99
100 /* Vecteurs de travail pour contruire la matrice des contraintes lineaires */
101 std::vector<double> Pi;
102 std::vector<int> Colonne;
103
104 /* Nommage des variables & contraintes */
105 std::vector<std::string> NomDesVariables;
106 std::vector<std::string> NomDesContraintes;
107
108 std::vector<bool> VariablesEntieres; // true = int, false = continuous
109
110 // PIMPL is used to break dependency to OR-Tools' linear_solver.h (big header)
112};
113
114#endif /* __SOLVER_OPTIMISATION_STRUCTURE_PROBLEME_A_RESOUDRE_H__ */
Definition basis_status.h:40
Definition SparseVector.hxx:5
Definition opt_structure_probleme_a_resoudre.h:37