14#ifndef OR_TOOLS_BOP_BOP_BASE_H_
15#define OR_TOOLS_BOP_BOP_BASE_H_
21#include "absl/synchronization/mutex.h"
24#include "ortools/bop/bop_parameters.pb.h"
27#include "ortools/sat/boolean_problem.pb.h"
116 explicit ProblemState(
const sat::LinearBooleanProblem& problem);
128 assignment_preference_ =
a;
131 return assignment_preference_;
183 return fixed_values_[
var];
186 return fixed_values_;
202 return original_problem_;
214 return (
lower_bound() + original_problem_.objective().offset()) *
215 original_problem_.objective().scaling_factor();
226 const sat::LinearBooleanProblem& original_problem_;
227 BopParameters parameters_;
228 int64_t update_stamp_;
233 std::vector<bool> assignment_preference_;
235 int64_t lower_bound_;
236 int64_t upper_bound_;
A simple class to enforce both an elapsed time limit and a deterministic time limit in the same threa...
const std::string & name() const
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 BopSolution & solution() const
int64_t lower_bound() const
bool MergeLearnedInfo(const LearnedInfo &learned_info, BopOptimizerBase::Status optimization_status)
const std::vector< sat::BinaryClause > & NewlyAddedBinaryClauses() const
LearnedInfo GetLearnedInfo() const
const glop::DenseRow & lp_values() const
bool IsVariableFixed(VariableIndex var) const
const std::vector< bool > assignment_preference() const
const sat::LinearBooleanProblem & original_problem() const
static const int64_t kInitialStampValue
bool GetVariableFixedValue(VariableIndex var) const
const absl::StrongVector< VariableIndex, bool > & fixed_values() const
void SetParameters(const BopParameters ¶meters)
const absl::StrongVector< VariableIndex, bool > & is_fixed() const
ProblemState(const sat::LinearBooleanProblem &problem)
int64_t update_stamp() const
void SynchronizationDone()
int64_t upper_bound() const
void set_assignment_preference(const std::vector< bool > &a)
const BopParameters & GetParameters() const
bool IsInfeasible() const
double GetScaledLowerBound() const
SharedTimeLimit * time_limit
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