16#ifndef OR_TOOLS_MATH_OPT_CONSTRAINTS_SOS_SOS2_CONSTRAINT_H_
17#define OR_TOOLS_MATH_OPT_CONSTRAINTS_SOS_SOS2_CONSTRAINT_H_
24#include "absl/strings/string_view.h"
45 inline int64_t
id()
const;
47 inline Sos2ConstraintId
typed_id()
const;
52 inline double weight(
int index)
const;
53 inline absl::string_view
name()
const;
69 friend std::ostream&
operator<<(std::ostream& ostr,
78inline std::ostream&
operator<<(std::ostream& ostr,
90 return storage()->constraint_data(id_).num_expressions();
94 return storage()->constraint_data(id_).has_weights();
98 return storage()->constraint_data(id_).weight(index);
102 if (
storage()->has_constraint(id_)) {
103 return storage()->constraint_data(id_).name();
117 return !(lhs == rhs);
122 return H::combine(std::move(h), constraint.id_.value(), constraint.
storage());
129 ostr <<
"__sos2_con#" << constraint.
id() <<
"__";
137 if (
storage()->has_constraint(id_)) {
144 const Sos2ConstraintId
id)
ModelStorageCPtr storage() const
ModelStorageItem(ModelStorageCPtr storage)
Sos2Constraint(ModelStorageCPtr storage, Sos2ConstraintId id)
friend bool operator==(const Sos2Constraint &lhs, const Sos2Constraint &rhs)
friend H AbslHashValue(H h, const Sos2Constraint &constraint)
friend bool operator!=(const Sos2Constraint &lhs, const Sos2Constraint &rhs)
int64_t num_expressions() const
double weight(int index) const
std::string ToString() const
LinearExpression Expression(int index) const
absl::string_view name() const
Sos2ConstraintId typed_id() const
friend std::ostream & operator<<(std::ostream &ostr, const Sos2Constraint &constraint)
Sos2ConstraintId IdType
The typed integer used for ids.
std::vector< Variable > NonzeroVariables() const
std::string SosConstraintToString(SosConstraint constraint, absl::string_view sos_type_name)
An object oriented wrapper for quadratic constraints in ModelStorage.
absl::Nonnull< const ModelStorage * > ModelStorageCPtr
constexpr absl::string_view kDeletedConstraintDefaultDescription
bool operator==(const SecondOrderConeConstraint &lhs, const SecondOrderConeConstraint &rhs)
bool operator!=(const SecondOrderConeConstraint &lhs, const SecondOrderConeConstraint &rhs)
std::ostream & operator<<(std::ostream &ostr, const SecondOrderConeConstraint &constraint)
std::vector< Variable > AtomicConstraintNonzeroVariables(const ModelStorage &storage, const IdType id)
H AbslHashValue(H h, const SecondOrderConeConstraint &constraint)