diff --git a/src/solver/optimisation/opt_optimisation_lineaire.cpp b/src/solver/optimisation/opt_optimisation_lineaire.cpp index 2368476b3a..ff503538b1 100644 --- a/src/solver/optimisation/opt_optimisation_lineaire.cpp +++ b/src/solver/optimisation/opt_optimisation_lineaire.cpp @@ -194,8 +194,178 @@ void OPT_ExportRawOptimizationResults(PROBLEME_HEBDO* problemeHebdo, const std::string fileName = std::string("RawResultsWeek") + std::to_string(problemeHebdo->weekInTheYear) + "_" + filename + ".txt"; std::string content; std::string baseContent; + content += "year:\t" + problemeHebdo->year; + content += "weekInTheYear:\t" + problemeHebdo->weekInTheYear; + content += "OptimisationAuPasHebdomadaire:\t" + problemeHebdo->OptimisationAuPasHebdomadaire; + content += "TypeDeLissageHydraulique:\t" + problemeHebdo->TypeDeLissageHydraulique; + content += "WaterValueAccurate:\t" + problemeHebdo->WaterValueAccurate; + content += "OptimisationAvecCoutsDeDemarrage:\t" + problemeHebdo->OptimisationAvecCoutsDeDemarrage; + content += "OptimisationAvecVariablesEntieres:\t" + problemeHebdo->OptimisationAvecVariablesEntieres; + content += "NombreDePays:\t" + problemeHebdo->NombreDePays; + content += "NombreDePaliersThermiques:\t" + problemeHebdo->NombreDePaliersThermiques; + content += "NombreDInterconnexions:\t" + problemeHebdo->NombreDInterconnexions; + content += "NombreDePasDeTemps:\t" + problemeHebdo->NombreDePasDeTemps; + content += "NombreDePasDeTempsPourUneOptimisation:\t" + problemeHebdo->NombreDePasDeTempsPourUneOptimisation; + content += "NombreDeJours:\t" + problemeHebdo->NombreDeJours; + content += "NombreDePasDeTempsDUneJournee:\t" + problemeHebdo->NombreDePasDeTempsDUneJournee; + content += "NumberOfShortTermStorages:\t" + problemeHebdo->NumberOfShortTermStorages; + content += "NbTermesContraintesPourLesCoutsDeDemarrage:\t" + problemeHebdo->NbTermesContraintesPourLesCoutsDeDemarrage; + content += "TypeDOptimisation:\t" + problemeHebdo->TypeDOptimisation; + content += "NombreDeContraintesCouplantes:\t" + problemeHebdo->NombreDeContraintesCouplantes; + content += "ReinitOptimisation:\t" + problemeHebdo->ReinitOptimisation; + content += "exportMPSOnError:\t" + problemeHebdo->exportMPSOnError; + content += "NamedProblems:\t" + problemeHebdo->NamedProblems; + content += "exportRawOptimizationResults:\t" + problemeHebdo->exportRawOptimizationResults; + content += "HeureDansLAnnee:\t" + problemeHebdo->HeureDansLAnnee; + content += "LeProblemeADejaEteInstancie:\t" + problemeHebdo->LeProblemeADejaEteInstancie; + content += "firstWeekOfSimulation:\t" + problemeHebdo->firstWeekOfSimulation; + content += "Expansion:\t" + problemeHebdo->Expansion; + content += "YaDeLaReserveJmoins1:\t" + problemeHebdo->YaDeLaReserveJmoins1; + //Interconnexion + for (uint indexInterco = 0; indexInterco < problemeHebdo->NombreDInterconnexions; indexInterco++) + { + content += "Interconnexion<" + std::to_string(indexInterco) + ">:PaysOrigineDeLInterconnexion:\t" + std::string(problemeHebdo->NomsDesPays[problemeHebdo->PaysOrigineDeLInterconnexion[indexInterco]]); + content += "Interconnexion<" + std::to_string(indexInterco) + ">:PaysExtremiteDeLInterconnexion:\t" + std::string(problemeHebdo->NomsDesPays[problemeHebdo->PaysExtremiteDeLInterconnexion[indexInterco]]); + baseContent = "Interconnexion<" + std::to_string(indexInterco) + ">:CoutDeTransport:"; + auto coutDeTransport = problemeHebdo->CoutDeTransport[indexInterco]; + content += baseContent + "IntercoGereeAvecDesCouts:\t" + std::to_string(coutDeTransport.IntercoGereeAvecDesCouts); + content += baseContent + "IntercoGereeAvecLoopFlow:\t" + std::to_string(coutDeTransport.IntercoGereeAvecLoopFlow); + for (uint32_t pdtHebdo = 0; pdtHebdo < NombreDePasDeTempsProblemeHebdo; pdtHebdo++) + { + content += baseContent + "CoutDeTransportOrigineVersExtremite<" + std::to_string(pdtHebdo) +">:\t" + std::to_string(coutDeTransport.CoutDeTransportOrigineVersExtremite[pdtHebdo]); + content += baseContent + "CoutDeTransportExtremiteVersOrigine<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(coutDeTransport.CoutDeTransportExtremiteVersOrigine[pdtHebdo]); + content += baseContent + "CoutDeTransportOrigineVersExtremiteRef<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(coutDeTransport.CoutDeTransportOrigineVersExtremiteRef[pdtHebdo]); + content += baseContent + "CoutDeTransportExtremiteVersOrigineRef<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(coutDeTransport.CoutDeTransportExtremiteVersOrigineRef[pdtHebdo]); + } + baseContent = "Interconnexion<" + std::to_string(indexInterco) + ">:ValeursDeNTC:"; + for (uint32_t pdtHebdo = 0; pdtHebdo < NombreDePasDeTempsProblemeHebdo; pdtHebdo++) + { + content += baseContent + "ValeurDeNTCOrigineVersExtremite<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(problemeHebdo->ValeursDeNTC[pdtHebdo].ValeurDeNTCOrigineVersExtremite[indexInterco]); + content += baseContent + "ValeurDeNTCExtremiteVersOrigine<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(problemeHebdo->ValeursDeNTC[pdtHebdo].ValeurDeNTCExtremiteVersOrigine[indexInterco]); + content += baseContent + "ValeurDeLoopFlowOrigineVersExtremite<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(problemeHebdo->ValeursDeNTC[pdtHebdo].ValeurDeLoopFlowOrigineVersExtremite[indexInterco]); + content += baseContent + "ResistanceApparente<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(problemeHebdo->ValeursDeNTC[pdtHebdo].ResistanceApparente[indexInterco]); + content += baseContent + "ValeurDuFlux<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(problemeHebdo->ValeursDeNTC[pdtHebdo].ValeurDuFlux[indexInterco]); + } + } + + for (uint32_t pays = 0; pays < problemeHebdo->NombreDePays; pays++) + { + std::string areaName = problemeHebdo->NomsDesPays[pays]; + content += "area<" + areaName + ">:CoutDeDefaillancePositive:\t" + std::to_string(problemeHebdo->CoutDeDefaillancePositive[pays]) + "\r\n"; + content += "area<" + areaName + ">:CoutDeDefaillanceNegative:\t" + std::to_string(problemeHebdo->CoutDeDefaillanceNegative[pays]) + "\r\n"; + content += "area<" + areaName + ">:DefaillanceNegativeUtiliserPMinThermique(bool):\t" + std::to_string(problemeHebdo->DefaillanceNegativeUtiliserPMinThermique[pays]) + "\r\n"; + content += "area<" + areaName + ">:DefaillanceNegativeUtiliserHydro(bool):\t" + std::to_string(problemeHebdo->DefaillanceNegativeUtiliserHydro[pays]) + "\r\n"; + content += "area<" + areaName + ">:DefaillanceNegativeUtiliserConsoAbattue(bool):\t" + std::to_string(problemeHebdo->DefaillanceNegativeUtiliserConsoAbattue[pays]) + "\r\n"; + for (int indexBruit = 0; indexBruit < problemeHebdo->BruitSurCoutHydraulique[pays].size(); indexBruit++) + { + content += "area<" + areaName + ">:BruitSurCoutHydraulique<" + std::to_string(indexBruit) +">:\t" + std::to_string(problemeHebdo->BruitSurCoutHydraulique[pays][indexBruit]) + "\r\n"; + } + //Paliers thermiques + PALIERS_THERMIQUES& PaliersThermiquesDuPays + = problemeHebdo->PaliersThermiquesDuPays[pays]; + baseContent= "PaliersThermiquesDuPays<" + areaName + ">:"; + content += baseContent + "NombreDePaliersThermiques:\t" + std::to_string(PaliersThermiquesDuPays.NombreDePaliersThermiques); + for (int indexThermique = 0; indexThermique < PaliersThermiquesDuPays.NombreDePaliersThermiques; indexThermique++) + { + std::string clusterName = PaliersThermiquesDuPays.NomsDesPaliersThermiques[indexThermique]; + content += baseContent + "minUpDownTime<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.minUpDownTime[indexThermique]) + "\r\n"; + content += baseContent + "TailleUnitaireDUnGroupeDuPalierThermique<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.TailleUnitaireDUnGroupeDuPalierThermique[indexThermique]) + "\r\n"; + content += baseContent + "PminDuPalierThermiquePendantUneHeure<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.PminDuPalierThermiquePendantUneHeure[indexThermique]) + "\r\n"; + content += baseContent + "PminDuPalierThermiquePendantUnJour<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.PminDuPalierThermiquePendantUnJour[indexThermique]) + "\r\n"; + content += baseContent + "NumeroDuPalierDansLEnsembleDesPaliersThermiques<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.NumeroDuPalierDansLEnsembleDesPaliersThermiques[indexThermique]) + "\r\n"; + for (uint32_t pdtHebdo = 0; pdtHebdo < NombreDePasDeTempsProblemeHebdo; pdtHebdo++) + { + content += baseContent + "PuissanceDisponibleEtCout<" + clusterName + ">:PuissanceDisponibleDuPalierThermique<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(PaliersThermiquesDuPays.PuissanceDisponibleEtCout[indexThermique].PuissanceDisponibleDuPalierThermique[pdtHebdo]) + "\r\n"; + content += baseContent + "PuissanceDisponibleEtCout<" + clusterName + ">:PuissanceDisponibleDuPalierThermiqueRef<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(PaliersThermiquesDuPays.PuissanceDisponibleEtCout[indexThermique].PuissanceDisponibleDuPalierThermiqueRef[pdtHebdo]) + "\r\n"; + content += baseContent + "PuissanceDisponibleEtCout<" + clusterName + ">:PuissanceMinDuPalierThermique<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(PaliersThermiquesDuPays.PuissanceDisponibleEtCout[indexThermique].PuissanceMinDuPalierThermique[pdtHebdo]) + "\r\n"; + content += baseContent + "PuissanceDisponibleEtCout<" + clusterName + ">:PuissanceMinDuPalierThermiqueRef<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(PaliersThermiquesDuPays.PuissanceDisponibleEtCout[indexThermique].PuissanceMinDuPalierThermiqueRef[pdtHebdo]) + "\r\n"; + content += baseContent + "PuissanceDisponibleEtCout<" + clusterName + ">:CoutHoraireDeProductionDuPalierThermique<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(PaliersThermiquesDuPays.PuissanceDisponibleEtCout[indexThermique].CoutHoraireDeProductionDuPalierThermique[pdtHebdo]) + "\r\n"; + content += baseContent + "PuissanceDisponibleEtCout<" + clusterName + ">:NombreMaxDeGroupesEnMarcheDuPalierThermique<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(PaliersThermiquesDuPays.PuissanceDisponibleEtCout[indexThermique].NombreMaxDeGroupesEnMarcheDuPalierThermique[pdtHebdo]) + "\r\n"; + content += baseContent + "PuissanceDisponibleEtCout<" + clusterName + ">:NombreMinDeGroupesEnMarcheDuPalierThermique<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(PaliersThermiquesDuPays.PuissanceDisponibleEtCout[indexThermique].NombreMinDeGroupesEnMarcheDuPalierThermique[pdtHebdo]) + "\r\n"; + + } + content += baseContent + "CoutDeDemarrageDUnGroupeDuPalierThermique<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.CoutDeDemarrageDUnGroupeDuPalierThermique[indexThermique]) + "\r\n"; + content += baseContent + "CoutDArretDUnGroupeDuPalierThermique<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.CoutDArretDUnGroupeDuPalierThermique[indexThermique]) + "\r\n"; + content += baseContent + "CoutFixeDeMarcheDUnGroupeDuPalierThermique<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.CoutFixeDeMarcheDUnGroupeDuPalierThermique[indexThermique]) + "\r\n"; + content += baseContent + "pminDUnGroupeDuPalierThermique<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.pminDUnGroupeDuPalierThermique[indexThermique]) + "\r\n"; + content += baseContent + "PmaxDUnGroupeDuPalierThermique<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.PmaxDUnGroupeDuPalierThermique[indexThermique]) + "\r\n"; + content += baseContent + "PmaxDUnGroupeDuPalierThermique<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.PmaxDUnGroupeDuPalierThermique[indexThermique]) + "\r\n"; + content += baseContent + "DureeMinimaleDeMarcheDUnGroupeDuPalierThermique<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.DureeMinimaleDeMarcheDUnGroupeDuPalierThermique[indexThermique]) + "\r\n"; + content += baseContent + "DureeMinimaleDArretDUnGroupeDuPalierThermique<" + clusterName + ">:\t" + std::to_string(PaliersThermiquesDuPays.DureeMinimaleDArretDUnGroupeDuPalierThermique[indexThermique]) + "\r\n"; + content += baseContent + "NomsDesPaliersThermiques<" + clusterName + ">:\t" + PaliersThermiquesDuPays.NomsDesPaliersThermiques[indexThermique] + "\r\n"; + } + //Hydro + auto& CaracteristiquesHydrauliques + = problemeHebdo->CaracteristiquesHydrauliques[pays]; + baseContent = "CaracteristiquesHydrauliques<" + areaName + ">:"; + for (int intervalle = 0; intervalle < CaracteristiquesHydrauliques.MinEnergieHydrauParIntervalleOptimise.size() ; intervalle++ ) + { + content += baseContent + "MinEnergieHydrauParIntervalleOptimise:intervalle<" + std::to_string(intervalle) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.MinEnergieHydrauParIntervalleOptimise[intervalle]) + "\r\n"; + content += baseContent + "MaxEnergieHydrauParIntervalleOptimise:intervalle<" + std::to_string(intervalle) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.MaxEnergieHydrauParIntervalleOptimise[intervalle]) + "\r\n"; + content += baseContent + "CntEnergieH2OParIntervalleOptimise:intervalle<" + std::to_string(intervalle) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.CntEnergieH2OParIntervalleOptimise[intervalle]) + "\r\n"; + content += baseContent + "CntEnergieH2OParJour:intervalle<" + std::to_string(intervalle) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.CntEnergieH2OParJour[intervalle]) + "\r\n"; + content += baseContent + "MaxEnergiePompageParIntervalleOptimise:intervalle<" + std::to_string(intervalle) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.MaxEnergiePompageParIntervalleOptimise[intervalle]) + "\r\n"; + } + for (uint32_t pdtHebdo = 0; pdtHebdo < NombreDePasDeTempsProblemeHebdo; pdtHebdo++) + { + content += baseContent + "ContrainteDePmaxHydrauliqueHoraire<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.ContrainteDePmaxHydrauliqueHoraire[pdtHebdo]) + "\r\n"; + content += baseContent + "ContrainteDePmaxHydrauliqueHoraireRef<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.ContrainteDePmaxHydrauliqueHoraireRef[pdtHebdo]) + "\r\n"; + content += baseContent + "ContrainteDePmaxPompageHoraire<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.ContrainteDePmaxPompageHoraire[pdtHebdo]) + "\r\n"; + content += baseContent + "NiveauHoraireSup<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.NiveauHoraireSup[pdtHebdo]) + "\r\n"; + content += baseContent + "NiveauHoraireInf<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.NiveauHoraireInf[pdtHebdo]) + "\r\n"; + content += baseContent + "ApportNaturelHoraire<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.ApportNaturelHoraire[pdtHebdo]) + "\r\n"; + content += baseContent + "MingenHoraire<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.MingenHoraire[pdtHebdo]) + "\r\n"; + } + content += baseContent + "MaxDesPmaxHydrauliques:\t" + std::to_string(CaracteristiquesHydrauliques.MaxDesPmaxHydrauliques) + "\r\n"; + content += baseContent + "PresenceDePompageModulable:\t" + std::to_string(CaracteristiquesHydrauliques.PresenceDePompageModulable) + "\r\n"; + content += baseContent + "PenalisationDeLaVariationDeProductionHydrauliqueSurSommeDesVariations:\t" + std::to_string(CaracteristiquesHydrauliques.PenalisationDeLaVariationDeProductionHydrauliqueSurSommeDesVariations) + "\r\n"; + content += baseContent + "PenalisationDeLaVariationDeProductionHydrauliqueSurVariationMax:\t" + std::to_string(CaracteristiquesHydrauliques.PenalisationDeLaVariationDeProductionHydrauliqueSurVariationMax) + "\r\n"; + content += baseContent + "WeeklyWaterValueStateRegular:\t" + std::to_string(CaracteristiquesHydrauliques.WeeklyWaterValueStateRegular) + "\r\n"; + content += baseContent + "TurbinageEntreBornes(bool):\t" + std::to_string(CaracteristiquesHydrauliques.TurbinageEntreBornes) + "\r\n"; + content += baseContent + "SansHeuristique(bool):\t" + std::to_string(CaracteristiquesHydrauliques.SansHeuristique) + "\r\n"; + content += baseContent + "SuiviNiveauHoraire(bool):\t" + std::to_string(CaracteristiquesHydrauliques.SuiviNiveauHoraire) + "\r\n"; + content += baseContent + "NiveauInitialReservoir:\t" + std::to_string(CaracteristiquesHydrauliques.NiveauInitialReservoir) + "\r\n"; + content += baseContent + "TailleReservoir:\t" + std::to_string(CaracteristiquesHydrauliques.TailleReservoir) + "\r\n"; + content += baseContent + "PumpingRatio:\t" + std::to_string(CaracteristiquesHydrauliques.PumpingRatio) + "\r\n"; + content += baseContent + "WeeklyGeneratingModulation:\t" + std::to_string(CaracteristiquesHydrauliques.WeeklyGeneratingModulation) + "\r\n"; + content += baseContent + "WeeklyPumpingModulation:\t" + std::to_string(CaracteristiquesHydrauliques.WeeklyPumpingModulation) + "\r\n"; + content += baseContent + "DirectLevelAccess(bool):\t" + std::to_string(CaracteristiquesHydrauliques.DirectLevelAccess) + "\r\n"; + content += baseContent + "AccurateWaterValue(bool):\t" + std::to_string(CaracteristiquesHydrauliques.AccurateWaterValue) + "\r\n"; + content += baseContent + "LevelForTimeInterval:\t" + std::to_string(CaracteristiquesHydrauliques.LevelForTimeInterval) + "\r\n"; + for (int layerindex = 0; layerindex < 100; layerindex++) + { + content += baseContent + "WaterLayerValues:layer<" + std::to_string(layerindex) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.WaterLayerValues[layerindex]) + "\r\n"; + content += baseContent + "InflowForTimeInterval:layer<" + std::to_string(layerindex) + ">:\t" + std::to_string(CaracteristiquesHydrauliques.InflowForTimeInterval[layerindex]) + "\r\n"; + } + + //STS + baseContent = "ShortTermStorage<" + areaName + ">:"; + //problemeHebdo->ShortTermStorage[pays] + auto& ShortTermStorage + = problemeHebdo->ShortTermStorage[pays]; + for (int STSindex = 0; STSindex < ShortTermStorage.size(); STSindex++) + { + std::string stsName = ShortTermStorage[STSindex].name; + content += baseContent + "reservoirCapacity:<" + stsName + ">:\t" + std::to_string(ShortTermStorage[STSindex].reservoirCapacity) + "\r\n"; + content += baseContent + "injectionNominalCapacity:<" + stsName + ">:\t" + std::to_string(ShortTermStorage[STSindex].injectionNominalCapacity) + "\r\n"; + content += baseContent + "withdrawalNominalCapacity:<" + stsName + ">:\t" + std::to_string(ShortTermStorage[STSindex].withdrawalNominalCapacity) + "\r\n"; + content += baseContent + "injectionEfficiency:<" + stsName + ">:\t" + std::to_string(ShortTermStorage[STSindex].injectionEfficiency) + "\r\n"; + content += baseContent + "withdrawalEfficiency:<" + stsName + ">:\t" + std::to_string(ShortTermStorage[STSindex].withdrawalEfficiency) + "\r\n"; + content += baseContent + "initialLevel:<" + stsName + ">:\t" + std::to_string(ShortTermStorage[STSindex].initialLevel) + "\r\n"; + content += baseContent + "initialLevelOptim(bool):<" + stsName + ">:\t" + std::to_string(ShortTermStorage[STSindex].initialLevelOptim) + "\r\n"; + content += baseContent + "clusterGlobalIndex:<" + stsName + ">:\t" + std::to_string(ShortTermStorage[STSindex].clusterGlobalIndex) + "\r\n"; + } + for (uint32_t pdtHebdo = 0; pdtHebdo < NombreDePasDeTempsProblemeHebdo; pdtHebdo++) + { + content += "SoldeMoyenHoraire:<" + areaName + ">:SoldeMoyenDuPays<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(problemeHebdo->SoldeMoyenHoraire[pdtHebdo].SoldeMoyenDuPays[pays]) + "\r\n"; + } + } + for (uint32_t pdtHebdo = 0; pdtHebdo < NombreDePasDeTempsProblemeHebdo; pdtHebdo++) { + content += "NumeroDeJourDuPasDeTemps<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(problemeHebdo->NumeroDeJourDuPasDeTemps[pdtHebdo]) + "\r\n"; + content += "NumeroDIntervalleOptimiseDuPasDeTemps<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(problemeHebdo->NumeroDIntervalleOptimiseDuPasDeTemps[pdtHebdo]) + "\r\n"; + for (uint32_t pays = 0; pays < problemeHebdo->NombreDePays; pays++) { std::string areaName = problemeHebdo->NomsDesPays[pays]; @@ -203,12 +373,14 @@ void OPT_ExportRawOptimizationResults(PROBLEME_HEBDO* problemeHebdo, std::vector& ProductionThermique = ResultatsHoraires.ProductionThermique; PALIERS_THERMIQUES& PaliersThermiquesDuPays = problemeHebdo->PaliersThermiquesDuPays[pays]; - + + content += "area<" + areaName + ">:ConsommationsAbattues:ConsommationAbattueDuPays<" + std::to_string(pdtHebdo) + ">:\t" + std::to_string(problemeHebdo->ConsommationsAbattues[pdtHebdo].ConsommationAbattueDuPays[pays]) + "\r\n"; + for (int index = 0; index < PaliersThermiquesDuPays.NombreDePaliersThermiques; index++) { std::string clusterName = PaliersThermiquesDuPays.NomsDesPaliersThermiques[index]; - baseContent = "ResultatsHoraires:ProductionThermique:" + areaName + ":" + clusterName + ":"; + baseContent = "ResultatsHoraires:ProductionThermique:area<" + areaName + ">:ThermalCluster<" + clusterName + ">:"; content += baseContent + "NombreDeGroupesEnMarcheDuPalier<" + std::to_string(pdtHebdo) + ">" + "\t" + std::to_string(ProductionThermique[pdtHebdo].NombreDeGroupesEnMarcheDuPalier[index]) + "\r\n"; content += baseContent + "NombreDeGroupesQuiDemarrentDuPalier<" + std::to_string(pdtHebdo) + ">" + "\t" + std::to_string(ProductionThermique[pdtHebdo].NombreDeGroupesQuiDemarrentDuPalier[index]) + "\r\n"; content += baseContent + "NombreDeGroupesQuiSArretentDuPalier<" + std::to_string(pdtHebdo) + ">" + "\t" + std::to_string(ProductionThermique[pdtHebdo].NombreDeGroupesQuiSArretentDuPalier[index]) + "\r\n";