 |
OR-Tools
8.1
|
Go to the documentation of this file.
18 #include "absl/status/status.h"
19 #include "absl/status/statusor.h"
35 #if defined(PROTOBUF_INTERNAL_IMPL)
36 using google::protobuf::Message;
38 using google::protobuf::Message;
51 void Reset()
override;
59 const MPVariable*
const variable,
double new_value,
60 double old_value)
override;
77 bool IsLP()
const override;
78 bool IsMIP()
const override;
99 void NonIncrementalChange();
101 std::atomic<bool> interrupt_solve_;
102 sat::SatParameters parameters_;
103 int num_threads_ = 8;
112 interrupt_solve_ =
false;
120 solver_->solver_specific_parameter_string_);
125 parameters_.set_max_time_in_seconds(
130 for (
int i = 0; i <
solver_->variables_.size(); ++i) {
133 for (
int i = 0; i <
solver_->constraints_.size(); ++i) {
137 MPModelRequest request;
144 request.set_solver_specific_parameters(parameters_.SerializeAsString());
146 request.set_solver_specific_parameters(parameters_.ShortDebugString());
148 request.set_enable_internal_solver_output(!
quiet_);
149 const absl::StatusOr<MPSolutionResponse> status_or =
153 const MPSolutionResponse&
response = status_or.value();
181 const size_t num_vars =
solver_->variables_.size();
182 for (
int var_id = 0; var_id < num_vars; ++var_id) {
184 var->set_solution_value(
response.variable_value(var_id));
192 interrupt_solve_ =
true;
199 NonIncrementalChange();
203 NonIncrementalChange();
207 NonIncrementalChange();
211 NonIncrementalChange();
215 NonIncrementalChange();
219 NonIncrementalChange();
224 double new_value,
double old_value) {
225 NonIncrementalChange();
229 NonIncrementalChange();
234 NonIncrementalChange();
248 return MPSolver::BasisStatus::FREE;
252 return MPSolver::BasisStatus::FREE;
260 return "SAT Based MIP Solver";
274 parameters_.set_num_search_workers(num_threads_);
275 parameters_.set_log_search_progress(!
quiet_);
280 num_threads_ = num_threads;
281 return absl::OkStatus();
299 void SatInterface::NonIncrementalChange() {
SharedResponseManager * response
#define VLOG(verboselevel)
absl::Status SetNumThreads(int num_threads) override
bool IsMIP() const override
bool AddIndicatorConstraint(MPConstraint *const ct) override
void AddVariable(MPVariable *const var) override
void SetPresolveMode(int value) override
This mathematical programming (MP) solver class is the main class though which users build and solve ...
bool SetSolverSpecificParametersAsString(const std::string ¶meters) override
void SetVariableBounds(int index, double lb, double ub) override
int64 nodes() const override
void SetOptimizationDirection(bool maximize) override
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
@ MODEL_INVALID
the model is trivially invalid (NaN coefficients, etc).
void ClearConstraint(MPConstraint *const constraint) override
void SetCoefficient(MPConstraint *const constraint, const MPVariable *const variable, double new_value, double old_value) override
@ ABNORMAL
abnormal, i.e., error of some kind.
This class stores parameter settings for LP and MIP solvers.
The class for constraints of a Mathematical Programming (MP) model.
bool InterruptSolve() override
std::string SolverVersion() const override
MPSolverInterface * BuildSatInterface(MPSolver *const solver)
void SetScalingMode(int value) override
void SetRelativeMipGap(double value) override
void ResetExtractionInformation()
bool IsContinuous() const override
@ NOT_SOLVED
not been solved yet.
bool SetSolverSpecificParametersAsString(const std::string ¶meters)
Advanced usage: pass solver specific parameters in text format.
void SetPrimalTolerance(double value) override
void SetConstraintBounds(int index, double lb, double ub) override
void SetDualTolerance(double value) override
BasisStatus
Advanced usage: possible basis status values for a variable and the slack variable of a linear constr...
void AddRowConstraint(MPConstraint *const ct) override
MPSolver::ResultStatus Solve(const MPSolverParameters ¶m) override
void ExtractNewConstraints() override
SynchronizationStatus sync_status_
void SetObjectiveOffset(double value) override
ResultStatus
The status of solving the problem.
bool IsLP() const override
void ExtractNewVariables() override
void set_variable_as_extracted(int var_index, bool extracted)
int64 iterations() const override
void * underlying_solver() override
void ClearObjective() override
The class for variables of a Mathematical Programming (MP) model.
void ExportModelToProto(MPModelProto *output_model) const
Exports model to protocol buffer.
A C++ wrapper that provides a simple and unified interface to several linear programming and mixed in...
void SetCommonParameters(const MPSolverParameters ¶m)
void SetVariableInteger(int index, bool integer) override
@ INFEASIBLE
proven infeasible.
bool ProtobufTextFormatMergeFromString(const std::string &proto_text_string, ProtoType *proto)
void SetLpAlgorithm(int value) override
MPSolver::ResultStatus result_status_
void set_constraint_as_extracted(int ct_index, bool extracted)
void SetObjectiveCoefficient(const MPVariable *const variable, double coefficient) override
void SetParameters(const MPSolverParameters ¶m) override
MPSolver::BasisStatus row_status(int constraint_index) const override
SatInterface(MPSolver *const solver)
@ FEASIBLE
feasible, or stopped by limit.
MPSolver::BasisStatus column_status(int variable_index) const override
void ExtractObjective() override
double best_objective_bound_
absl::StatusOr< MPSolutionResponse > SatSolveProto(MPModelRequest request, std::atomic< bool > *interrupt_solve)