16 #ifndef OR_TOOLS_MATH_OPT_CONSTRAINTS_INDICATOR_INDICATOR_CONSTRAINT_H_
17 #define OR_TOOLS_MATH_OPT_CONSTRAINTS_INDICATOR_INDICATOR_CONSTRAINT_H_
25 #include "absl/strings/string_view.h"
39 using IdType = IndicatorConstraintId;
42 IndicatorConstraintId
id);
44 inline int64_t
id()
const;
46 inline IndicatorConstraintId
typed_id()
const;
49 inline absl::string_view
name()
const;
74 friend std::ostream&
operator<<(std::ostream& ostr,
79 IndicatorConstraintId id_;
89 inline std::ostream&
operator<<(std::ostream& ostr,
110 const std::optional<VariableId> maybe_indicator =
112 if (!maybe_indicator.has_value()) {
115 return Variable(storage_, *maybe_indicator);
128 return lhs.id_ == rhs.id_ && lhs.storage_ == rhs.storage_;
133 return !(lhs == rhs);
136 template <
typename H>
138 return H::combine(std::move(h), constraint.id_.value(), constraint.storage_);
144 const absl::string_view
name = constraint.
name();
146 ostr <<
"__indic_con#" << constraint.
id() <<
"__";
154 const IndicatorConstraintId
id)
155 : storage_(storage), id_(id) {}
std::string ToString() const
friend bool operator==(const IndicatorConstraint &lhs, const IndicatorConstraint &rhs)
std::optional< Variable > indicator_variable() const
BoundedLinearExpression ImpliedConstraint() const
IndicatorConstraint(const ModelStorage *storage, IndicatorConstraintId id)
IndicatorConstraintId IdType
friend H AbslHashValue(H h, const IndicatorConstraint &constraint)
friend bool operator!=(const IndicatorConstraint &lhs, const IndicatorConstraint &rhs)
bool activate_on_zero() const
std::vector< Variable > NonzeroVariables() const
IndicatorConstraintId typed_id() const
friend std::ostream & operator<<(std::ostream &ostr, const IndicatorConstraint &constraint)
absl::string_view name() const
const ModelStorage * storage() const
const AtomicConstraintTraits< IdType >::ConstraintData & constraint_data(IdType id) const
bool has_constraint(IdType id) const
std::vector< Variable > AtomicConstraintNonzeroVariables(const ModelStorage &storage, const IdType id)
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)