14#ifndef ORTOOLS_BOP_BOP_BASE_H_
15#define ORTOOLS_BOP_BOP_BASE_H_
23#include "absl/base/thread_annotations.h"
24#include "absl/strings/string_view.h"
25#include "absl/synchronization/mutex.h"
128 parameters_ = parameters;
136 assignment_preference_ = a;
139 return assignment_preference_;
175 return solution_.IsFeasible() && solution_.GetCost() ==
lower_bound();
191 return fixed_values_[var];
194 return fixed_values_;
210 return original_problem_;
222 return (
lower_bound() + original_problem_.objective().offset()) *
223 original_problem_.objective().scaling_factor();
236 int64_t update_stamp_;
241 std::vector<bool> assignment_preference_;
243 int64_t lower_bound_;
244 int64_t upper_bound_;
virtual ~BopOptimizerBase()
BopOptimizerBase(absl::string_view name)
virtual Status Optimize(const BopParameters ¶meters, const ProblemState &problem_state, LearnedInfo *learned_info, TimeLimit *time_limit)=0
virtual bool ShouldBeRun(const ProblemState &problem_state) const =0
const std::string & name() const
static std::string GetStatusString(Status status)
bool IsVariableFixed(VariableIndex var) const
void set_assignment_preference(const std::vector< bool > &a)
int64_t update_stamp() const
const BopSolution & solution() const
void SynchronizationDone()
const util_intops::StrongVector< VariableIndex, bool > & fixed_values() const
void SetParameters(const BopParameters ¶meters)
int64_t lower_bound() const
const std::vector< sat::BinaryClause > & NewlyAddedBinaryClauses() const
LearnedInfo GetLearnedInfo() const
std::vector< bool > assignment_preference() const
bool MergeLearnedInfo(const LearnedInfo &learned_info, BopOptimizerBase::Status optimization_status)
ProblemState(const ProblemState &)=delete
const glop::DenseRow & lp_values() const
ProblemState(const sat::LinearBooleanProblem &problem)
ProblemState & operator=(const ProblemState &)=delete
const BopParameters & GetParameters() const
static const int64_t kInitialStampValue
double GetScaledLowerBound() const
const util_intops::StrongVector< VariableIndex, bool > & is_fixed() const
bool IsInfeasible() const
const sat::LinearBooleanProblem & original_problem() const
bool GetVariableFixedValue(VariableIndex var) const
int64_t upper_bound() const
std::ostream & operator<<(std::ostream &os, BopOptimizerBase::Status status)
StrictITIVector< ColIndex, Fractional > DenseRow
LearnedInfo(const sat::LinearBooleanProblem &problem)
std::vector< sat::BinaryClause > binary_clauses
std::vector< sat::Literal > fixed_literals