From 8370febed8c04cd857d567d76bcb47769f5aadf6 Mon Sep 17 00:00:00 2001 From: Guillaume PIERRE Date: Fri, 7 Mar 2025 18:04:22 +0100 Subject: [PATCH] Solver options when MILP : forbid to use options for optim 1 or 2 with a MILP solver --- src/libs/antares/checks/checksOnLPsolver.cpp | 7 +++++++ src/libs/antares/exception/LoadingError.cpp | 6 ++++++ .../exception/include/antares/exception/LoadingError.hpp | 6 ++++++ 3 files changed, 19 insertions(+) diff --git a/src/libs/antares/checks/checksOnLPsolver.cpp b/src/libs/antares/checks/checksOnLPsolver.cpp index 84c47d1233..71ba9a2325 100644 --- a/src/libs/antares/checks/checksOnLPsolver.cpp +++ b/src/libs/antares/checks/checksOnLPsolver.cpp @@ -32,6 +32,13 @@ void checkSolverMILPoptionsConsistency(const OptimizationOptions& solverOptions) { throw Error::IncompatibleMILPOrtoolsSolver(); } + + bool UserSuppliedParamsOptim1 = !solverOptions.lpSolverParamOptim1.empty(); + bool UserSuppliedParamsOptim2 = !solverOptions.lpSolverParamOptim2.empty(); + if(UserSuppliedParamsOptim1 || UserSuppliedParamsOptim2) + { + throw Error::UseMILPsolverWithWrongOptions(); + } } void checkForSolverOptionsConsistency(const OptimizationOptions& solverOptions) diff --git a/src/libs/antares/exception/LoadingError.cpp b/src/libs/antares/exception/LoadingError.cpp index 18cbdfc87a..622b1a453c 100644 --- a/src/libs/antares/exception/LoadingError.cpp +++ b/src/libs/antares/exception/LoadingError.cpp @@ -132,6 +132,12 @@ IncompatibleMILPOrtoolsSolver::IncompatibleMILPOrtoolsSolver(): { } +UseMILPsolverWithWrongOptions::UseMILPsolverWithWrongOptions(): + LoadingError("'milp' solver cannot be used with options for optimization 1 or 2") +{ +} + + IncompatibleOptRangeHydroPricing::IncompatibleOptRangeHydroPricing(): LoadingError("Simplex optimization range and hydro pricing mode : values are not compatible ") { diff --git a/src/libs/antares/exception/include/antares/exception/LoadingError.hpp b/src/libs/antares/exception/include/antares/exception/LoadingError.hpp index e78d998db0..f0b3398028 100644 --- a/src/libs/antares/exception/include/antares/exception/LoadingError.hpp +++ b/src/libs/antares/exception/include/antares/exception/LoadingError.hpp @@ -100,6 +100,12 @@ class IncompatibleMILPOrtoolsSolver: public LoadingError IncompatibleMILPOrtoolsSolver(); }; +class UseMILPsolverWithWrongOptions: public LoadingError +{ +public: + UseMILPsolverWithWrongOptions(); +}; + class IncompatibleOptRangeHydroPricing: public LoadingError { public: