16#include "absl/status/status.h"
21#include "ortools/math_opt/model_parameters.pb.h"
22#include "ortools/math_opt/sparse_containers.pb.h"
30absl::Status ValidateSolutionHint(
const SolutionHintProto& solution_hint,
31 const ModelSummary& model_summary) {
32 const auto vector_view =
MakeView(solution_hint.variable_values());
35 {.allow_positive_infinity =
false, .allow_negative_infinity =
false}))
36 <<
"Invalid solution_hint";
38 model_summary.variables,
"solution_hint ids",
41 return absl::OkStatus();
44absl::Status ValidateBranchingPriorities(
45 const SparseInt32VectorProto& branching_priorities,
46 const ModelSummary& model_summary) {
47 const auto vector_view =
MakeView(branching_priorities);
49 <<
"Invalid branching_priorities";
51 model_summary.variables,
52 "branching_priorities ids",
"model IDs"));
54 return absl::OkStatus();
63 CheckIdsSubset(v.filtered_ids(), valid_ids,
"filtered_ids",
"model IDs"));
64 if (!v.filter_by_ids() && !v.filtered_ids().empty()) {
65 return absl::InvalidArgumentError(
66 "Invalid SparseVectorFilterProto.filter_by_id* specification. To "
68 "IDs you must set SparseVectorFilterProto.filter_by_ids to 'true'.");
71 return absl::OkStatus();
79 <<
"invalid variable_values_filter";
82 <<
"invalid reduced_costs_filter";
85 <<
"invalid dual_values_filter";
90 for (
const SolutionHintProto& solution_hint :
parameters.solution_hints()) {
95 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)
SparseVectorView< T > MakeView(absl::Span< const int64_t > ids, const Collection &values)
absl::Status CheckIdsAndValues(const SparseVectorView< T > &vector_view, absl::string_view value_name="values")
absl::Status ValidateSparseVectorFilter(const SparseVectorFilterProto &v, const IdNameBiMap &valid_ids)
absl::Status CheckIdsSubset(absl::Span< const int64_t > ids, const IdNameBiMap &universe, absl::string_view ids_description, absl::string_view universe_description)
absl::Status ValidateModelSolveParameters(const ModelSolveParametersProto ¶meters, const ModelSummary &model_summary)
Collection of objects used to extend the Constraint Solver library.
IdNameBiMap linear_constraints