14#ifndef OR_TOOLS_SAT_LB_TREE_SEARCH_H_
15#define OR_TOOLS_SAT_LB_TREE_SEARCH_H_
49 const std::function<
void()>& feasible_solution_observer);
55 Node(
Literal l, IntegerValue lb)
56 :
literal(l), true_objective(lb), false_objective(lb) {}
59 IntegerValue MinObjective()
const {
60 return std::min(true_objective, false_objective);
64 void UpdateObjective(IntegerValue v) {
65 true_objective =
std::max(true_objective, v);
66 false_objective =
std::max(false_objective, v);
68 void UpdateTrueObjective(IntegerValue v) {
69 true_objective =
std::max(true_objective, v);
71 void UpdateFalseObjective(IntegerValue v) {
72 false_objective =
std::max(false_objective, v);
79 IntegerValue true_objective;
80 IntegerValue false_objective;
89 void DebugDisplayTree(
NodeIndex root)
const;
93 void UpdateObjectiveFromParent(
int level);
97 void UpdateParentObjective(
int level);
108 IntegerVariable objective_var_;
115 IntegerValue current_objective_lb_;
121 std::vector<NodeIndex> current_branch_;
126 int64_t num_rc_detected_ = 0;
A simple class to enforce both an elapsed time limit and a deterministic time limit in the same threa...
LbTreeSearch(Model *model)
SatSolver::Status Search(const std::function< void()> &feasible_solution_observer)
Class that owns everything related to a particular optimization model.
Collection of objects used to extend the Constraint Solver library.