Skip to content

Commit 13196ca

Browse files
committed
[CP-SAT] cleanups; tweaks shaving limits
1 parent 311151a commit 13196ca

3 files changed

Lines changed: 13 additions & 12 deletions

File tree

ortools/sat/cp_model_lns_test.cc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -817,10 +817,8 @@ TEST(NeighborhoodGeneratorHelperTest, GetSchedulingPrecedences) {
817817
SharedBoundsManager shared_bounds_manager(proto);
818818

819819
SatParameters params;
820-
Model main_model;
821-
ModelSharedTimeLimit time_limit(&main_model);
822-
auto* shared_response_manager =
823-
main_model.GetOrCreate<SharedResponseManager>();
820+
ModelSharedTimeLimit time_limit(&model);
821+
auto* shared_response_manager = model.GetOrCreate<SharedResponseManager>();
824822
NeighborhoodGeneratorHelper helper(&proto, &params, shared_response_manager,
825823
&time_limit, &shared_bounds_manager);
826824
random_engine_t random;

ortools/sat/cp_model_search.cc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,8 @@ absl::flat_hash_map<std::string, SatParameters> GetNamedParameters(
650650
new_params.set_search_branching(SatParameters::AUTOMATIC_SEARCH);
651651
new_params.set_use_probing_search(true);
652652
new_params.set_at_most_one_max_expansion_size(2);
653+
const double dtime = base_params.shaving_search_deterministic_time();
654+
new_params.set_shaving_search_deterministic_time(0.001);
653655
if (base_params.use_dual_scheduling_heuristics()) {
654656
AddExtraSchedulingPropagators(new_params);
655657
}
@@ -658,8 +660,10 @@ absl::flat_hash_map<std::string, SatParameters> GetNamedParameters(
658660
new_params.set_linearization_level(0);
659661
strategies["probing_no_lp"] = new_params;
660662

661-
new_params.set_linearization_level(2);
663+
// Use the default deterministic time.
664+
new_params.set_shaving_search_deterministic_time(dtime);
662665
// We want to spend more time on the LP here.
666+
new_params.set_linearization_level(2);
663667
new_params.set_add_lp_constraints_lazily(false);
664668
new_params.set_root_lp_iterations(100'000);
665669
strategies["probing_max_lp"] = new_params;

ortools/sat/integer_search.cc

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1921,15 +1921,14 @@ SatSolver::Status ContinuousProber::Probe() {
19211921

19221922
// Adjust the active_limit.
19231923
if (use_shaving_) {
1924-
const double deterministic_time =
1925-
parameters_.shaving_search_deterministic_time();
1924+
const double dtime = parameters_.shaving_search_deterministic_time();
19261925
const bool something_has_been_detected =
19271926
num_bounds_shaved_ != initial_num_bounds_shaved ||
19281927
prober_->num_new_literals_fixed() != initial_num_literals_fixed;
19291928
if (something_has_been_detected) { // Reset the limit.
1930-
active_limit_ = deterministic_time;
1931-
} else if (active_limit_ < 25 * deterministic_time) { // Bump the limit.
1932-
active_limit_ += deterministic_time;
1929+
active_limit_ = dtime;
1930+
} else if (active_limit_ <= 128 * dtime) { // Bump the limit.
1931+
active_limit_ *= 2;
19331932
}
19341933
}
19351934

@@ -2047,8 +2046,8 @@ void ContinuousProber::LogStatistics() {
20472046
shared_response_manager_->LogMessageWithThrottling(
20482047
"Probe",
20492048
absl::StrCat(
2050-
" (iterations=", iteration_,
2051-
" linearization_level=", parameters_.linearization_level(),
2049+
" (iterations=", iteration_, " linearization_level=",
2050+
parameters_.linearization_level(), " active_limit=", active_limit_,
20522051
" shaving=", use_shaving_, " active_bool_vars=", bool_vars_.size(),
20532052
" active_int_vars=", integer_trail_->NumIntegerVariables(),
20542053
" literals fixed/probed=", prober_->num_new_literals_fixed(), "/",

0 commit comments

Comments
 (0)