19 #include "absl/container/flat_hash_set.h"
21 #include "ortools/math_opt/model.pb.h"
22 #include "ortools/math_opt/model_update.pb.h"
23 #include "ortools/math_opt/sparse_containers.pb.h"
31 ObjectiveProto result;
32 result.set_maximize(maximize_);
33 result.set_offset(offset_);
34 *result.mutable_linear_coefficients() = linear_terms_.
Proto();
35 *result.mutable_quadratic_coefficients() = quadratic_terms_.
Proto();
40 const Diff& diff,
const absl::flat_hash_set<VariableId>& deleted_variables,
41 const std::vector<VariableId>& new_variables)
const {
42 ObjectiveUpdatesProto result;
44 result.set_direction_update(maximize_);
47 result.set_offset_update(offset_);
51 result.mutable_linear_coefficients()->add_ids(v.value());
52 result.mutable_linear_coefficients()->add_values(
linear_term(v));
54 for (
const VariableId v : new_variables) {
57 result.mutable_linear_coefficients()->add_ids(v.value());
58 result.mutable_linear_coefficients()->add_values(val);
61 *result.mutable_quadratic_coefficients() = quadratic_terms_.
Update(
67 const VariableId variable_checkpoint,
Diff& diff)
const {
double linear_term(VariableId v) const
void AdvanceCheckpointInDiff(VariableId variable_checkpoint, Diff &diff) const
ObjectiveUpdatesProto Update(const Diff &diff, const absl::flat_hash_set< VariableId > &deleted_variables, const std::vector< VariableId > &new_variables) const
ObjectiveProto Proto() const
SparseDoubleVectorProto Proto() const
SparseDoubleMatrixProto Update(const absl::flat_hash_set< VariableId > &deleted_variables, absl::Span< const VariableId > new_variables, const absl::flat_hash_set< std::pair< VariableId, VariableId >> &dirty) const
SparseDoubleMatrixProto Proto() const
std::vector< T > SortedElements(const absl::flat_hash_set< T > &elements)
absl::flat_hash_set< std::pair< VariableId, VariableId > > quadratic_coefficients
VariableId variable_checkpoint
absl::flat_hash_set< VariableId > linear_coefficients