20 #include "absl/container/flat_hash_set.h"
22 #include "ortools/math_opt/sparse_containers.pb.h"
35 data.
name = in_proto.name();
36 for (
int i = 0; i < in_proto.linear_terms().ids_size(); ++i) {
38 in_proto.linear_terms().values(i));
40 for (
int i = 0; i < in_proto.quadratic_terms().row_ids_size(); ++i) {
42 VariableId(in_proto.quadratic_terms().row_ids(i)),
43 VariableId(in_proto.quadratic_terms().column_ids(i)),
44 in_proto.quadratic_terms().coefficients(i));
56 constraint.set_name(
name);
62 absl::flat_hash_set<VariableId> vars(quad_terms.begin(), quad_terms.end());
66 return std::vector<VariableId>(vars.begin(), vars.end());
const absl::flat_hash_map< VariableId, double > & terms() const
SparseDoubleVectorProto Proto() const
bool set(const VariableId id, const double coeff)
void Delete(VariableId variable)
std::vector< VariableId > Variables() const
SparseDoubleMatrixProto Proto() const
bool set(VariableId first, VariableId second, double value)
SparseCoefficientMap linear_terms
SparseSymmetricMatrix quadratic_terms
void DeleteVariable(VariableId var)
QuadraticConstraintProto ProtoType
std::vector< VariableId > RelatedVariables() const
static QuadraticConstraintData FromProto(const ProtoType &in_proto)