19 #include "absl/status/status.h" 20 #include "absl/status/statusor.h" 36 #if defined(PROTOBUF_INTERNAL_IMPL) 37 using google::protobuf::Message;
39 using google::protobuf::Message;
52 void Reset()
override;
60 const MPVariable*
const variable,
double new_value,
61 double old_value)
override;
72 int64_t
nodes()
const override;
78 bool IsLP()
const override;
79 bool IsMIP()
const override;
100 void NonIncrementalChange();
102 std::atomic<bool> interrupt_solve_;
104 int num_threads_ = 8;
113 interrupt_solve_ =
false;
121 solver_->solver_specific_parameter_string_);
131 for (
int i = 0; i <
solver_->variables_.size(); ++i) {
134 for (
int i = 0; i <
solver_->constraints_.size(); ++i) {
143 const absl::StatusOr<MPSolutionResponse> status_or =
175 const size_t num_vars =
solver_->variables_.size();
176 for (
int var_id = 0; var_id < num_vars; ++var_id) {
178 var->set_solution_value(
response.variable_value(var_id));
186 interrupt_solve_ =
true;
193 NonIncrementalChange();
197 NonIncrementalChange();
201 NonIncrementalChange();
205 NonIncrementalChange();
209 NonIncrementalChange();
213 NonIncrementalChange();
218 double new_value,
double old_value) {
219 NonIncrementalChange();
223 NonIncrementalChange();
228 NonIncrementalChange();
242 return MPSolver::BasisStatus::FREE;
246 return MPSolver::BasisStatus::FREE;
254 return "SAT Based MIP Solver";
274 num_threads_ = num_threads;
275 return absl::OkStatus();
293 void SatInterface::NonIncrementalChange() {
ResultStatus
The status of solving the problem.
void ClearObjective() override
void SetConstraintBounds(int index, double lb, double ub) override
void set_max_time_in_seconds(double value)
void set_variable_as_extracted(int var_index, bool extracted)
void SetVariableBounds(int index, double lb, double ub) override
void SetPrimalTolerance(double value) override
SatInterface(MPSolver *const solver)
absl::StatusOr< MPSolutionResponse > SatSolveProto(MPModelRequest request, std::atomic< bool > *interrupt_solve, std::function< void(const std::string &)> logging_callback)
double best_objective_bound_
void set_constraint_as_extracted(int ct_index, bool extracted)
bool IsMIP() const override
SynchronizationStatus sync_status_
void SetParameters(const MPSolverParameters ¶m) override
#define VLOG(verboselevel)
MPSolver::ResultStatus Solve(const MPSolverParameters ¶m) override
void SetPresolveMode(int value) override
A C++ wrapper that provides a simple and unified interface to several linear programming and mixed in...
void SetObjectiveOffset(double value) override
int64_t nodes() const override
std::string SolverVersion() const override
void set_solver_specific_parameters(ArgT0 &&arg0, ArgT... args)
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)
MPSolver::ResultStatus result_status_
void SetObjectiveCoefficient(const MPVariable *const variable, double coefficient) override
void SetScalingMode(int value) override
void AddVariable(MPVariable *const var) override
bool IsLP() const override
int64_t iterations() const override
The class for variables of a Mathematical Programming (MP) model.
MPSolver::BasisStatus row_status(int constraint_index) const override
bool SetSolverSpecificParametersAsString(const std::string ¶meters)
Advanced usage: pass solver specific parameters in text format.
void SetRelativeMipGap(double value) override
the model is trivially invalid (NaN coefficients, etc).
absl::Status SetNumThreads(int num_threads) override
MPSolver::BasisStatus column_status(int variable_index) const override
void ExtractNewConstraints() override
bool AddIndicatorConstraint(MPConstraint *const ct) override
void SetCommonParameters(const MPSolverParameters ¶m)
int64_t time_limit() const
bool SetSolverSpecificParametersAsString(const std::string ¶meters) override
void SetDualTolerance(double value) override
The class for constraints of a Mathematical Programming (MP) model.
feasible, or stopped by limit.
void SetVariableInteger(int index, bool integer) override
void set_num_search_workers(::PROTOBUF_NAMESPACE_ID::int32 value)
SharedResponseManager * response
void SetLpAlgorithm(int value) override
::operations_research::MPModelProto * mutable_model()
void SetOptimizationDirection(bool maximize) override
std::string EncodeSatParametersAsString(const sat::SatParameters ¶meters)
void set_enable_internal_solver_output(bool value)
void ExtractObjective() override
MPSolverInterface * BuildSatInterface(MPSolver *const solver)
This mathematical programming (MP) solver class is the main class though which users build and solve ...
Collection of objects used to extend the Constraint Solver library.
abnormal, i.e., error of some kind.
void * underlying_solver() override
This class stores parameter settings for LP and MIP solvers.
bool IsContinuous() const override
void SetCoefficient(MPConstraint *const constraint, const MPVariable *const variable, double new_value, double old_value) override
void ExportModelToProto(MPModelProto *output_model) const
Exports model to protocol buffer.
void ClearConstraint(MPConstraint *const constraint) override
void ExtractNewVariables() override
void ResetExtractionInformation()
void set_log_search_progress(bool value)
void AddRowConstraint(MPConstraint *const ct) override
bool InterruptSolve() override