26 #include <antares/optimisation/linear-problem-api/mipConstraint.h>
27 #include <antares/optimisation/linear-problem-api/mipVariable.h>
28 #include <antares/study/system-model/component.h>
29 #include <antares/study/system-model/variabilityType.h>
30 #include "antares/optimisation/linear-problem-api/linearProblem.h"
32 #include "EvaluationContext.h"
33 #include "scenarioGroupRepo.h"
39 std::vector<unsigned> modelVariableGlobalIndices;
40 std::vector<unsigned> modelConstraintsGlobalIndices;
41 std::vector<VariabilityType> modelConstraintsVariability;
52 [[nodiscard]]
unsigned int getVariableStartColumn(
54 unsigned int index)
const
56 const auto& optimComponent = optimComponents_.at(component.Index());
57 return variableStartColumn_.at(optimComponent.modelVariableGlobalIndices.at(index));
63 const auto& optimComponent = optimComponents_.at(component.Index());
64 return optimComponent.evaluationContext;
67 [[nodiscard]] std::pair<unsigned int, VariabilityType> getConstraintData(
69 unsigned int index)
const
71 const auto& optimComponent = optimComponents_.at(component.Index());
72 return {constraintStartLine_.at(optimComponent.modelConstraintsGlobalIndices.at(index)),
73 optimComponent.modelConstraintsVariability.at(index)};
78 return linearProblem_;
83 variableStartColumn_.push_back(linearProblem_.variableCount());
86 [[nodiscard]]
const std::vector<std::unique_ptr<LinearProblemApi::IMipVariable>>& getVariables()
89 return linearProblem_.getVariables();
92 [[nodiscard]] std::span<const std::unique_ptr<LinearProblemApi::IMipVariable>>
95 std::size_t nbTimeSteps)
const
97 const auto& variables = linearProblem_.getVariables();
98 unsigned int startColumn = getVariableStartColumn(component, index);
99 return {variables.data() + startColumn, nbTimeSteps};
102 [[nodiscard]] std::pair<std::span<const std::unique_ptr<LinearProblemApi::IMipConstraint>>,
106 std::size_t nbTimeSteps)
const
108 const auto& constraints = linearProblem_.getConstraints();
109 const auto [startLine, timeIndex] = getConstraintData(component, index);
110 return {{constraints.data() + startLine, nbTimeSteps}, timeIndex};
113 [[nodiscard]]
const std::vector<std::unique_ptr<LinearProblemApi::IMipConstraint>>&
114 getConstraints()
const
116 return linearProblem_.getConstraints();
121 return optimComponents_.at(index);
124 void addFromSystemComponents(
125 const std::vector<Antares::ModelerStudy::SystemModel::Component>& component,
126 Modeler::Config::Location targetLocation = Modeler::Config::Location::SUBPROBLEMS);
130 unsigned constraintGLobalIndex()
const
132 return static_cast<unsigned int>(constraintStartLine_.size());
136 std::vector<unsigned int> variableStartColumn_;
137 std::vector<OptimComponent> optimComponents_;
138 std::vector<unsigned int> constraintStartLine_;
145 constraintStartLine_.push_back(linearProblem_.constraintCount());
Definition: component.h:69
Represents the context for evaluating expressions.
Definition: EvaluationContext.h:25
Interface for linear problem data. Provides a method to retrieve data for a specific dataset,...
Definition: ILinearProblemData.h:114
Definition: linearProblem.h:41
Definition: OptimEntityContainer.h:46
Definition: scenarioGroupRepo.h:12
Definition: VariableNode.h:9
VariabilityType
Represents the time and scenario variation of a value.
Definition: variabilityType.h:29
Definition: OptimEntityContainer.h:38