24 #include <antares/expressions/nodes/ExpressionsNodes.h>
25 #include <antares/expressions/visitors/EvalVisitor.h>
26 #include "antares/optimisation/linear-problem-data-impl/linearProblemData.h"
28 #include "mockModelerObjects.h"
34 Antares::Optimisation::LinearProblemApi::MipBasisStatus status,
35 bool integer =
false):
42 double solutionValue()
const override
47 double reducedCost()
const override
52 Antares::Optimisation::LinearProblemApi::MipBasisStatus getMipBasisStatus()
const override
57 bool isInteger()
const override
63 void setLb(
double)
override
67 void setUb(
double)
override
71 double getLb()
const override
76 double getUb()
const override
81 void setBounds(
double lb,
double ub)
override
88 const std::string& getName()
const override
95 Antares::Optimisation::LinearProblemApi::MipBasisStatus status_;
97 std::string name_ =
"test_var";
103 MockMipConstraint(Antares::Optimisation::LinearProblemApi::MipBasisStatus status):
108 Antares::Optimisation::LinearProblemApi::MipBasisStatus getMipBasisStatus()
const override
118 double getCoefficient(
125 void setLb(
double)
override
129 void setUb(
double)
override
133 double getLb()
const override
138 double getUb()
const override
143 void setBounds(
double lb,
double ub)
override
149 double dual()
const override
155 const std::string& getName()
const override
161 Antares::Optimisation::LinearProblemApi::MipBasisStatus status_;
162 std::string name_ =
"test_constraint";
173 bool isLP()
const override
179 const std::string&)
const override
182 Antares::Optimisation::LinearProblemApi::MipBasisStatus::BASIC);
183 return &mockConstraint;
190 const std::string&)
override
192 variables_.push_back(RandomVariable());
193 return variables_.back().get();
199 constraints_.push_back(RandomConstraint());
200 return constraints_.back().get();
213 double infinity()
const override
215 return std::numeric_limits<double>::infinity();
222 variables_.push_back(RandomVariable());
223 return variables_.back().get();
230 variables_.push_back(RandomVariable());
231 return variables_.back().get();
234 static std::unique_ptr<Antares::Optimisation::LinearProblemApi::IMipVariable> RandomVariable()
236 std::unique_ptr<Antares::Optimisation::LinearProblemApi::IMipVariable>
237 mockMipVariable = std::make_unique<MockMipVariable>(
239 Antares::Optimisation::LinearProblemApi::MipBasisStatus::AT_LOWER_BOUND,
241 return mockMipVariable;
244 static std::unique_ptr<Antares::Optimisation::LinearProblemApi::IMipConstraint>
247 std::unique_ptr<Antares::Optimisation::LinearProblemApi::IMipConstraint>
248 mockMipConstraint = std::make_unique<MockMipConstraint>(
249 Antares::Optimisation::LinearProblemApi::MipBasisStatus::AT_LOWER_BOUND);
250 return mockMipConstraint;
254 std::size_t t)
const override
256 return variables_.at(t).get();
260 const std::vector<std::unique_ptr<Antares::Optimisation::LinearProblemApi::IMipVariable>>&
261 getVariables()
const override
268 std::size_t)
const override
270 return RandomConstraint().get();
274 const std::vector<std::unique_ptr<Antares::Optimisation::LinearProblemApi::IMipConstraint>>&
275 getConstraints()
const override
281 const std::string&)
const override
283 return RandomVariable().get();
286 [[nodiscard]]
int variableCount()
const override
288 return variableCount_;
291 [[nodiscard]]
int constraintCount()
const override
293 return constraintCount_;
296 double getObjectiveCoefficient(
302 void setObjectiveOffset(
double)
override
306 double getObjectiveOffset()
const override
319 [[nodiscard]]
bool isMinimization()
const override
324 [[nodiscard]]
bool isMaximization()
const override
326 return !isMinimization();
329 [[nodiscard]]
double objectiveValue()
const override
336 std::vector<std::unique_ptr<Antares::Optimisation::LinearProblemApi::IMipVariable>> variables_;
337 std::vector<std::unique_ptr<Antares::Optimisation::LinearProblemApi::IMipConstraint>>
339 int variableCount_ = 0;
340 int constraintCount_ = 0;
348 scenDependent_(scenDependent),
349 timeDependent_(timeDependent)
353 bool IsScenarioDependent()
const
355 return scenDependent_;
358 bool isTimeDependent()
const
360 return timeDependent_;
390 MockExpression expression()
const
392 return MockExpression{};
402 std::map<std::string, MockVariable> Variables()
const
412 std::map<std::string, MockConstraint> Constraints()
const
424 model_(std::make_shared<MockModel>())
428 const std::string& Id()
const
433 std::shared_ptr<MockModel> getModel()
const
440 std::shared_ptr<MockModel> model_;
450 void addVariableValue(
double value)
452 variables_.push_back(std::make_unique<MockMipVariable>(
454 Antares::Optimisation::LinearProblemApi::MipBasisStatus::AT_LOWER_BOUND,
464 repository.addScenario(
465 component.getScenarioGroupId(),
466 std::make_unique<Antares::Optimisation::LinearProblemApi::EmptyScenario>());
474 std::vector<Antares::ModelerStudy::SystemModel::Component> components = {
475 std::move(createComponent(model))};
483 OptimEntityContainer(linearProblem, &data, &scenarioGroupRepository);
485 std::unique_ptr<Antares::Expressions::Visitors::EvalVisitor> defaultComponentEvalVisitor;
489 optimEntityContainer.addFromSystemComponents(components);
490 for (
const auto& compo: components)
492 defaultComponentEvalVisitor = std::make_unique<
498 const std::string&
id,
500 std::map<std::string, Antares::ModelerStudy::SystemModel::ParameterTypeAndValue>
503 components.emplace_back(createComponent(model,
id, paramsAndValues, components.size()));
504 optimEntityContainer.addFromSystemComponents(components);
505 return &components.back();
Definition: Registry.hxx:33
Represents a visitor for evaluating expressions within a given context.
Definition: EvalVisitor.h:320
Definition: component.h:69
Context for filling linear problem data. Contains temporal information.
Definition: ILinearProblemData.h:35
Definition: linearProblem.h:41
Definition: mipConstraint.h:30
Definition: mipSolution.h:47
Definition: mipVariable.h:32
Definition: linearProblemData.h:35
Definition: OptimEntityContainer.h:46
Definition: scenarioGroupRepo.h:12
Definition: UtilMocks.h:420
Definition: UtilMocks.h:369
Definition: UtilMocks.h:166
void setObjectiveCoefficient(Antares::Optimisation::LinearProblemApi::IMipVariable *, double) override
Set the objective coefficient for a given variable.
Definition: UtilMocks.h:203
Antares::Optimisation::LinearProblemApi::IMipSolution * solve(bool) override
Solve the problem, returns a IMipSolution.
Definition: UtilMocks.h:208
void setMinimization() override
Sets the optimization direction to minimize.
Definition: UtilMocks.h:311
Antares::Optimisation::LinearProblemApi::IMipVariable * addIntVariable(double, double, const std::string &) override
Create a integer variable.
Definition: UtilMocks.h:227
void setMaximization() override
Sets the optimization direction to maximize.
Definition: UtilMocks.h:315
Antares::Optimisation::LinearProblemApi::IMipVariable * addVariable(double, double, bool, const std::string &) override
Create a continuous or integer variable.
Definition: UtilMocks.h:187
Antares::Optimisation::LinearProblemApi::IMipConstraint * addConstraint(double, double, const std::string &) override
Add a bounded constraint to the problem.
Definition: UtilMocks.h:197
Antares::Optimisation::LinearProblemApi::IMipVariable * addNumVariable(double, double, const std::string &) override
Create a continuous variable.
Definition: UtilMocks.h:219
Definition: UtilMocks.h:101
Definition: UtilMocks.h:31
Definition: UtilMocks.h:400
Definition: UtilMocks.h:345
Definition: UtilMocks.h:380
Definition: UtilMocks.h:378
Definition: UtilMocks.h:471
Definition: UtilMocks.h:444