From 27fc92e4a00b69640c7a6668f7fbf7154f595614 Mon Sep 17 00:00:00 2001 From: Guillaume PIERRE Date: Fri, 4 Oct 2024 17:21:05 +0200 Subject: [PATCH] Trial to simplify solver call : solver ptr a bit more clear --- .../optimisation/opt_appel_solveur_lineaire.cpp | 17 +++++++---------- .../opt_liberation_problemes_simplexe.cpp | 1 - .../antares/solver/utils/ortools_wrapper.h | 5 ++--- src/solver/utils/ortools_utils.cpp | 17 +++++------------ 4 files changed, 14 insertions(+), 26 deletions(-) diff --git a/src/solver/optimisation/opt_appel_solveur_lineaire.cpp b/src/solver/optimisation/opt_appel_solveur_lineaire.cpp index c5f45015ec..2b82e81448 100644 --- a/src/solver/optimisation/opt_appel_solveur_lineaire.cpp +++ b/src/solver/optimisation/opt_appel_solveur_lineaire.cpp @@ -91,10 +91,6 @@ static SimplexResult OPT_TryToCallSimplex(const OptimizationOptions& options, assert(opt >= 0 && opt < 2); OptimizationStatistics& optimizationStatistics = problemeHebdo->optimizationStatistics[opt]; TIME_MEASURE timeMeasure; - if (!PremierPassage) - { - solver = nullptr; - } if (solver == nullptr) { @@ -105,14 +101,11 @@ static SimplexResult OPT_TryToCallSimplex(const OptimizationOptions& options, { if (problemeHebdo->ReinitOptimisation) { - if (solver != nullptr) - { - ORTOOLS_LibererProbleme(solver); - } + + ORTOOLS_LibererProbleme(solver); ProblemeAResoudre->ProblemesSpx[NumIntervalle] = nullptr; - solver = nullptr; Probleme.Contexte = SIMPLEXE_SEUL; Probleme.BaseDeDepartFournie = NON_SPX; } @@ -184,7 +177,11 @@ static SimplexResult OPT_TryToCallSimplex(const OptimizationOptions& options, Probleme.NombreDeContraintesCoupes = 0; - solver = ORTOOLS_ConvertIfNeeded(options.ortoolsSolver, &Probleme, solver); + if (solver == nullptr) + { + solver = ORTOOLS_Convert(options.ortoolsSolver, &Probleme); + } + const std::string filename = createMPSfilename(optPeriodStringGenerator, optimizationNumber); mpsWriterFactory mps_writer_factory(problemeHebdo->ExportMPS, diff --git a/src/solver/optimisation/opt_liberation_problemes_simplexe.cpp b/src/solver/optimisation/opt_liberation_problemes_simplexe.cpp index 9278d0f2a0..4a58919ea7 100644 --- a/src/solver/optimisation/opt_liberation_problemes_simplexe.cpp +++ b/src/solver/optimisation/opt_liberation_problemes_simplexe.cpp @@ -57,7 +57,6 @@ void OPT_LiberationProblemesSimplexe(const OptimizationOptions& options, if (solver != NULL) { ORTOOLS_LibererProbleme(solver); - solver = nullptr; } } } diff --git a/src/solver/utils/include/antares/solver/utils/ortools_wrapper.h b/src/solver/utils/include/antares/solver/utils/ortools_wrapper.h index 4f688dda4a..b7cc799db6 100644 --- a/src/solver/utils/include/antares/solver/utils/ortools_wrapper.h +++ b/src/solver/utils/include/antares/solver/utils/ortools_wrapper.h @@ -34,9 +34,8 @@ MPSolver* ORTOOLS_Simplexe(Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* Probl bool keepBasis, const Antares::Solver::Optimization::OptimizationOptions& options); -MPSolver* ORTOOLS_ConvertIfNeeded(const std::string& solverName, - const Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* Probleme, - MPSolver* solver); +MPSolver* ORTOOLS_Convert(const std::string& solverName, + const Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* Probleme); void ORTOOLS_ModifierLeVecteurCouts(MPSolver* ProbSpx, const double* costs, int nbVar); void ORTOOLS_ModifierLeVecteurSecondMembre(MPSolver* ProbSpx, diff --git a/src/solver/utils/ortools_utils.cpp b/src/solver/utils/ortools_utils.cpp index 2cc81b80fa..2c7b9ac39e 100644 --- a/src/solver/utils/ortools_utils.cpp +++ b/src/solver/utils/ortools_utils.cpp @@ -329,19 +329,11 @@ bool solveAndManageStatus(MPSolver* solver, int& resultStatus, const MPSolverPar return resultStatus == OUI_SPX; } -MPSolver* ORTOOLS_ConvertIfNeeded(const std::string& solverName, - const Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* Probleme, - MPSolver* solver) +MPSolver* ORTOOLS_Convert(const std::string& solverName, + const Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* Probleme) { - if (solver == nullptr) - { - Antares::Optimization::ProblemSimplexeNommeConverter converter(solverName, Probleme); - return converter.Convert(); - } - else - { - return solver; - } + Antares::Optimization::ProblemSimplexeNommeConverter converter(solverName, Probleme); + return converter.Convert(); } MPSolver* ORTOOLS_Simplexe(Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* Probleme, @@ -435,6 +427,7 @@ void ORTOOLS_CorrigerLesBornes(MPSolver* solver, void ORTOOLS_LibererProbleme(MPSolver* solver) { delete solver; + solver = nullptr; } const std::map OrtoolsUtils::solverMap = {