14 #ifndef OR_TOOLS_BOP_BOP_BASE_H_
15 #define OR_TOOLS_BOP_BOP_BASE_H_
19 #include "absl/synchronization/mutex.h"
114 explicit ProblemState(
const sat::LinearBooleanProblem& problem);
126 assignment_preference_ =
a;
129 return assignment_preference_;
181 return fixed_values_[
var];
184 return fixed_values_;
200 return original_problem_;
212 return (
lower_bound() + original_problem_.objective().offset()) *
213 original_problem_.objective().scaling_factor();
224 const sat::LinearBooleanProblem& original_problem_;
225 BopParameters parameters_;
231 std::vector<bool> assignment_preference_;
A simple class to enforce both an elapsed time limit and a deterministic time limit in the same threa...
static std::string GetStatusString(Status status)
virtual Status Optimize(const BopParameters ¶meters, const ProblemState &problem_state, LearnedInfo *learned_info, TimeLimit *time_limit)=0
virtual ~BopOptimizerBase()
virtual bool ShouldBeRun(const ProblemState &problem_state) const =0
BopOptimizerBase(const std::string &name)
const std::string & name() const
int64 update_stamp() const
const BopParameters & GetParameters() const
const sat::LinearBooleanProblem & original_problem() const
const std::vector< bool > assignment_preference() const
const glop::DenseRow & lp_values() const
static const int64 kInitialStampValue
bool MergeLearnedInfo(const LearnedInfo &learned_info, BopOptimizerBase::Status optimization_status)
const std::vector< sat::BinaryClause > & NewlyAddedBinaryClauses() const
LearnedInfo GetLearnedInfo() const
bool IsVariableFixed(VariableIndex var) const
int64 lower_bound() const
bool GetVariableFixedValue(VariableIndex var) const
void SetParameters(const BopParameters ¶meters)
int64 upper_bound() const
ProblemState(const sat::LinearBooleanProblem &problem)
const BopSolution & solution() const
void SynchronizationDone()
void set_assignment_preference(const std::vector< bool > &a)
const absl::StrongVector< VariableIndex, bool > & is_fixed() const
bool IsInfeasible() const
const absl::StrongVector< VariableIndex, bool > & fixed_values() const
double GetScaledLowerBound() const
SharedTimeLimit * time_limit
static const int64 kint64min
std::ostream & operator<<(std::ostream &os, BopOptimizerBase::Status status)
The vehicle routing library lets one model and solve generic vehicle routing problems ranging from th...
std::vector< sat::Literal > fixed_literals
LearnedInfo(const sat::LinearBooleanProblem &problem)
std::vector< sat::BinaryClause > binary_clauses