27 assumptions_already_added_(false) {
29 lower_bound_ = sat::Coefficient(0);
37 if (state_update_stamp_ == problem_state.
update_stamp()) {
55 stratified_lower_bound_ = sat::Coefficient(0);
57 stratified_lower_bound_ =
std::max(stratified_lower_bound_, n->weight());
69 const std::vector<sat::Literal> assumptions =
71 stratified_lower_bound_,
72 &lower_bound_, &nodes_, &solver_);
86 CHECK(learned_info !=
nullptr);
88 learned_info->
Clear();
91 SynchronizeIfNeeded(problem_state);
96 int64 conflict_limit =
parameters.max_number_of_conflicts_in_random_lns();
99 sat::SatParameters sat_params = solver_.
parameters();
100 sat_params.set_max_time_in_seconds(
time_limit->GetTimeLeft());
101 sat_params.set_max_deterministic_time(
103 sat_params.set_random_seed(
parameters.random_seed());
104 sat_params.set_max_number_of_conflicts(conflict_limit);
109 assumptions_already_added_ ? solver_.
Solve() : SolveWithAssumptions();
111 deterministic_time_at_last_sync);
114 assumptions_already_added_ =
true;
115 conflict_limit -= solver_.
num_failures() - old_num_conflicts;
116 learned_info->
lower_bound = lower_bound_.value() - offset_.value();
130 stratified_lower_bound_ =
135 if (stratified_lower_bound_ > 0) {
136 assumptions_already_added_ =
false;
149 assumptions_already_added_ =
false;