21 #include "absl/container/flat_hash_set.h"
23 #include "ortools/math_opt/model.pb.h"
24 #include "ortools/math_opt/sparse_containers.pb.h"
35 data.
name = in_proto.name();
37 if (in_proto.has_indicator_id()) {
38 data.
indicator = VariableId(in_proto.indicator_id());
40 for (
int i = 0; i < in_proto.expression().ids_size(); ++i) {
42 in_proto.expression().values(i));
52 constraint.set_name(
name);
55 constraint.set_indicator_id(
indicator->value());
58 constraint.mutable_expression()->add_ids(
var.value());
65 absl::flat_hash_set<VariableId> vars;
72 return std::vector<VariableId>(vars.begin(), vars.end());
const absl::flat_hash_map< VariableId, double > & terms() const
double get(const VariableId id) const
bool set(const VariableId id, const double coeff)
void erase(VariableId id)
std::vector< K > SortedMapKeys(const absl::flat_hash_map< K, V > &in_map)
SparseCoefficientMap linear_terms
void DeleteVariable(VariableId var)
IndicatorConstraintProto ProtoType
static IndicatorConstraintData FromProto(const ProtoType &in_proto)
std::vector< VariableId > RelatedVariables() const
std::optional< VariableId > indicator