 |
OR-Tools
8.0
|
Go to the documentation of this file.
18 #include "absl/status/status.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;
78 bool IsLP()
const override;
79 bool IsMIP()
const override;
100 void NonIncrementalChange();
102 std::atomic<bool> interrupt_solve_;
103 sat::SatParameters parameters_;
104 int num_threads_ = 8;
105 double best_objective_bound_ = 0.0;
114 interrupt_solve_ =
false;
122 solver_->solver_specific_parameter_string_);
127 parameters_.set_max_time_in_seconds(
132 for (
int i = 0; i <
solver_->variables_.size(); ++i) {
135 for (
int i = 0; i <
solver_->constraints_.size(); ++i) {
139 MPModelRequest request;
146 request.set_solver_specific_parameters(parameters_.SerializeAsString());
148 request.set_solver_specific_parameters(parameters_.ShortDebugString());
150 request.set_enable_internal_solver_output(!
quiet_);
182 best_objective_bound_ =
response.best_objective_bound();
183 const size_t num_vars =
solver_->variables_.size();
184 for (
int var_id = 0; var_id < num_vars; ++var_id) {
186 var->set_solution_value(
response.variable_value(var_id));
194 interrupt_solve_ =
true;
201 NonIncrementalChange();
205 NonIncrementalChange();
209 NonIncrementalChange();
213 NonIncrementalChange();
217 NonIncrementalChange();
221 NonIncrementalChange();
226 double new_value,
double old_value) {
227 NonIncrementalChange();
231 NonIncrementalChange();
236 NonIncrementalChange();
253 return best_objective_bound_;
257 return MPSolver::BasisStatus::FREE;
261 return MPSolver::BasisStatus::FREE;
269 return "SAT Based MIP Solver";
283 parameters_.set_num_search_workers(num_threads_);
284 parameters_.set_log_search_progress(!
quiet_);
289 num_threads_ = num_threads;
290 return absl::OkStatus();
308 void SatInterface::NonIncrementalChange() {
SharedResponseManager * response
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
double trivial_worst_objective_bound() const
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
virtual bool CheckBestObjectiveBoundExists() const
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
double best_objective_bound() const 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
bool CheckSolutionIsSynchronized() const
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
absl::StatusOr< MPSolutionResponse > SatSolveProto(MPModelRequest request, std::atomic< bool > *interrupt_solve)