From ef29f1d34aafcc6edc0a2ff489345c88178ffd15 Mon Sep 17 00:00:00 2001 From: Guillaume PIERRE Date: Fri, 11 Oct 2024 14:47:50 +0200 Subject: [PATCH] Legacy ortools behind API : correction due to review --- src/solver/modeler/api/CMakeLists.txt | 2 - src/solver/optimisation/CMakeLists.txt | 2 + .../LegacyOrtoolsFiller.cpp} | 37 +++---------------- .../solver/optimisation/LegacyOrtoolsFiller.h | 32 ++++++++++++++++ .../opt_appel_solveur_lineaire.cpp | 2 +- 5 files changed, 41 insertions(+), 34 deletions(-) rename src/solver/{modeler/api/include/antares/solver/modeler/api/fillers/LegacyOrtoolsFiller.h => optimisation/LegacyOrtoolsFiller.cpp} (71%) create mode 100644 src/solver/optimisation/include/antares/solver/optimisation/LegacyOrtoolsFiller.h diff --git a/src/solver/modeler/api/CMakeLists.txt b/src/solver/modeler/api/CMakeLists.txt index c15ae518b8..41789ae9cb 100644 --- a/src/solver/modeler/api/CMakeLists.txt +++ b/src/solver/modeler/api/CMakeLists.txt @@ -13,8 +13,6 @@ set(SRC_API include/antares/solver/modeler/api/linearProblemFiller.h include/antares/solver/modeler/api/linearProblemBuilder.h - include/antares/solver/modeler/api/fillers/LegacyOrtoolsFiller.h - linearProblemData.cpp linearProblemBuilder.cpp ) diff --git a/src/solver/optimisation/CMakeLists.txt b/src/solver/optimisation/CMakeLists.txt index 7f5a94b4cd..06fc0b8e16 100644 --- a/src/solver/optimisation/CMakeLists.txt +++ b/src/solver/optimisation/CMakeLists.txt @@ -170,6 +170,8 @@ set(RTESOLVER_OPT variables/VariableManagerUtils.cpp include/antares/solver/optimisation/HebdoProblemToLpsTranslator.h HebdoProblemToLpsTranslator.cpp + include/antares/solver/optimisation/LegacyOrtoolsFiller.h + LegacyOrtoolsFiller.cpp ) diff --git a/src/solver/modeler/api/include/antares/solver/modeler/api/fillers/LegacyOrtoolsFiller.h b/src/solver/optimisation/LegacyOrtoolsFiller.cpp similarity index 71% rename from src/solver/modeler/api/include/antares/solver/modeler/api/fillers/LegacyOrtoolsFiller.h rename to src/solver/optimisation/LegacyOrtoolsFiller.cpp index 384b4ef33c..9b14e98b2d 100644 --- a/src/solver/modeler/api/include/antares/solver/modeler/api/fillers/LegacyOrtoolsFiller.h +++ b/src/solver/optimisation/LegacyOrtoolsFiller.cpp @@ -1,34 +1,8 @@ -#pragma once +#include "antares/solver/optimisation/LegacyOrtoolsFiller.h" -#include "antares/solver/modeler/api/linearProblemFiller.h" -#include "ortools/linear_solver/linear_solver.h" -#include "antares/solver/utils/named_problem.h" -#include "antares/solver/utils/ortools_utils.h" -using namespace Antares::Optimization; - -namespace Antares::Solver::Modeler::Api -{ -class LegacyOrtoolsFiller: public LinearProblemFiller +namespace Antares::Optimization { -public: - explicit LegacyOrtoolsFiller(const Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* problemeSimplexe); - void addVariables(ILinearProblem& pb, LinearProblemData& data) override; - void addConstraints(ILinearProblem& pb, LinearProblemData& data) override; - void addObjective(ILinearProblem& pb, LinearProblemData& data) override; - -private: - operations_research::MPSolver* mpSolver_ = nullptr; - const Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* problemeSimplexe_; - Nomenclature variableNameManager_ = Nomenclature('x'); - Nomenclature constraintNameManager_ = Nomenclature('c'); - - void CreateVariable(unsigned idxVar, MPSolver* solver, MPObjective* const objective) const; - void CopyVariables(MPSolver* solver) const; - void UpdateContraints(unsigned idxRow, MPSolver* solver) const; - void CopyRows(MPSolver* solver) const; - void CopyMatrix(const MPSolver* solver) const; -}; LegacyOrtoolsFiller::LegacyOrtoolsFiller(const Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* problemeSimplexe) : problemeSimplexe_(problemeSimplexe) @@ -50,7 +24,7 @@ void LegacyOrtoolsFiller::addVariables(ILinearProblem& pb, LinearProblemData& da } else { - logs.error() << "Invalid cast, ortools MPSolver expected.";; + logs.error() << "Invalid cast, ortools MPSolver expected."; throw std::bad_cast(); } } @@ -95,8 +69,8 @@ void LegacyOrtoolsFiller::CopyMatrix(const MPSolver* solver) const } void LegacyOrtoolsFiller::CreateVariable(unsigned idxVar, - MPSolver* solver, - MPObjective* const objective) const + MPSolver* solver, + MPObjective* const objective) const { double min_l = problemeSimplexe_->Xmin[idxVar]; double max_l = problemeSimplexe_->Xmax[idxVar]; @@ -145,3 +119,4 @@ void LegacyOrtoolsFiller::CopyRows(MPSolver* solver) const } } } + diff --git a/src/solver/optimisation/include/antares/solver/optimisation/LegacyOrtoolsFiller.h b/src/solver/optimisation/include/antares/solver/optimisation/LegacyOrtoolsFiller.h new file mode 100644 index 0000000000..cae771aefa --- /dev/null +++ b/src/solver/optimisation/include/antares/solver/optimisation/LegacyOrtoolsFiller.h @@ -0,0 +1,32 @@ +#pragma once + +#include "antares/solver/modeler/api/linearProblemFiller.h" +#include "ortools/linear_solver/linear_solver.h" +#include "antares/solver/utils/named_problem.h" +#include "antares/solver/utils/ortools_utils.h" + +using namespace Antares::Solver::Modeler::Api; + +namespace Antares::Optimization +{ +class LegacyOrtoolsFiller: public LinearProblemFiller +{ +public: + explicit LegacyOrtoolsFiller(const Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* problemeSimplexe); + void addVariables(ILinearProblem& pb, LinearProblemData& data) override; + void addConstraints(ILinearProblem& pb, LinearProblemData& data) override; + void addObjective(ILinearProblem& pb, LinearProblemData& data) override; + +private: + operations_research::MPSolver* mpSolver_ = nullptr; + const Antares::Optimization::PROBLEME_SIMPLEXE_NOMME* problemeSimplexe_; + Nomenclature variableNameManager_ = Nomenclature('x'); + Nomenclature constraintNameManager_ = Nomenclature('c'); + + void CreateVariable(unsigned idxVar, MPSolver* solver, MPObjective* const objective) const; + void CopyVariables(MPSolver* solver) const; + void UpdateContraints(unsigned idxRow, MPSolver* solver) const; + void CopyRows(MPSolver* solver) const; + void CopyMatrix(const MPSolver* solver) const; +}; +} diff --git a/src/solver/optimisation/opt_appel_solveur_lineaire.cpp b/src/solver/optimisation/opt_appel_solveur_lineaire.cpp index d258614236..7d2e4d8fda 100644 --- a/src/solver/optimisation/opt_appel_solveur_lineaire.cpp +++ b/src/solver/optimisation/opt_appel_solveur_lineaire.cpp @@ -27,7 +27,7 @@ #include #include "antares/optimization-options/options.h" #include "antares/solver/infeasible-problem-analysis/unfeasible-pb-analyzer.h" -#include "antares/solver/modeler/api/fillers/LegacyOrtoolsFiller.h" +#include "antares/solver/optimisation/LegacyOrtoolsFiller.h" #include "antares/solver/modeler/api/linearProblemBuilder.h" #include "antares/solver/modeler/ortoolsImpl/linearProblem.h" #include "antares/solver/optimisation/opt_structure_probleme_a_resoudre.h"