18 #ifndef OR_TOOLS_MATH_OPT_CPP_LINEAR_CONSTRAINT_H_
19 #define OR_TOOLS_MATH_OPT_CPP_LINEAR_CONSTRAINT_H_
26 #include "absl/strings/string_view.h"
27 #include "absl/log/check.h"
48 inline int64_t
id()
const;
50 inline LinearConstraintId
typed_id()
const;
55 inline absl::string_view
name()
const;
74 friend std::ostream&
operator<<(std::ostream& ostr,
79 LinearConstraintId id_;
89 inline std::ostream&
operator<<(std::ostream& ostr,
111 if (
storage()->has_linear_constraint(id_)) {
118 CHECK_EQ(variable.
storage(), storage_)
125 CHECK_EQ(variable.
storage(), storage_)
132 for (
const VariableId
var :
143 if (!
storage()->has_linear_constraint(id_)) {
146 std::stringstream str;
152 return lhs.id_ == rhs.id_ && lhs.storage_ == rhs.storage_;
156 return !(lhs == rhs);
159 template <
typename H>
161 return H::combine(std::move(h), linear_constraint.id_.value(),
162 linear_constraint.storage_);
168 const absl::string_view
name = linear_constraint.
name();
170 ostr <<
"__lin_con#" << linear_constraint.
id() <<
"__";
178 const LinearConstraintId
id)
179 : storage_(storage), id_(id) {}
std::string ToString() const
LinearConstraintId IdType
friend bool operator!=(const LinearConstraint &lhs, const LinearConstraint &rhs)
double upper_bound() const
bool is_coefficient_nonzero(Variable variable) const
double coefficient(Variable variable) const
LinearConstraintId typed_id() const
double lower_bound() const
friend bool operator==(const LinearConstraint &lhs, const LinearConstraint &rhs)
BoundedLinearExpression AsBoundedLinearExpression() const
LinearConstraint(const ModelStorage *storage, LinearConstraintId id)
friend std::ostream & operator<<(std::ostream &ostr, const LinearConstraint &linear_constraint)
friend H AbslHashValue(H h, const LinearConstraint &linear_constraint)
absl::string_view name() const
const ModelStorage * storage() const
double linear_constraint_coefficient(LinearConstraintId constraint, VariableId variable) const
double linear_constraint_lower_bound(LinearConstraintId id) const
double linear_constraint_upper_bound(LinearConstraintId id) const
bool is_linear_constraint_coefficient_nonzero(LinearConstraintId constraint, VariableId variable) const
const std::string & linear_constraint_name(LinearConstraintId id) const
const ModelStorage * storage() const
VariableId typed_id() const
constexpr absl::string_view kObjectsFromOtherModelStorage
constexpr absl::string_view kDeletedConstraintDefaultDescription
bool operator==(const IndicatorConstraint &lhs, const IndicatorConstraint &rhs)
bool operator!=(const IndicatorConstraint &lhs, const IndicatorConstraint &rhs)
std::ostream & operator<<(std::ostream &ostr, const IndicatorConstraint &constraint)
H AbslHashValue(H h, const IndicatorConstraint &constraint)
Collection of objects used to extend the Constraint Solver library.