Google OR-Tools: ortools/linear_solver/sat_interface.cc Source File
20#include "absl/base/attributes.h"
21#include "absl/status/status.h"
48 std::atomic<bool>* interrupt) override {
49 return SatSolveProto(std::move(request), interrupt);
53 void Reset() override;
61 double new_value, double old_value) override;
64 double coefficient) override;
72 int64_t nodes() const override;
78 bool IsLP() const override;
79 bool IsMIP() const override;
96 const std::string& parameters) override;
97 absl::Status SetNumThreads(int num_threads) override;
100 void NonIncrementalChange();
120 solver_->SetSolverSpecificParametersAsString(
121 solver_->solver_specific_parameter_string_);
124 if (solver_->time_limit()) {
125 VLOG(1) << "Setting time limit = " << solver_->time_limit() << " ms.";
126 parameters_.set_max_time_in_seconds(
127 static_cast<double>(solver_->time_limit()) / 1000.0);
131 for (int i = 0; i < solver_->variables_.size(); ++i) {
134 for (int i = 0; i < solver_->constraints_.size(); ++i) {
144 SatSolveProto(std::move(request), &interrupt_solve_);
152 const absl::Status result = solver_->LoadSolutionFromProto(response);
154 LOG(ERROR) << "LoadSolutionFromProto failed: " << result;
267void SatInterface::NonIncrementalChange() {
275const void* const kRegisterSat ABSL_ATTRIBUTE_UNUSED = [] {
277 [](MPSolver* const solver) { return new SatInterface(solver); },
void set_enable_internal_solver_output(bool value)
void set_solver_specific_parameters(Arg_ &&arg, Args_... args)
::operations_research::MPModelProto *PROTOBUF_NONNULL mutable_model()
::operations_research::MPSolverResponseStatus status() const
static MPSolverInterfaceFactoryRepository * GetInstance()
void Register(MPSolverInterfaceFactory factory, MPSolver::OptimizationProblemType problem_type, std::function< bool()> is_runtime_ready={})
void set_variable_as_extracted(int var_index, bool extracted)
friend class MPConstraint
void set_constraint_as_extracted(int ct_index, bool extracted)
void ResetExtractionInformation()
MPSolverInterface(MPSolver *solver)
void SetCommonParameters(const MPSolverParameters ¶m)
MPSolver::ResultStatus result_status_
SynchronizationStatus sync_status_
@ SAT_INTEGER_PROGRAMMING
The class for variables of a Mathematical Programming (MP) model.
void SetRelativeMipGap(double value) override
Definition sat_interface.cc:257
void AddVariable(MPVariable *var) override
Definition sat_interface.cc:188
void SetObjectiveOffset(double value) override
Definition sat_interface.cc:207
void SetCoefficient(MPConstraint *constraint, const MPVariable *variable, double new_value, double old_value) override
Definition sat_interface.cc:192
void SetVariableBounds(int index, double lb, double ub) override
Definition sat_interface.cc:172
bool SupportsDirectlySolveProto(std::atomic< bool > *interrupt) const override
Definition sat_interface.cc:44
absl::Status SetNumThreads(int num_threads) override
Definition sat_interface.cc:247
void * underlying_solver() override
Definition sat_interface.cc:233
void ExtractObjective() override
Definition sat_interface.cc:239
void SetObjectiveCoefficient(const MPVariable *variable, double coefficient) override
Definition sat_interface.cc:202
void AddRowConstraint(MPConstraint *ct) override
Definition sat_interface.cc:184
void Reset() override
Definition sat_interface.cc:166
MPSolver::ResultStatus Solve(const MPSolverParameters ¶m) override
Definition sat_interface.cc:112
void SetScalingMode(int value) override
Definition sat_interface.cc:255
void SetVariableInteger(int index, bool integer) override
Definition sat_interface.cc:176
void ClearConstraint(MPConstraint *constraint) override
Definition sat_interface.cc:198
int64_t nodes() const override
Definition sat_interface.cc:215
void ExtractNewConstraints() override
Definition sat_interface.cc:237
bool IsContinuous() const override
Definition sat_interface.cc:225
bool IsMIP() const override
Definition sat_interface.cc:227
bool InterruptSolve() override
Definition sat_interface.cc:161
void SetPresolveMode(int value) override
Definition sat_interface.cc:260
std::string SolverVersion() const override
Definition sat_interface.cc:229
void SetDualTolerance(double value) override
Definition sat_interface.cc:254
void SetOptimizationDirection(bool maximize) override
Definition sat_interface.cc:168
void ExtractNewVariables() override
Definition sat_interface.cc:235
bool IsLP() const override
Definition sat_interface.cc:226
int64_t iterations() const override
Definition sat_interface.cc:211
bool SetSolverSpecificParametersAsString(const std::string ¶meters) override
Definition sat_interface.cc:262
~SatInterface() override
Definition sat_interface.cc:110
bool AddIndicatorConstraint(MPConstraint *const ct) override
Definition sat_interface.cc:68
MPSolutionResponse DirectlySolveProto(LazyMutableCopy< MPModelRequest > request, std::atomic< bool > *interrupt) override
Definition sat_interface.cc:47
void SetConstraintBounds(int index, double lb, double ub) override
Definition sat_interface.cc:180
void ClearObjective() override
Definition sat_interface.cc:209
MPSolver::BasisStatus column_status(int variable_index) const override
Definition sat_interface.cc:221
void SetPrimalTolerance(double value) override
Definition sat_interface.cc:253
MPSolver::BasisStatus row_status(int constraint_index) const override
Definition sat_interface.cc:217
void SetLpAlgorithm(int value) override
Definition sat_interface.cc:256
void SetParameters(const MPSolverParameters ¶m) override
Definition sat_interface.cc:241
SatInterface(MPSolver *solver)
Definition sat_interface.cc:107
std::string CpSatSolverVersion()
Returns a string that describes the version of the solver.
MPSolutionResponse SatSolveProto(LazyMutableCopy< MPModelRequest > request, std::atomic< bool > *interrupt_solve, std::function< void(const std::string &)> logging_callback, std::function< void(const MPSolution &)> solution_callback, std::function< void(const double)> best_bound_callback)
std::string EncodeParametersAsString(const P ¶meters)
bool ProtobufTextFormatMergeFromString(absl::string_view proto_text_string, ProtoType *proto)