20#include "absl/status/status.h"
21#include "absl/status/statusor.h"
22#include "absl/strings/str_cat.h"
23#include "absl/time/time.h"
26#include "ortools/math_opt/parameters.pb.h"
37 _ <<
"invalid SolveParameters.time_limit");
40 <<
"SolveParameters.time_limit = " <<
time_limit <<
" < 0";
46 return absl::InvalidArgumentError(absl::StrCat(
47 "SolveParameters.threads = ",
parameters.threads(),
" <= 0"));
53 return absl::InvalidArgumentError(
54 absl::StrCat(
"SolveParameters.relative_gap_tolerance = ",
61 return absl::InvalidArgumentError(
62 absl::StrCat(
"SolveParameters.absolute_gap_tolerance = ",
68 <<
"SolveParameters.node_limit = " <<
parameters.node_limit()
69 <<
" should be nonnegative.";
74 <<
"SolveParameters.solution_limit = " <<
parameters.solution_limit()
75 <<
" should be positive.";
79 return absl::InvalidArgumentError(
"SolveParameters.cutoff_limit was NaN");
81 if (std::isnan(
parameters.objective_limit())) {
82 return absl::InvalidArgumentError(
83 "SolveParameters.objective_limit was NaN");
85 if (std::isnan(
parameters.best_bound_limit())) {
86 return absl::InvalidArgumentError(
87 "SolveParameters.best_bound_limit was NaN");
90 return absl::OkStatus();
ModelSharedTimeLimit * time_limit
absl::Status ValidateSolveParameters(const SolveParametersProto ¶meters)
Collection of objects used to extend the Constraint Solver library.
inline ::absl::StatusOr< absl::Duration > DecodeGoogleApiProto(const google::protobuf::Duration &proto)
StatusBuilder InvalidArgumentErrorBuilder()
#define OR_ASSIGN_OR_RETURN3(lhs, rexpr, error_expression)