27 namespace Antares::Optimization
34 explicit LinearExpression(
const std::vector<std::pair<int, double>>& coefs,
double constant);
36 void mergeDuplicateCoefficients();
46 void addVariable(
int index,
double value);
47 double constant()
const;
49 using const_iterator = std::vector<std::pair<int, double>>::const_iterator;
50 const_iterator begin()
const;
51 const_iterator end()
const;
52 const std::pair<int, double>& operator[](std::size_t)
const;
53 std::size_t size()
const;
55 bool hasCoefs()
const;
58 std::vector<std::pair<int, double>> coefs_;
59 double constant_ = 0.;
63 double applyOperation(
const std::vector<const LinearExpression*>& expressions, Op op)
65 std::vector<double> constants(expressions.size(), 0);
66 for (
int i = 0; i < expressions.size(); ++i)
68 const auto& expression = expressions[i];
69 if (expression->hasCoefs())
71 throw std::invalid_argument(std::string(
"Operator '") +
typeid(op).name()
72 +
"' cannot be applied to expressions with "
73 "coefficients (non-constant expressions).");
75 constants[i] = expression->constant();
Definition: LinearExpression.h:30