16 #include "absl/status/status.h"
21 #include "ortools/math_opt/model_parameters.pb.h"
22 #include "ortools/math_opt/sparse_containers.pb.h"
31 absl::Status ValidateSolutionHint(
const SolutionHintProto& solution_hint,
32 const ModelSummary& model_summary) {
34 MakeView(solution_hint.variable_values()),
35 {.allow_positive_infinity = false, .allow_negative_infinity = false}))
36 <<
"Invalid solution_hint.variable_values";
38 solution_hint.variable_values().ids(), model_summary.variables,
39 "solution_hint.variable_values ids",
"model variable ids"));
42 MakeView(solution_hint.dual_values()),
43 {.allow_positive_infinity = false, .allow_negative_infinity = false}))
44 <<
"Invalid solution_hint.dual_values";
46 solution_hint.dual_values().ids(), model_summary.linear_constraints,
47 "solution_hint.dual_values ids",
"model linear constraint ids"));
49 return absl::OkStatus();
52 absl::Status ValidateBranchingPriorities(
53 const SparseInt32VectorProto& branching_priorities,
54 const ModelSummary& model_summary) {
55 const auto vector_view =
MakeView(branching_priorities);
57 <<
"Invalid branching_priorities";
59 model_summary.variables,
60 "branching_priorities ids",
"model IDs"));
62 return absl::OkStatus();
71 CheckIdsSubset(v.filtered_ids(), valid_ids,
"filtered_ids",
"model IDs"));
72 if (!v.filter_by_ids() && !v.filtered_ids().empty()) {
73 return absl::InvalidArgumentError(
74 "Invalid SparseVectorFilterProto.filter_by_id* specification. To "
76 "IDs you must set SparseVectorFilterProto.filter_by_ids to 'true'.");
79 return absl::OkStatus();
87 <<
"invalid variable_values_filter";
90 <<
"invalid reduced_costs_filter";
93 <<
"invalid dual_values_filter";
98 for (
const SolutionHintProto& solution_hint :
parameters.solution_hints()) {
103 return absl::OkStatus();
#define RETURN_IF_ERROR(expr)
absl::Status ValidateBasis(const BasisProto &basis, const ModelSummary &model_summary, const bool check_dual_feasibility)
absl::Status CheckIdsRangeAndStrictlyIncreasing(absl::Span< const int64_t > ids)
absl::Status CheckIdsSubset(absl::Span< const int64_t > ids, const IdNameBiMap &universe, std::optional< int64_t > upper_bound)
absl::Status CheckIdsAndValues(const SparseVectorView< T > &vector_view, absl::string_view value_name="values")
absl::Status ValidateSparseVectorFilter(const SparseVectorFilterProto &v, const IdNameBiMap &valid_ids)
SparseVectorView< T > MakeView(absl::Span< const int64_t > ids, const Collection &values)
absl::Status ValidateModelSolveParameters(const ModelSolveParametersProto ¶meters, const ModelSummary &model_summary)
Collection of objects used to extend the Constraint Solver library.
IdNameBiMap linear_constraints