18#include <initializer_list>
22#include "google/protobuf/message.h"
27#include "ortools/math_opt/model_parameters.pb.h"
28#include "ortools/math_opt/solution.pb.h"
29#include "ortools/math_opt/sparse_containers.pb.h"
34using ::google::protobuf::RepeatedField;
38 parameters.dual_values_filter = MakeSkipAllFilter<LinearConstraint>();
39 parameters.reduced_costs_filter = MakeSkipAllFilter<Variable>();
44 std::initializer_list<Variable> variables) {
45 return OnlySomePrimalVariables<std::initializer_list<Variable>>(variables);
59 ModelSolveParametersProto ret;
67 RepeatedField<int64_t>*
const constraint_status_ids =
68 ret.mutable_initial_basis()->mutable_constraint_status()->mutable_ids();
69 RepeatedField<int>*
const constraint_status_values =
70 ret.mutable_initial_basis()
71 ->mutable_constraint_status()
73 constraint_status_ids->Reserve(
initial_basis->constraint_status.size());
74 constraint_status_values->Reserve(
initial_basis->constraint_status.size());
77 constraint_status_ids->Add(key.id());
78 constraint_status_values->Add(
81 RepeatedField<int64_t>*
const variable_status_ids =
82 ret.mutable_initial_basis()->mutable_variable_status()->mutable_ids();
83 RepeatedField<int>*
const variable_status_values =
84 ret.mutable_initial_basis()
85 ->mutable_variable_status()
87 variable_status_ids->Reserve(
initial_basis->variable_status.size());
88 variable_status_values->Reserve(
initial_basis->variable_status.size());
90 variable_status_ids->Add(key.id());
91 variable_status_values->Add(
96 SolutionHintProto& hint = *ret.add_solution_hints();
98 hint.mutable_variable_values()->mutable_ids();
99 RepeatedField<double>*
const variable_values =
100 hint.mutable_variable_values()->mutable_values();
101 variable_ids->Reserve(solution_hint.variable_values.size());
102 variable_values->Reserve(solution_hint.variable_values.size());
103 for (
const Variable& key : solution_hint.variable_values.SortedKeys()) {
105 variable_values->Add(solution_hint.variable_values.at(key));
110 ret.mutable_branching_priorities()->mutable_ids();
111 RepeatedField<int32_t>*
const variable_values =
112 ret.mutable_branching_priorities()->mutable_values();
absl::Span< const int64_t > variable_ids
const ModelStorage * ConsistentModelStorage(std::initializer_list< const ModelStorage * > storages)
Enum< E >::Proto EnumToProto(const std::optional< E > value)
Collection of objects used to extend the Constraint Solver library.
ModelSolveParametersProto Proto() const
std::vector< SolutionHint > solution_hints
VariableMap< int32_t > branching_priorities
static ModelSolveParameters OnlySomePrimalVariables(const Collection &variables)
static ModelSolveParameters OnlyPrimalVariables()
std::optional< Basis > initial_basis
MapFilter< Variable > reduced_costs_filter
MapFilter< Variable > variable_values_filter
MapFilter< LinearConstraint > dual_values_filter
const ModelStorage * storage() const