Skip to content

Commit

Permalink
Trial to simplify solver call : solver ptr a bit more clear
Browse files Browse the repository at this point in the history
  • Loading branch information
guilpier-code committed Oct 4, 2024
1 parent 8b5f1cc commit 27fc92e
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 26 deletions.
17 changes: 7 additions & 10 deletions src/solver/optimisation/opt_appel_solveur_lineaire.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand All @@ -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;
}
Expand Down Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ void OPT_LiberationProblemesSimplexe(const OptimizationOptions& options,
if (solver != NULL)
{
ORTOOLS_LibererProbleme(solver);
solver = nullptr;
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
17 changes: 5 additions & 12 deletions src/solver/utils/ortools_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -435,6 +427,7 @@ void ORTOOLS_CorrigerLesBornes(MPSolver* solver,
void ORTOOLS_LibererProbleme(MPSolver* solver)
{
delete solver;
solver = nullptr;
}

const std::map<std::string, struct OrtoolsUtils::SolverNames> OrtoolsUtils::solverMap = {
Expand Down

0 comments on commit 27fc92e

Please sign in to comment.