18#include <initializer_list>
22#include "google/protobuf/message.h"
28#include "ortools/math_opt/model_parameters.pb.h"
29#include "ortools/math_opt/solution.pb.h"
30#include "ortools/math_opt/sparse_containers.pb.h"
35using ::google::protobuf::RepeatedField;
39 parameters.dual_values_filter = MakeSkipAllFilter<LinearConstraint>();
40 parameters.reduced_costs_filter = MakeSkipAllFilter<Variable>();
45 std::initializer_list<Variable> variables) {
46 return OnlySomePrimalVariables<std::initializer_list<Variable>>(variables);
60 ModelSolveParametersProto ret;
68 RepeatedField<int64_t>*
const constraint_status_ids =
69 ret.mutable_initial_basis()->mutable_constraint_status()->mutable_ids();
70 RepeatedField<int>*
const constraint_status_values =
71 ret.mutable_initial_basis()
72 ->mutable_constraint_status()
74 constraint_status_ids->Reserve(
initial_basis->constraint_status.size());
75 constraint_status_values->Reserve(
initial_basis->constraint_status.size());
78 constraint_status_ids->Add(key.id());
79 constraint_status_values->Add(
82 RepeatedField<int64_t>*
const variable_status_ids =
83 ret.mutable_initial_basis()->mutable_variable_status()->mutable_ids();
84 RepeatedField<int>*
const variable_status_values =
85 ret.mutable_initial_basis()
86 ->mutable_variable_status()
88 variable_status_ids->Reserve(
initial_basis->variable_status.size());
89 variable_status_values->Reserve(
initial_basis->variable_status.size());
91 variable_status_ids->Add(key.id());
92 variable_status_values->Add(
97 SolutionHintProto& hint = *ret.add_solution_hints();
99 hint.mutable_variable_values()->mutable_ids();
100 RepeatedField<double>*
const variable_values =
101 hint.mutable_variable_values()->mutable_values();
102 variable_ids->Reserve(solution_hint.variable_values.size());
103 variable_values->Reserve(solution_hint.variable_values.size());
104 for (
const Variable& key : solution_hint.variable_values.SortedKeys()) {
106 variable_values->Add(solution_hint.variable_values.at(key));
111 ret.mutable_branching_priorities()->mutable_ids();
112 RepeatedField<int32_t>*
const variable_values =
113 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