14#ifndef OR_TOOLS_BOP_BOP_LNS_H_
15#define OR_TOOLS_BOP_BOP_LNS_H_
50 bool ShouldBeRun(
const ProblemState& problem_state)
const final;
56 const ProblemState& problem_state,
int num_relaxed_vars);
58 int64_t state_update_stamp_;
59 std::unique_ptr<sat::SatSolver> sat_solver_;
112 bool ShouldBeRun(
const ProblemState& problem_state)
const final;
117 const bool use_lp_to_guide_sat_;
118 std::unique_ptr<NeighborhoodGenerator> neighborhood_generator_;
131 absl::BitGenRef random)
132 : objective_terms_(*objective_terms), random_(random) {}
136 void GenerateNeighborhood(
const ProblemState& problem_state,
140 absl::BitGenRef random_;
149 absl::BitGenRef random)
150 : objective_terms_(*objective_terms), random_(random) {}
154 void GenerateNeighborhood(
const ProblemState& problem_state,
158 absl::BitGenRef random_;
167 absl::BitGenRef random);
171 void GenerateNeighborhood(
const ProblemState& problem_state,
178 absl::BitGenRef random_;
A simple class to enforce both an elapsed time limit and a deterministic time limit in the same threa...
~BopAdaptiveLNSOptimizer() final
BopAdaptiveLNSOptimizer(const std::string &name, bool use_lp_to_guide_sat, NeighborhoodGenerator *neighborhood_generator, sat::SatSolver *sat_propagator)
BopCompleteLNSOptimizer(const std::string &name, const BopConstraintTerms &objective_terms)
~BopCompleteLNSOptimizer() final
const std::string & name() const
ConstraintBasedNeighborhood(const BopConstraintTerms *objective_terms, absl::BitGenRef random)
~ConstraintBasedNeighborhood() final
virtual ~NeighborhoodGenerator()
virtual void GenerateNeighborhood(const ProblemState &problem_state, double difficulty, sat::SatSolver *sat_propagator)=0
~ObjectiveBasedNeighborhood() final
ObjectiveBasedNeighborhood(const BopConstraintTerms *objective_terms, absl::BitGenRef random)
RelationGraphBasedNeighborhood(const sat::LinearBooleanProblem &problem, absl::BitGenRef random)
~RelationGraphBasedNeighborhood() final
ModelSharedTimeLimit * time_limit
Collection of objects used to extend the Constraint Solver library.