 |
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() {
void SetObjectiveCoefficient(const MPVariable *const variable, double coefficient) override
SharedResponseManager * response
void ExtractNewConstraints() override
The class for variables of a Mathematical Programming (MP) model.
This mathematical programming (MP) solver class is the main class though which users build and solve ...
MPSolver::ResultStatus result_status_
The class for constraints of a Mathematical Programming (MP) model.
@ FEASIBLE
feasible, or stopped by limit.
void SetPrimalTolerance(double value) override
void ExtractNewVariables() override
int64 iterations() const override
void set_variable_as_extracted(int var_index, bool extracted)
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
void ExportModelToProto(MPModelProto *output_model) const
Exports model to protocol buffer.
void SetConstraintBounds(int index, double lb, double ub) override
void SetDualTolerance(double value) override
MPSolver::ResultStatus Solve(const MPSolverParameters ¶m) override
bool IsContinuous() const override
This class stores parameter settings for LP and MIP solvers.
bool SetSolverSpecificParametersAsString(const std::string ¶meters) override
bool CheckSolutionIsSynchronized() const
absl::Status SetNumThreads(int num_threads) override
void SetVariableBounds(int index, double lb, double ub) override
void AddVariable(MPVariable *const var) override
double best_objective_bound() const override
MPSolver::BasisStatus column_status(int variable_index) const override
MPSolver::BasisStatus row_status(int constraint_index) const override
MPSolverInterface * BuildSatInterface(MPSolver *const solver)
void SetCommonParameters(const MPSolverParameters ¶m)
std::string SolverVersion() const override
void SetOptimizationDirection(bool maximize) override
void set_constraint_as_extracted(int ct_index, bool extracted)
@ ABNORMAL
abnormal, i.e., error of some kind.
void ResetExtractionInformation()
bool IsLP() const override
void ExtractObjective() override
void SetObjectiveOffset(double value) override
bool AddIndicatorConstraint(MPConstraint *const ct) override
int64 nodes() const override
virtual bool CheckBestObjectiveBoundExists() const
bool SetSolverSpecificParametersAsString(const std::string ¶meters)
Advanced usage: pass solver specific parameters in text format.
void SetCoefficient(MPConstraint *const constraint, const MPVariable *const variable, double new_value, double old_value) override
void SetLpAlgorithm(int value) override
ResultStatus
The status of solving the problem.
void SetScalingMode(int value) override
@ MODEL_INVALID
the model is trivially invalid (NaN coefficients, etc).
void SetPresolveMode(int value) override
bool IsMIP() const override
bool InterruptSolve() override
void AddRowConstraint(MPConstraint *const ct) override
void ClearObjective() override
void SetVariableInteger(int index, bool integer) override
BasisStatus
Advanced usage: possible basis status values for a variable and the slack variable of a linear constr...
bool ProtobufTextFormatMergeFromString(const std::string &proto_text_string, ProtoType *proto)
void SetRelativeMipGap(double value) override
void * underlying_solver() override
double trivial_worst_objective_bound() const
SatInterface(MPSolver *const solver)
void ClearConstraint(MPConstraint *const constraint) override
@ INFEASIBLE
proven infeasible.
void SetParameters(const MPSolverParameters ¶m) override
SynchronizationStatus sync_status_
absl::StatusOr< MPSolutionResponse > SatSolveProto(MPModelRequest request, std::atomic< bool > *interrupt_solve)
@ NOT_SOLVED
not been solved yet.