diff --git a/src/solver/optimisation/adequacy_patch_csr/adq_patch_curtailment_sharing.cpp b/src/solver/optimisation/adequacy_patch_csr/adq_patch_curtailment_sharing.cpp index f453def0b2..74458129f7 100644 --- a/src/solver/optimisation/adequacy_patch_csr/adq_patch_curtailment_sharing.cpp +++ b/src/solver/optimisation/adequacy_patch_csr/adq_patch_curtailment_sharing.cpp @@ -198,8 +198,8 @@ void HourlyCSRProblem::buildProblemConstraintsRHS() void HourlyCSRProblem::setProblemCost() { logs.debug() << "[CSR] cost"; - std::fill_n(problemeAResoudre_.CoutLineaire, problemeAResoudre_.NombreDeVariables, 0.); - std::fill_n(problemeAResoudre_.CoutQuadratique, problemeAResoudre_.NombreDeVariables, 0.); + problemeAResoudre_.CoutLineaire.assign(problemeAResoudre_.NombreDeVariables, 0.); + problemeAResoudre_.CoutQuadratique.assign(problemeAResoudre_.NombreDeVariables, 0.); setQuadraticCost(); if (adqPatchParams_.curtailmentSharing.includeHurdleCost) diff --git a/src/solver/optimisation/adequacy_patch_csr/construct_problem_constraints_RHS.cpp b/src/solver/optimisation/adequacy_patch_csr/construct_problem_constraints_RHS.cpp index a1eb58d1a2..fcbb628301 100644 --- a/src/solver/optimisation/adequacy_patch_csr/construct_problem_constraints_RHS.cpp +++ b/src/solver/optimisation/adequacy_patch_csr/construct_problem_constraints_RHS.cpp @@ -82,7 +82,7 @@ void HourlyCSRProblem::setRHSnodeBalanceValue() void HourlyCSRProblem::setRHSbindingConstraintsValue() { - double* SecondMembre = problemeAResoudre_.SecondMembre; + std::vector& SecondMembre = problemeAResoudre_.SecondMembre; // constraint: // user defined Binding constraints between transmission flows diff --git a/src/solver/optimisation/adequacy_patch_csr/set_variable_boundaries.cpp b/src/solver/optimisation/adequacy_patch_csr/set_variable_boundaries.cpp index bdd43897f4..f86aee0e9d 100644 --- a/src/solver/optimisation/adequacy_patch_csr/set_variable_boundaries.cpp +++ b/src/solver/optimisation/adequacy_patch_csr/set_variable_boundaries.cpp @@ -110,8 +110,8 @@ void HourlyCSRProblem::setBoundsOnFlows() { const CORRESPONDANCES_DES_VARIABLES* CorrespondanceVarNativesVarOptim = problemeHebdo_->CorrespondanceVarNativesVarOptim[triggeredHour]; - double* Xmin = problemeAResoudre_.Xmin; - double* Xmax = problemeAResoudre_.Xmax; + std::vector& Xmin = problemeAResoudre_.Xmin; + std::vector& Xmax = problemeAResoudre_.Xmax; VALEURS_DE_NTC_ET_RESISTANCES& ValeursDeNTC = problemeHebdo_->ValeursDeNTC[triggeredHour]; // variables bounds: transmissin flows (flow, direct_direct and flow_indirect). For links diff --git a/src/solver/optimisation/adequacy_patch_csr/solve_problem.cpp b/src/solver/optimisation/adequacy_patch_csr/solve_problem.cpp index 067befa41c..4768c6caf7 100644 --- a/src/solver/optimisation/adequacy_patch_csr/solve_problem.cpp +++ b/src/solver/optimisation/adequacy_patch_csr/solve_problem.cpp @@ -61,24 +61,24 @@ std::unique_ptr buildInteriorPointProblem( auto Probleme = std::make_unique(); Probleme->NombreMaxDIterations = -1; - Probleme->CoutQuadratique = ProblemeAResoudre.CoutQuadratique; - Probleme->CoutLineaire = ProblemeAResoudre.CoutLineaire; + Probleme->CoutQuadratique = ProblemeAResoudre.CoutQuadratique.data(); + Probleme->CoutLineaire = ProblemeAResoudre.CoutLineaire.data(); Probleme->X = ProblemeAResoudre.X; - Probleme->Xmin = ProblemeAResoudre.Xmin; - Probleme->Xmax = ProblemeAResoudre.Xmax; + Probleme->Xmin = ProblemeAResoudre.Xmin.data(); + Probleme->Xmax = ProblemeAResoudre.Xmax.data(); Probleme->NombreDeVariables = ProblemeAResoudre.NombreDeVariables; - Probleme->TypeDeVariable = ProblemeAResoudre.TypeDeVariable; + Probleme->TypeDeVariable = ProblemeAResoudre.TypeDeVariable.data(); Probleme->VariableBinaire = (char*)ProblemeAResoudre.CoutsReduits; Probleme->NombreDeContraintes = ProblemeAResoudre.NombreDeContraintes; Probleme->IndicesDebutDeLigne = ProblemeAResoudre.IndicesDebutDeLigne.data(); Probleme->NombreDeTermesDesLignes = ProblemeAResoudre.NombreDeTermesDesLignes.data(); - Probleme->IndicesColonnes = ProblemeAResoudre.IndicesColonnes; + Probleme->IndicesColonnes = ProblemeAResoudre.IndicesColonnes.data(); Probleme->CoefficientsDeLaMatriceDesContraintes - = ProblemeAResoudre.CoefficientsDeLaMatriceDesContraintes; + = ProblemeAResoudre.CoefficientsDeLaMatriceDesContraintes.data(); Probleme->Sens = ProblemeAResoudre.Sens.data(); - Probleme->SecondMembre = ProblemeAResoudre.SecondMembre; + Probleme->SecondMembre = ProblemeAResoudre.SecondMembre.data(); Probleme->AffichageDesTraces = NON_PI; @@ -86,7 +86,7 @@ std::unique_ptr buildInteriorPointProblem( Probleme->UtiliserLaToleranceDeStationnariteParDefaut = OUI_PI; Probleme->UtiliserLaToleranceDeComplementariteParDefaut = OUI_PI; - Probleme->CoutsMarginauxDesContraintes = ProblemeAResoudre.CoutsMarginauxDesContraintes; + Probleme->CoutsMarginauxDesContraintes = ProblemeAResoudre.CoutsMarginauxDesContraintes.data(); Probleme->CoutsMarginauxDesContraintesDeBorneInf = ProblemeAResoudre.CoutsReduits; Probleme->CoutsMarginauxDesContraintesDeBorneSup = ProblemeAResoudre.CoutsReduits; diff --git a/src/solver/optimisation/opt_alloc_probleme_a_optimiser.cpp b/src/solver/optimisation/opt_alloc_probleme_a_optimiser.cpp index d12d83e94a..2cb8c5aa90 100644 --- a/src/solver/optimisation/opt_alloc_probleme_a_optimiser.cpp +++ b/src/solver/optimisation/opt_alloc_probleme_a_optimiser.cpp @@ -60,25 +60,23 @@ void OPT_AllocateFromNumberOfVariableConstraints(PROBLEME_ANTARES_A_RESOUDRE* Pr const size_t szNbContint = ProblemeAResoudre->NombreDeContraintes * sizeof(int); ProblemeAResoudre->Sens.resize(ProblemeAResoudre->NombreDeContraintes); - ProblemeAResoudre->IndicesDebutDeLigne.resize(szNbContint); - ProblemeAResoudre->NombreDeTermesDesLignes.resize(szNbContint); + ProblemeAResoudre->IndicesDebutDeLigne.assign(szNbContint, 0); + ProblemeAResoudre->NombreDeTermesDesLignes.assign(szNbContint, 0); - ProblemeAResoudre->CoefficientsDeLaMatriceDesContraintes - = (double*)MemAlloc(NbTermes * sizeof(double)); - ProblemeAResoudre->IndicesColonnes = (int*)MemAlloc(NbTermes * sizeof(int)); + ProblemeAResoudre->CoefficientsDeLaMatriceDesContraintes.assign(NbTermes, 0.); + ProblemeAResoudre->IndicesColonnes.assign(NbTermes, 0); ProblemeAResoudre->NombreDeTermesAllouesDansLaMatriceDesContraintes = NbTermes; ProblemeAResoudre->IncrementDAllocationMatriceDesContraintes = (int)(0.1 * NbTermes); - ProblemeAResoudre->CoutQuadratique = (double*)MemAlloc(szNbVarsDouble); - ProblemeAResoudre->CoutLineaire = (double*)MemAlloc(szNbVarsDouble); - ProblemeAResoudre->TypeDeVariable = (int*)MemAlloc(szNbVarsint); - ProblemeAResoudre->Xmin = (double*)MemAlloc(szNbVarsDouble); - ProblemeAResoudre->Xmax = (double*)MemAlloc(szNbVarsDouble); + ProblemeAResoudre->CoutQuadratique.assign(szNbVarsDouble, 0.); + ProblemeAResoudre->CoutLineaire.assign(szNbVarsDouble, 0.); + ProblemeAResoudre->TypeDeVariable.assign(szNbVarsint, 0); + ProblemeAResoudre->Xmin.assign(szNbVarsDouble, 0.); + ProblemeAResoudre->Xmax.assign(szNbVarsDouble, 0.); ProblemeAResoudre->X = (double*)MemAlloc(szNbVarsDouble); - ProblemeAResoudre->SecondMembre - = (double*)MemAlloc(ProblemeAResoudre->NombreDeContraintes * sizeof(double)); + ProblemeAResoudre->SecondMembre.assign(ProblemeAResoudre->NombreDeContraintes, 0.); ProblemeAResoudre->AdresseOuPlacerLaValeurDesVariablesOptimisees = (double**)MemAlloc(ProblemeAResoudre->NombreDeVariables * sizeof(void*)); @@ -87,8 +85,7 @@ void OPT_AllocateFromNumberOfVariableConstraints(PROBLEME_ANTARES_A_RESOUDRE* Pr ProblemeAResoudre->AdresseOuPlacerLaValeurDesCoutsMarginaux = (double**)MemAlloc(ProblemeAResoudre->NombreDeContraintes * sizeof(void*)); - ProblemeAResoudre->CoutsMarginauxDesContraintes - = (double*)MemAlloc(ProblemeAResoudre->NombreDeContraintes * sizeof(double)); + ProblemeAResoudre->CoutsMarginauxDesContraintes.assign(ProblemeAResoudre->NombreDeContraintes, 0.); ProblemeAResoudre->CoutsReduits = (double*)MemAlloc(szNbVarsDouble); ProblemeAResoudre->PositionDeLaVariable @@ -106,19 +103,10 @@ void OPT_AllocateFromNumberOfVariableConstraints(PROBLEME_ANTARES_A_RESOUDRE* Pr void OPT_FreeOptimizationData(PROBLEME_ANTARES_A_RESOUDRE* ProblemeAResoudre) { - MemFree(ProblemeAResoudre->CoefficientsDeLaMatriceDesContraintes); - MemFree(ProblemeAResoudre->IndicesColonnes); - MemFree(ProblemeAResoudre->CoutQuadratique); - MemFree(ProblemeAResoudre->CoutLineaire); - MemFree(ProblemeAResoudre->TypeDeVariable); - MemFree(ProblemeAResoudre->Xmin); - MemFree(ProblemeAResoudre->Xmax); MemFree(ProblemeAResoudre->X); - MemFree(ProblemeAResoudre->SecondMembre); MemFree(ProblemeAResoudre->AdresseOuPlacerLaValeurDesVariablesOptimisees); MemFree(ProblemeAResoudre->AdresseOuPlacerLaValeurDesCoutsReduits); MemFree(ProblemeAResoudre->AdresseOuPlacerLaValeurDesCoutsMarginaux); - MemFree(ProblemeAResoudre->CoutsMarginauxDesContraintes); MemFree(ProblemeAResoudre->CoutsReduits); MemFree(ProblemeAResoudre->PositionDeLaVariable); @@ -218,11 +206,9 @@ void OPT_AugmenterLaTailleDeLaMatriceDesContraintes(PROBLEME_ANTARES_A_RESOUDRE* << NbTermes; logs.info(); - ProblemeAResoudre->CoefficientsDeLaMatriceDesContraintes = (double*)MemRealloc( - ProblemeAResoudre->CoefficientsDeLaMatriceDesContraintes, NbTermes * sizeof(double)); + ProblemeAResoudre->CoefficientsDeLaMatriceDesContraintes.resize(NbTermes); - ProblemeAResoudre->IndicesColonnes - = (int*)MemRealloc(ProblemeAResoudre->IndicesColonnes, NbTermes * sizeof(int)); + ProblemeAResoudre->IndicesColonnes.resize(NbTermes); ProblemeAResoudre->NombreDeTermesAllouesDansLaMatriceDesContraintes = NbTermes; } diff --git a/src/solver/optimisation/opt_appel_solveur_lineaire.cpp b/src/solver/optimisation/opt_appel_solveur_lineaire.cpp index 3d5715a8b7..b9faf7dd88 100644 --- a/src/solver/optimisation/opt_appel_solveur_lineaire.cpp +++ b/src/solver/optimisation/opt_appel_solveur_lineaire.cpp @@ -152,23 +152,23 @@ bool OPT_AppelDuSimplexe(PROBLEME_HEBDO* problemeHebdo, if (ortoolsUsed) { ORTOOLS_ModifierLeVecteurCouts( - solver, ProblemeAResoudre->CoutLineaire, ProblemeAResoudre->NombreDeVariables); + solver, ProblemeAResoudre->CoutLineaire.data(), ProblemeAResoudre->NombreDeVariables); ORTOOLS_ModifierLeVecteurSecondMembre(solver, - ProblemeAResoudre->SecondMembre, + ProblemeAResoudre->SecondMembre.data(), ProblemeAResoudre->Sens.data(), ProblemeAResoudre->NombreDeContraintes); ORTOOLS_CorrigerLesBornes(solver, - ProblemeAResoudre->Xmin, - ProblemeAResoudre->Xmax, - ProblemeAResoudre->TypeDeVariable, + ProblemeAResoudre->Xmin.data(), + ProblemeAResoudre->Xmax.data(), + ProblemeAResoudre->TypeDeVariable.data(), ProblemeAResoudre->NombreDeVariables); } else { SPX_ModifierLeVecteurCouts( - ProbSpx, ProblemeAResoudre->CoutLineaire, ProblemeAResoudre->NombreDeVariables); + ProbSpx, ProblemeAResoudre->CoutLineaire.data(), ProblemeAResoudre->NombreDeVariables); SPX_ModifierLeVecteurSecondMembre(ProbSpx, - ProblemeAResoudre->SecondMembre, + ProblemeAResoudre->SecondMembre.data(), ProblemeAResoudre->Sens.data(), ProblemeAResoudre->NombreDeContraintes); } @@ -180,21 +180,21 @@ bool OPT_AppelDuSimplexe(PROBLEME_HEBDO* problemeHebdo, Probleme.NombreMaxDIterations = -1; Probleme.DureeMaxDuCalcul = -1.; - Probleme.CoutLineaire = ProblemeAResoudre->CoutLineaire; + Probleme.CoutLineaire = ProblemeAResoudre->CoutLineaire.data(); Probleme.X = ProblemeAResoudre->X; - Probleme.Xmin = ProblemeAResoudre->Xmin; - Probleme.Xmax = ProblemeAResoudre->Xmax; + Probleme.Xmin = ProblemeAResoudre->Xmin.data(); + Probleme.Xmax = ProblemeAResoudre->Xmax.data(); Probleme.NombreDeVariables = ProblemeAResoudre->NombreDeVariables; - Probleme.TypeDeVariable = ProblemeAResoudre->TypeDeVariable; + Probleme.TypeDeVariable = ProblemeAResoudre->TypeDeVariable.data(); Probleme.NombreDeContraintes = ProblemeAResoudre->NombreDeContraintes; Probleme.IndicesDebutDeLigne = ProblemeAResoudre->IndicesDebutDeLigne.data(); Probleme.NombreDeTermesDesLignes = ProblemeAResoudre->NombreDeTermesDesLignes.data(); - Probleme.IndicesColonnes = ProblemeAResoudre->IndicesColonnes; + Probleme.IndicesColonnes = ProblemeAResoudre->IndicesColonnes.data(); Probleme.CoefficientsDeLaMatriceDesContraintes - = ProblemeAResoudre->CoefficientsDeLaMatriceDesContraintes; + = ProblemeAResoudre->CoefficientsDeLaMatriceDesContraintes.data(); Probleme.Sens = ProblemeAResoudre->Sens.data(); - Probleme.SecondMembre = ProblemeAResoudre->SecondMembre; + Probleme.SecondMembre = ProblemeAResoudre->SecondMembre.data(); Probleme.ChoixDeLAlgorithme = SPX_DUAL; @@ -213,7 +213,7 @@ bool OPT_AppelDuSimplexe(PROBLEME_HEBDO* problemeHebdo, Probleme.UtiliserCoutMax = NON_SPX; Probleme.CoutMax = 0.0; - Probleme.CoutsMarginauxDesContraintes = ProblemeAResoudre->CoutsMarginauxDesContraintes; + Probleme.CoutsMarginauxDesContraintes = ProblemeAResoudre->CoutsMarginauxDesContraintes.data(); Probleme.CoutsReduits = ProblemeAResoudre->CoutsReduits; #ifndef NDEBUG diff --git a/src/solver/optimisation/opt_appel_solveur_quadratique.cpp b/src/solver/optimisation/opt_appel_solveur_quadratique.cpp index 233aa793f7..22ba5ca108 100644 --- a/src/solver/optimisation/opt_appel_solveur_quadratique.cpp +++ b/src/solver/optimisation/opt_appel_solveur_quadratique.cpp @@ -70,24 +70,24 @@ bool OPT_AppelDuSolveurQuadratique(PROBLEME_ANTARES_A_RESOUDRE* ProblemeAResoudr int ChoixToleranceParDefautSurLaComplementarite = OUI_PI; Probleme.NombreMaxDIterations = -1; - Probleme.CoutQuadratique = ProblemeAResoudre->CoutQuadratique; - Probleme.CoutLineaire = ProblemeAResoudre->CoutLineaire; + Probleme.CoutQuadratique = ProblemeAResoudre->CoutQuadratique.data(); + Probleme.CoutLineaire = ProblemeAResoudre->CoutLineaire.data(); Probleme.X = ProblemeAResoudre->X; - Probleme.Xmin = ProblemeAResoudre->Xmin; - Probleme.Xmax = ProblemeAResoudre->Xmax; + Probleme.Xmin = ProblemeAResoudre->Xmin.data(); + Probleme.Xmax = ProblemeAResoudre->Xmax.data(); Probleme.NombreDeVariables = ProblemeAResoudre->NombreDeVariables; - Probleme.TypeDeVariable = ProblemeAResoudre->TypeDeVariable; + Probleme.TypeDeVariable = ProblemeAResoudre->TypeDeVariable.data(); Probleme.VariableBinaire = (char*)ProblemeAResoudre->CoutsReduits; Probleme.NombreDeContraintes = ProblemeAResoudre->NombreDeContraintes; Probleme.IndicesDebutDeLigne = ProblemeAResoudre->IndicesDebutDeLigne.data(); Probleme.NombreDeTermesDesLignes = ProblemeAResoudre->NombreDeTermesDesLignes.data(); - Probleme.IndicesColonnes = ProblemeAResoudre->IndicesColonnes; + Probleme.IndicesColonnes = ProblemeAResoudre->IndicesColonnes.data(); Probleme.CoefficientsDeLaMatriceDesContraintes - = ProblemeAResoudre->CoefficientsDeLaMatriceDesContraintes; + = ProblemeAResoudre->CoefficientsDeLaMatriceDesContraintes.data(); Probleme.Sens = ProblemeAResoudre->Sens.data(); - Probleme.SecondMembre = ProblemeAResoudre->SecondMembre; + Probleme.SecondMembre = ProblemeAResoudre->SecondMembre.data(); Probleme.AffichageDesTraces = NON_PI; @@ -102,7 +102,7 @@ bool OPT_AppelDuSolveurQuadratique(PROBLEME_ANTARES_A_RESOUDRE* ProblemeAResoudr = ChoixToleranceParDefautSurLaComplementarite; Probleme.ToleranceDeComplementarite = ToleranceSurLaComplementarite; - Probleme.CoutsMarginauxDesContraintes = ProblemeAResoudre->CoutsMarginauxDesContraintes; + Probleme.CoutsMarginauxDesContraintes = ProblemeAResoudre->CoutsMarginauxDesContraintes.data(); Probleme.CoutsMarginauxDesContraintesDeBorneInf = ProblemeAResoudre->CoutsReduits; Probleme.CoutsMarginauxDesContraintesDeBorneSup = ProblemeAResoudre->CoutsReduits; diff --git a/src/solver/optimisation/opt_gestion_des_bornes_cas_lineaire.cpp b/src/solver/optimisation/opt_gestion_des_bornes_cas_lineaire.cpp index aab049cf3a..6be9aa65bb 100644 --- a/src/solver/optimisation/opt_gestion_des_bornes_cas_lineaire.cpp +++ b/src/solver/optimisation/opt_gestion_des_bornes_cas_lineaire.cpp @@ -98,8 +98,8 @@ void setBoundsForUnsuppliedEnergy(PROBLEME_HEBDO* problemeHebdo, const int optimizationNumber) { // OUTPUT - double* Xmin = problemeHebdo->ProblemeAResoudre->Xmin; - double* Xmax = problemeHebdo->ProblemeAResoudre->Xmax; + std::vector& Xmin = problemeHebdo->ProblemeAResoudre->Xmin; + std::vector& Xmax = problemeHebdo->ProblemeAResoudre->Xmax; double** AdresseOuPlacerLaValeurDesVariablesOptimisees = problemeHebdo->ProblemeAResoudre->AdresseOuPlacerLaValeurDesVariablesOptimisees; @@ -162,8 +162,8 @@ static void setBoundsForShortTermStorage(PROBLEME_HEBDO* problemeHebdo, const int PremierPdtDeLIntervalle, const int DernierPdtDeLIntervalle) { - double* Xmin = problemeHebdo->ProblemeAResoudre->Xmin; - double* Xmax = problemeHebdo->ProblemeAResoudre->Xmax; + std::vector& Xmin = problemeHebdo->ProblemeAResoudre->Xmin; + std::vector& Xmax = problemeHebdo->ProblemeAResoudre->Xmax; double** AddressForVars = problemeHebdo->ProblemeAResoudre->AdresseOuPlacerLaValeurDesVariablesOptimisees; int weekFirstHour = problemeHebdo->weekInTheYear * 168; @@ -229,9 +229,9 @@ void OPT_InitialiserLesBornesDesVariablesDuProblemeLineaire(PROBLEME_HEBDO* prob = ProblemeAResoudre->AdresseOuPlacerLaValeurDesVariablesOptimisees; double** AdresseOuPlacerLaValeurDesCoutsReduits = ProblemeAResoudre->AdresseOuPlacerLaValeurDesCoutsReduits; - double* Xmin = ProblemeAResoudre->Xmin; - double* Xmax = ProblemeAResoudre->Xmax; - int* TypeDeVariable = ProblemeAResoudre->TypeDeVariable; + std::vector& Xmin = ProblemeAResoudre->Xmin; + std::vector& Xmax = ProblemeAResoudre->Xmax; + std::vector& TypeDeVariable = ProblemeAResoudre->TypeDeVariable; for (int i = 0; i < ProblemeAResoudre->NombreDeVariables; i++) { diff --git a/src/solver/optimisation/opt_gestion_des_bornes_couts_demarrage.cpp b/src/solver/optimisation/opt_gestion_des_bornes_couts_demarrage.cpp index 677bd3e67e..1d54988354 100644 --- a/src/solver/optimisation/opt_gestion_des_bornes_couts_demarrage.cpp +++ b/src/solver/optimisation/opt_gestion_des_bornes_couts_demarrage.cpp @@ -55,8 +55,8 @@ void OPT_InitialiserLesBornesDesVariablesDuProblemeLineaireCoutsDeDemarrage( double** AdresseOuPlacerLaValeurDesVariablesOptimisees = ProblemeAResoudre->AdresseOuPlacerLaValeurDesVariablesOptimisees; - double* Xmin = ProblemeAResoudre->Xmin; - double* Xmax = ProblemeAResoudre->Xmax; + std::vector& Xmin = ProblemeAResoudre->Xmin; + std::vector& Xmax = ProblemeAResoudre->Xmax; for (int pdtHebdo = PremierPdtDeLIntervalle, pdtJour = 0; pdtHebdo < DernierPdtDeLIntervalle; pdtHebdo++, pdtJour++) diff --git a/src/solver/optimisation/opt_gestion_des_couts_cas_lineaire.cpp b/src/solver/optimisation/opt_gestion_des_couts_cas_lineaire.cpp index 1155f63787..479e9a8fff 100644 --- a/src/solver/optimisation/opt_gestion_des_couts_cas_lineaire.cpp +++ b/src/solver/optimisation/opt_gestion_des_couts_cas_lineaire.cpp @@ -50,7 +50,7 @@ static void shortTermStorageCost( int NombreDePays, const std::vector<::ShortTermStorage::AREA_INPUT>& shortTermStorageInput, std::vector& CorrespondanceVarNativesVarOptim, - double* linearCost) + std::vector& linearCost) { SIM::SpreadGenerator spreadGenerator; for (int pays = 0; pays < NombreDePays; ++pays) @@ -99,9 +99,7 @@ void OPT_InitialiserLesCoutsLineaire(PROBLEME_HEBDO* problemeHebdo, int pdtJour = 0; - memset((char*)ProblemeAResoudre->CoutQuadratique, - 0, - ProblemeAResoudre->NombreDeVariables * sizeof(double)); + ProblemeAResoudre->CoutQuadratique.assign(ProblemeAResoudre->NombreDeVariables, 0.); shortTermStorageCost(PremierPdtDeLIntervalle, DernierPdtDeLIntervalle, diff --git a/src/solver/optimisation/opt_gestion_des_couts_cas_quadratique.cpp b/src/solver/optimisation/opt_gestion_des_couts_cas_quadratique.cpp index 40f7575bba..daa6cd6284 100644 --- a/src/solver/optimisation/opt_gestion_des_couts_cas_quadratique.cpp +++ b/src/solver/optimisation/opt_gestion_des_couts_cas_quadratique.cpp @@ -37,9 +37,7 @@ void OPT_InitialiserLesCoutsQuadratiques(PROBLEME_HEBDO* problemeHebdo, int PdtH { PROBLEME_ANTARES_A_RESOUDRE* ProblemeAResoudre = problemeHebdo->ProblemeAResoudre; - memset((char*)ProblemeAResoudre->CoutLineaire, - 0, - ProblemeAResoudre->NombreDeVariables * sizeof(double)); + ProblemeAResoudre->CoutLineaire.assign(ProblemeAResoudre->NombreDeVariables, 0.); const VALEURS_DE_NTC_ET_RESISTANCES& ValeursDeResistances = problemeHebdo->ValeursDeNTC[PdtHebdo]; diff --git a/src/solver/optimisation/opt_gestion_des_couts_couts_demarrage.cpp b/src/solver/optimisation/opt_gestion_des_couts_couts_demarrage.cpp index 9d27d82230..b05ec37756 100644 --- a/src/solver/optimisation/opt_gestion_des_couts_couts_demarrage.cpp +++ b/src/solver/optimisation/opt_gestion_des_couts_couts_demarrage.cpp @@ -45,7 +45,7 @@ void OPT_InitialiserLesCoutsLineaireCoutsDeDemarrage(PROBLEME_HEBDO* problemeHeb const int DernierPdtDeLIntervalle) { PROBLEME_ANTARES_A_RESOUDRE* ProblemeAResoudre = problemeHebdo->ProblemeAResoudre; - double* CoutLineaire = ProblemeAResoudre->CoutLineaire; + std::vector& CoutLineaire = ProblemeAResoudre->CoutLineaire; for (int pdtHebdo = PremierPdtDeLIntervalle, pdtJour = 0; pdtHebdo < DernierPdtDeLIntervalle; pdtHebdo++, pdtJour++) diff --git a/src/solver/optimisation/opt_gestion_second_membre_cas_lineaire.cpp b/src/solver/optimisation/opt_gestion_second_membre_cas_lineaire.cpp index 650041c542..12f86a04d9 100644 --- a/src/solver/optimisation/opt_gestion_second_membre_cas_lineaire.cpp +++ b/src/solver/optimisation/opt_gestion_second_membre_cas_lineaire.cpp @@ -46,7 +46,7 @@ using namespace Yuni; static void shortTermStorageLevelsRHS( const std::vector<::ShortTermStorage::AREA_INPUT>& shortTermStorageInput, int numberOfAreas, - double* SecondMembre, + std::vector& SecondMembre, const CORRESPONDANCES_DES_CONTRAINTES& CorrespondanceCntNativesCntOptim, int hourInTheYear) { @@ -72,7 +72,7 @@ void OPT_InitialiserLeSecondMembreDuProblemeLineaire(PROBLEME_HEBDO* problemeHeb PROBLEME_ANTARES_A_RESOUDRE* ProblemeAResoudre = problemeHebdo->ProblemeAResoudre; - double* SecondMembre = ProblemeAResoudre->SecondMembre; + std::vector& SecondMembre = ProblemeAResoudre->SecondMembre; double** AdresseOuPlacerLaValeurDesCoutsMarginaux = ProblemeAResoudre->AdresseOuPlacerLaValeurDesCoutsMarginaux; diff --git a/src/solver/optimisation/opt_gestion_second_membre_couts_demarrage.cpp b/src/solver/optimisation/opt_gestion_second_membre_couts_demarrage.cpp index 7dbc5efb5e..34211bb07c 100644 --- a/src/solver/optimisation/opt_gestion_second_membre_couts_demarrage.cpp +++ b/src/solver/optimisation/opt_gestion_second_membre_couts_demarrage.cpp @@ -48,7 +48,7 @@ void OPT_InitialiserLeSecondMembreDuProblemeLineaireCoutsDeDemarrage(PROBLEME_HE int DernierPdtDeLIntervalle) { PROBLEME_ANTARES_A_RESOUDRE* ProblemeAResoudre = problemeHebdo->ProblemeAResoudre; - double* SecondMembre = ProblemeAResoudre->SecondMembre; + std::vector& SecondMembre = ProblemeAResoudre->SecondMembre; double** AdresseOuPlacerLaValeurDesCoutsMarginaux = ProblemeAResoudre->AdresseOuPlacerLaValeurDesCoutsMarginaux; diff --git a/src/solver/optimisation/opt_structure_probleme_a_resoudre.h b/src/solver/optimisation/opt_structure_probleme_a_resoudre.h index 15a65c964d..abf3a2101d 100644 --- a/src/solver/optimisation/opt_structure_probleme_a_resoudre.h +++ b/src/solver/optimisation/opt_structure_probleme_a_resoudre.h @@ -53,15 +53,15 @@ typedef struct std::string Sens; std::vector IndicesDebutDeLigne; std::vector NombreDeTermesDesLignes; - double* CoefficientsDeLaMatriceDesContraintes; - int* IndicesColonnes; + std::vector CoefficientsDeLaMatriceDesContraintes; + std::vector IndicesColonnes; int NombreDeTermesAllouesDansLaMatriceDesContraintes; int IncrementDAllocationMatriceDesContraintes; int NombreDeTermesDansLaMatriceDesContraintes; /* Donnees variables de la matrice des contraintes */ - double* CoutQuadratique; - double* CoutLineaire; - int* TypeDeVariable; /* Indicateur du type de variable, il ne doit prendre que les suivantes + std::vector CoutQuadratique; + std::vector CoutLineaire; + std::vector TypeDeVariable; /* Indicateur du type de variable, il ne doit prendre que les suivantes (voir le fichier spx_constantes_externes.h mais ne jamais utiliser les valeurs explicites des constantes): VARIABLE_FIXE , VARIABLE_BORNEE_DES_DEUX_COTES , @@ -69,9 +69,9 @@ typedef struct VARIABLE_BORNEE_SUPERIEUREMENT , VARIABLE_NON_BORNEE */ - double* Xmin; - double* Xmax; - double* SecondMembre; + std::vector Xmin; + std::vector Xmax; + std::vector SecondMembre; /* Tableau de pointeur a des doubles. Ce tableau est parallele a X, il permet de renseigner directement les structures de description du reseau avec les resultats contenus dans X */ @@ -82,7 +82,7 @@ typedef struct il permet de renseigner directement les structures de description du reseau avec les resultats sur les couts marginaux */ double** AdresseOuPlacerLaValeurDesCoutsMarginaux; - double* CoutsMarginauxDesContraintes; + std::vector CoutsMarginauxDesContraintes; /* Tableau de pointeur a des doubles. Ce tableau est parallele a CoutsMarginauxDesContraintes, il permet de renseigner directement les structures de description du reseau avec les resultats sur les couts reduits */