@@ -77,6 +77,8 @@ ABSL_FLAG(bool, fingerprint_intermediate_solutions, false,
7777 " Attach the fingerprint of intermediate solutions to the output." );
7878ABSL_FLAG (bool , competition_mode, false ,
7979 " If true, output the log in a competition format." );
80+ ABSL_FLAG (bool , force_interleave_search, false ,
81+ " If true, enable interleaved workers when num_workers is 1." );
8082
8183namespace operations_research {
8284namespace sat {
@@ -169,6 +171,26 @@ void LogInPbCompetitionFormat(int num_variables, bool has_objective,
169171 final_response_callback);
170172}
171173
174+ void SetInterleavedWorkers (bool has_objective, SatParameters* parameters) {
175+ // Enable interleaved workers when num_workers is 1.
176+ if (parameters->num_workers () == 1 ) {
177+ parameters->set_interleave_search (true );
178+ parameters->set_use_rins_lns (false );
179+ if (has_objective) {
180+ parameters->add_subsolvers (" default_lp" );
181+ parameters->add_subsolvers (" quick_restart" );
182+ parameters->add_subsolvers (" core_or_no_lp" );
183+ parameters->add_subsolvers (" max_lp" );
184+ parameters->set_num_violation_ls (1 );
185+ } else {
186+ parameters->add_subsolvers (" default_lp" );
187+ parameters->add_subsolvers (" no_lp" );
188+ parameters->add_subsolvers (" max_lp" );
189+ parameters->add_subsolvers (" quick_restart" );
190+ }
191+ }
192+ }
193+
172194bool LoadProblem (const std::string& filename, absl::string_view hint_file,
173195 absl::string_view domain_file, CpModelProto* cp_model,
174196 Model* model, SatParameters* parameters) {
@@ -204,6 +226,9 @@ bool LoadProblem(const std::string& filename, absl::string_view hint_file,
204226 LogInPbCompetitionFormat (num_variables, cp_model->has_objective (), model,
205227 parameters);
206228 }
229+ if (absl::GetFlag (FLAGS_force_interleave_search)) {
230+ SetInterleavedWorkers (cp_model->has_objective (), parameters);
231+ }
207232 } else if (absl::EndsWith (filename, " .cnf" ) ||
208233 absl::EndsWith (filename, " .cnf.xz" ) ||
209234 absl::EndsWith (filename, " .cnf.gz" ) ||
0 commit comments