Skip to content

Commit

Permalink
Legacy ortools behind API : correction due to review
Browse files Browse the repository at this point in the history
  • Loading branch information
guilpier-code committed Oct 11, 2024
1 parent b4ef65f commit ef29f1d
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 34 deletions.
2 changes: 0 additions & 2 deletions src/solver/modeler/api/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
Expand Down
2 changes: 2 additions & 0 deletions src/solver/optimisation/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
)


Expand Down
Original file line number Diff line number Diff line change
@@ -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)
Expand All @@ -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();
}
}
Expand Down Expand Up @@ -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];
Expand Down Expand Up @@ -145,3 +119,4 @@ void LegacyOrtoolsFiller::CopyRows(MPSolver* solver) const
}
}
}

Original file line number Diff line number Diff line change
@@ -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;
};
}
2 changes: 1 addition & 1 deletion src/solver/optimisation/opt_appel_solveur_lineaire.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#include <antares/logs/logs.h>
#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"
Expand Down

0 comments on commit ef29f1d

Please sign in to comment.