Skip to content

Commit c270926

Browse files
committed
tweak search in fz and opb competition mode
1 parent bade22e commit c270926

3 files changed

Lines changed: 11 additions & 1 deletion

File tree

ortools/flatzinc/cp_model_fz_solver.cc

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@
4747

4848
ABSL_FLAG(int64_t, fz_int_max, int64_t{1} << 40,
4949
"Default max value for unbounded integer variables.");
50+
ABSL_FLAG(bool, force_interleave_search, false,
51+
"If true, enable interleaved workers when num_workers is 1.");
5052

5153
namespace operations_research {
5254
namespace sat {
@@ -1683,7 +1685,8 @@ void SolveFzWithCpModelProto(const fz::Model& fz_model,
16831685
m.parameters.set_keep_all_feasible_solutions_in_presolve(true);
16841686
} else if (num_workers == 1 && p.use_free_search) { // Free search.
16851687
m.parameters.set_search_branching(SatParameters::AUTOMATIC_SEARCH);
1686-
if (!p.search_all_solutions && p.ortools_mode) {
1688+
if (!p.search_all_solutions &&
1689+
(absl::GetFlag(FLAGS_force_interleave_search) || p.ortools_mode)) {
16871690
m.parameters.set_interleave_search(true);
16881691
m.parameters.set_use_rins_lns(false);
16891692
m.parameters.add_subsolvers("default_lp");

ortools/flatzinc/fz.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
#include "absl/flags/flag.h"
3030
#include "absl/log/check.h"
31+
3132
#include "absl/log/initialize.h"
3233
#include "absl/log/log.h"
3334
#include "absl/strings/match.h"

ortools/sat/sat_runner.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,12 @@ bool LoadProblem(const std::string& filename, absl::string_view hint_file,
222222
if (absl::GetFlag(FLAGS_force_interleave_search)) {
223223
SetInterleavedWorkers(parameters);
224224
}
225+
if (parameters->num_workers() >= 2 && parameters->num_workers() <= 15) {
226+
// Works better without symmetries in search
227+
// TODO(user): Investigate.
228+
parameters->add_ignore_subsolvers("max_lp_sym");
229+
parameters->add_extra_subsolvers("max_lp");
230+
}
225231
} else if (absl::EndsWith(filename, ".cnf") ||
226232
absl::EndsWith(filename, ".cnf.xz") ||
227233
absl::EndsWith(filename, ".cnf.gz") ||

0 commit comments

Comments
 (0)