OR-Tools  9.1
bop_parameters.pb.cc
Go to the documentation of this file.
1 // Generated by the protocol buffer compiler. DO NOT EDIT!
2 // source: ortools/bop/bop_parameters.proto
3 
5 
6 #include <algorithm>
7 
8 #include <google/protobuf/io/coded_stream.h>
9 #include <google/protobuf/extension_set.h>
10 #include <google/protobuf/wire_format_lite.h>
11 #include <google/protobuf/descriptor.h>
12 #include <google/protobuf/generated_message_reflection.h>
13 #include <google/protobuf/reflection_ops.h>
14 #include <google/protobuf/wire_format.h>
15 // @@protoc_insertion_point(includes)
16 #include <google/protobuf/port_def.inc>
17 
18 PROTOBUF_PRAGMA_INIT_SEG
19 namespace operations_research {
20 namespace bop {
22  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
23  : type_(0)
24 {}
27  : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
29  union {
31  };
32 };
33 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT BopOptimizerMethodDefaultTypeInternal _BopOptimizerMethod_default_instance_;
35  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
36  : methods_(){}
39  : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
41  union {
43  };
44 };
47  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
48  : solver_optimizer_sets_()
49  , default_solver_optimizer_sets_(nullptr)
50  , log_search_progress_(false)
51  , prune_search_tree_(false)
52  , sort_constraints_by_num_terms_(false)
53  , use_symmetry_(false)
54  , synchronization_type_(0)
55 
56  , max_number_of_consecutive_failing_optimizer_calls_(0)
57  , exploit_symmetry_in_sat_first_solution_(false)
58  , use_potential_one_flip_repairs_in_ls_(false)
59  , use_lp_strong_branching_(false)
60  , decomposed_problem_min_time_in_seconds_(0)
61  , max_lp_solve_for_feasibility_problems_(0)
62  , max_time_in_seconds_(std::numeric_limits<double>::infinity())
63  , max_num_decisions_in_ls_(4)
64  , random_seed_(8)
65  , num_relaxed_vars_(10)
66  , max_number_of_conflicts_in_random_lns_(2500)
67  , compute_estimated_impact_(true)
68  , use_random_lns_(true)
69  , use_lp_lns_(true)
70  , use_sat_to_choose_lns_neighbourhood_(true)
71  , num_random_lns_tries_(1)
72  , max_number_of_backtracks_in_ls_(int64_t{100000000})
73  , max_number_of_conflicts_for_quick_check_(10)
74  , max_number_of_conflicts_in_random_solution_generation_(500)
75  , max_number_of_explored_assignments_per_try_in_ls_(int64_t{10000})
76  , use_transposition_table_in_ls_(true)
77  , use_learned_binary_clauses_in_lp_(true)
78  , number_of_solvers_(1)
79  , max_deterministic_time_(std::numeric_limits<double>::infinity())
80  , relative_gap_limit_(0.0001)
81  , decomposer_num_variables_threshold_(50)
82  , num_bop_solvers_used_by_decomposition_(1)
83  , guided_sat_conflicts_chunk_(1000)
84  , max_num_broken_constraints_in_ls_(2147483647)
85  , lp_max_deterministic_time_(1){}
88  : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
90  union {
92  };
93 };
94 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT BopParametersDefaultTypeInternal _BopParameters_default_instance_;
95 } // namespace bop
96 } // namespace operations_research
97 static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_ortools_2fbop_2fbop_5fparameters_2eproto[3];
98 static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_ortools_2fbop_2fbop_5fparameters_2eproto[2];
99 static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_ortools_2fbop_2fbop_5fparameters_2eproto = nullptr;
100 
101 const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_ortools_2fbop_2fbop_5fparameters_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
102  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopOptimizerMethod, _has_bits_),
103  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopOptimizerMethod, _internal_metadata_),
104  ~0u, // no _extensions_
105  ~0u, // no _oneof_case_
106  ~0u, // no _weak_field_map_
107  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopOptimizerMethod, type_),
108  0,
109  ~0u, // no _has_bits_
110  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopSolverOptimizerSet, _internal_metadata_),
111  ~0u, // no _extensions_
112  ~0u, // no _oneof_case_
113  ~0u, // no _weak_field_map_
114  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopSolverOptimizerSet, methods_),
115  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, _has_bits_),
116  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, _internal_metadata_),
117  ~0u, // no _extensions_
118  ~0u, // no _oneof_case_
119  ~0u, // no _weak_field_map_
120  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_time_in_seconds_),
121  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_deterministic_time_),
122  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, lp_max_deterministic_time_),
123  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_number_of_consecutive_failing_optimizer_calls_),
124  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, relative_gap_limit_),
125  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_num_decisions_in_ls_),
126  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_num_broken_constraints_in_ls_),
127  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, log_search_progress_),
128  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, compute_estimated_impact_),
129  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, prune_search_tree_),
130  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, sort_constraints_by_num_terms_),
131  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, use_random_lns_),
132  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, random_seed_),
133  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, num_relaxed_vars_),
134  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_number_of_conflicts_in_random_lns_),
135  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, num_random_lns_tries_),
136  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_number_of_backtracks_in_ls_),
137  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, use_lp_lns_),
138  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, use_sat_to_choose_lns_neighbourhood_),
139  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_number_of_conflicts_for_quick_check_),
140  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, use_symmetry_),
141  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, exploit_symmetry_in_sat_first_solution_),
142  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_number_of_conflicts_in_random_solution_generation_),
143  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_number_of_explored_assignments_per_try_in_ls_),
144  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, use_transposition_table_in_ls_),
145  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, use_potential_one_flip_repairs_in_ls_),
146  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, use_learned_binary_clauses_in_lp_),
147  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, number_of_solvers_),
148  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, synchronization_type_),
149  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, solver_optimizer_sets_),
150  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, default_solver_optimizer_sets_),
151  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, use_lp_strong_branching_),
152  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, decomposer_num_variables_threshold_),
153  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, num_bop_solvers_used_by_decomposition_),
154  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, decomposed_problem_min_time_in_seconds_),
155  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, guided_sat_conflicts_chunk_),
156  PROTOBUF_FIELD_OFFSET(::operations_research::bop::BopParameters, max_lp_solve_for_feasibility_problems_),
157  12,
158  29,
159  35,
160  6,
161  30,
162  13,
163  34,
164  1,
165  17,
166  2,
167  3,
168  18,
169  14,
170  15,
171  16,
172  21,
173  22,
174  19,
175  20,
176  23,
177  4,
178  7,
179  24,
180  25,
181  26,
182  8,
183  27,
184  28,
185  5,
186  ~0u,
187  0,
188  9,
189  31,
190  32,
191  10,
192  33,
193  11,
194 };
195 static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
199 };
200 
201 static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
202  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::operations_research::bop::_BopOptimizerMethod_default_instance_),
203  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::operations_research::bop::_BopSolverOptimizerSet_default_instance_),
204  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::operations_research::bop::_BopParameters_default_instance_),
205 };
206 
207 const char descriptor_table_protodef_ortools_2fbop_2fbop_5fparameters_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
208  "\n ortools/bop/bop_parameters.proto\022\027oper"
209  "ations_research.bop\"\204\004\n\022BopOptimizerMeth"
210  "od\022G\n\004type\030\001 \001(\01629.operations_research.b"
211  "op.BopOptimizerMethod.OptimizerType\"\244\003\n\r"
212  "OptimizerType\022\022\n\016SAT_CORE_BASED\020\000\022\025\n\021SAT"
213  "_LINEAR_SEARCH\020\017\022\025\n\021LINEAR_RELAXATION\020\001\022"
214  "\020\n\014LOCAL_SEARCH\020\002\022\031\n\025RANDOM_FIRST_SOLUTI"
215  "ON\020\003\022\031\n\025RANDOM_CONSTRAINT_LNS\020\004\022\027\n\023RANDO"
216  "M_VARIABLE_LNS\020\005\022\020\n\014COMPLETE_LNS\020\007\022\025\n\021LP"
217  "_FIRST_SOLUTION\020\010\022\034\n\030OBJECTIVE_FIRST_SOL"
218  "UTION\020\t\022\036\n\032USER_GUIDED_FIRST_SOLUTION\020\016\022"
219  "&\n\"RANDOM_CONSTRAINT_LNS_GUIDED_BY_LP\020\013\022"
220  "$\n RANDOM_VARIABLE_LNS_GUIDED_BY_LP\020\014\022\026\n"
221  "\022RELATION_GRAPH_LNS\020\020\022#\n\037RELATION_GRAPH_"
222  "LNS_GUIDED_BY_LP\020\021\"U\n\025BopSolverOptimizer"
223  "Set\022<\n\007methods\030\001 \003(\0132+.operations_resear"
224  "ch.bop.BopOptimizerMethod\"\356\023\n\rBopParamet"
225  "ers\022 \n\023max_time_in_seconds\030\001 \001(\001:\003inf\022#\n"
226  "\026max_deterministic_time\030\033 \001(\001:\003inf\022$\n\031lp"
227  "_max_deterministic_time\030% \001(\001:\0011\0229\n1max_"
228  "number_of_consecutive_failing_optimizer_"
229  "calls\030# \001(\005\022\"\n\022relative_gap_limit\030\034 \001(\001:"
230  "\0060.0001\022\"\n\027max_num_decisions_in_ls\030\002 \001(\005"
231  ":\0014\0224\n max_num_broken_constraints_in_ls\030"
232  "& \001(\005:\n2147483647\022\"\n\023log_search_progress"
233  "\030\016 \001(\010:\005false\022&\n\030compute_estimated_impac"
234  "t\030\003 \001(\010:\004true\022 \n\021prune_search_tree\030\004 \001(\010"
235  ":\005false\022,\n\035sort_constraints_by_num_terms"
236  "\030\005 \001(\010:\005false\022\034\n\016use_random_lns\030\006 \001(\010:\004t"
237  "rue\022\026\n\013random_seed\030\007 \001(\005:\0018\022\034\n\020num_relax"
238  "ed_vars\030\010 \001(\005:\00210\0223\n%max_number_of_confl"
239  "icts_in_random_lns\030\t \001(\005:\0042500\022\037\n\024num_ra"
240  "ndom_lns_tries\030\n \001(\005:\0011\0221\n\036max_number_of"
241  "_backtracks_in_ls\030\013 \001(\003:\t100000000\022\030\n\nus"
242  "e_lp_lns\030\014 \001(\010:\004true\0221\n#use_sat_to_choos"
243  "e_lns_neighbourhood\030\017 \001(\010:\004true\0223\n\'max_n"
244  "umber_of_conflicts_for_quick_check\030\020 \001(\005"
245  ":\00210\022\033\n\014use_symmetry\030\021 \001(\010:\005false\0225\n&exp"
246  "loit_symmetry_in_sat_first_solution\030( \001("
247  "\010:\005false\022B\n5max_number_of_conflicts_in_r"
248  "andom_solution_generation\030\024 \001(\005:\003500\022\?\n0"
249  "max_number_of_explored_assignments_per_t"
250  "ry_in_ls\030\025 \001(\003:\00510000\022+\n\035use_transpositi"
251  "on_table_in_ls\030\026 \001(\010:\004true\0223\n$use_potent"
252  "ial_one_flip_repairs_in_ls\030\' \001(\010:\005false\022"
253  ".\n use_learned_binary_clauses_in_lp\030\027 \001("
254  "\010:\004true\022\034\n\021number_of_solvers\030\030 \001(\005:\0011\022r\n"
255  "\024synchronization_type\030\031 \001(\0162@.operations"
256  "_research.bop.BopParameters.ThreadSynchr"
257  "onizationType:\022NO_SYNCHRONIZATION\022M\n\025sol"
258  "ver_optimizer_sets\030\032 \003(\0132..operations_re"
259  "search.bop.BopSolverOptimizerSet\022\362\005\n\035def"
260  "ault_solver_optimizer_sets\030! \001(\t:\312\005metho"
261  "ds:{type:LOCAL_SEARCH } "
262  " methods:{type:RANDOM_FIRST_SOLUTIO"
263  "N } methods:{type:LINEAR_RE"
264  "LAXATION } methods:{typ"
265  "e:LP_FIRST_SOLUTION } m"
266  "ethods:{type:OBJECTIVE_FIRST_SOLUTION } "
267  " methods:{type:USER_GUIDED_FIRS"
268  "T_SOLUTION } methods:{type:RANDO"
269  "M_CONSTRAINT_LNS_GUIDED_BY_LP } methods:"
270  "{type:RANDOM_VARIABLE_LNS_GUIDED_BY_LP }"
271  " methods:{type:RELATION_GRAPH_LNS } "
272  " methods:{type:RELATION_GRA"
273  "PH_LNS_GUIDED_BY_LP } methods:{type:R"
274  "ANDOM_CONSTRAINT_LNS } meth"
275  "ods:{type:RANDOM_VARIABLE_LNS } "
276  " methods:{type:SAT_CORE_BASED } "
277  " methods:{type:COMPLETE"
278  "_LNS } \022&\n\027use_lp_"
279  "strong_branching\030\035 \001(\010:\005false\022.\n\"decompo"
280  "ser_num_variables_threshold\030\036 \001(\005:\00250\0220\n"
281  "%num_bop_solvers_used_by_decomposition\030\037"
282  " \001(\005:\0011\0221\n&decomposed_problem_min_time_i"
283  "n_seconds\030$ \001(\001:\0010\022(\n\032guided_sat_conflic"
284  "ts_chunk\030\" \001(\005:\0041000\0220\n%max_lp_solve_for"
285  "_feasibility_problems\030) \001(\005:\0010\"b\n\031Thread"
286  "SynchronizationType\022\026\n\022NO_SYNCHRONIZATIO"
287  "N\020\000\022\023\n\017SYNCHRONIZE_ALL\020\001\022\030\n\024SYNCHRONIZE_"
288  "ON_RIGHT\020\002"
289  ;
290 static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_ortools_2fbop_2fbop_5fparameters_2eproto_once;
291 const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_ortools_2fbop_2fbop_5fparameters_2eproto = {
292  false, false, 3210, descriptor_table_protodef_ortools_2fbop_2fbop_5fparameters_2eproto, "ortools/bop/bop_parameters.proto",
296 };
297 PROTOBUF_ATTRIBUTE_WEAK const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* descriptor_table_ortools_2fbop_2fbop_5fparameters_2eproto_getter() {
299 }
300 
301 // Force running AddDescriptors() at dynamic initialization time.
302 PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_ortools_2fbop_2fbop_5fparameters_2eproto(&descriptor_table_ortools_2fbop_2fbop_5fparameters_2eproto);
303 namespace operations_research {
304 namespace bop {
305 const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* BopOptimizerMethod_OptimizerType_descriptor() {
306  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_ortools_2fbop_2fbop_5fparameters_2eproto);
308 }
310  switch (value) {
311  case 0:
312  case 1:
313  case 2:
314  case 3:
315  case 4:
316  case 5:
317  case 7:
318  case 8:
319  case 9:
320  case 11:
321  case 12:
322  case 14:
323  case 15:
324  case 16:
325  case 17:
326  return true;
327  default:
328  return false;
329  }
330 }
331 
332 #if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
351 #endif // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
352 const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* BopParameters_ThreadSynchronizationType_descriptor() {
353  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_ortools_2fbop_2fbop_5fparameters_2eproto);
355 }
357  switch (value) {
358  case 0:
359  case 1:
360  case 2:
361  return true;
362  default:
363  return false;
364  }
365 }
366 
367 #if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
374 #endif // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
375 
376 // ===================================================================
377 
379  public:
380  using HasBits = decltype(std::declval<BopOptimizerMethod>()._has_bits_);
381  static void set_has_type(HasBits* has_bits) {
382  (*has_bits)[0] |= 1u;
383  }
384 };
385 
386 BopOptimizerMethod::BopOptimizerMethod(::PROTOBUF_NAMESPACE_ID::Arena* arena,
387  bool is_message_owned)
388  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
389  SharedCtor();
390  if (!is_message_owned) {
391  RegisterArenaDtor(arena);
392  }
393  // @@protoc_insertion_point(arena_constructor:operations_research.bop.BopOptimizerMethod)
394 }
396  : ::PROTOBUF_NAMESPACE_ID::Message(),
397  _has_bits_(from._has_bits_) {
398  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
399  type_ = from.type_;
400  // @@protoc_insertion_point(copy_constructor:operations_research.bop.BopOptimizerMethod)
401 }
402 
403 inline void BopOptimizerMethod::SharedCtor() {
404 type_ = 0;
405 }
406 
408  // @@protoc_insertion_point(destructor:operations_research.bop.BopOptimizerMethod)
409  if (GetArenaForAllocation() != nullptr) return;
410  SharedDtor();
411  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
412 }
413 
414 inline void BopOptimizerMethod::SharedDtor() {
415  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
416 }
417 
418 void BopOptimizerMethod::ArenaDtor(void* object) {
419  BopOptimizerMethod* _this = reinterpret_cast< BopOptimizerMethod* >(object);
420  (void)_this;
421 }
422 void BopOptimizerMethod::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
423 }
424 void BopOptimizerMethod::SetCachedSize(int size) const {
425  _cached_size_.Set(size);
426 }
427 
429 // @@protoc_insertion_point(message_clear_start:operations_research.bop.BopOptimizerMethod)
430  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
431  // Prevent compiler warnings about cached_has_bits being unused
432  (void) cached_has_bits;
433 
434  type_ = 0;
435  _has_bits_.Clear();
436  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
437 }
438 
439 const char* BopOptimizerMethod::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
440 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
441  _Internal::HasBits has_bits{};
442  while (!ctx->Done(&ptr)) {
443  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
444  ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
445  switch (tag >> 3) {
446  // optional .operations_research.bop.BopOptimizerMethod.OptimizerType type = 1;
447  case 1:
448  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
449  ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
450  CHK_(ptr);
451  if (PROTOBUF_PREDICT_TRUE(::operations_research::bop::BopOptimizerMethod_OptimizerType_IsValid(val))) {
452  _internal_set_type(static_cast<::operations_research::bop::BopOptimizerMethod_OptimizerType>(val));
453  } else {
454  ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(1, val, mutable_unknown_fields());
455  }
456  } else goto handle_unusual;
457  continue;
458  default: {
459  handle_unusual:
460  if ((tag == 0) || ((tag & 7) == 4)) {
461  CHK_(ptr);
462  ctx->SetLastTag(tag);
463  goto success;
464  }
465  ptr = UnknownFieldParse(tag,
466  _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
467  ptr, ctx);
468  CHK_(ptr != nullptr);
469  continue;
470  }
471  } // switch
472  } // while
473 success:
474  _has_bits_.Or(has_bits);
475  return ptr;
476 failure:
477  ptr = nullptr;
478  goto success;
479 #undef CHK_
480 }
481 
482 ::PROTOBUF_NAMESPACE_ID::uint8* BopOptimizerMethod::_InternalSerialize(
483  ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
484  // @@protoc_insertion_point(serialize_to_array_start:operations_research.bop.BopOptimizerMethod)
485  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
486  (void) cached_has_bits;
487 
488  cached_has_bits = _has_bits_[0];
489  // optional .operations_research.bop.BopOptimizerMethod.OptimizerType type = 1;
490  if (cached_has_bits & 0x00000001u) {
491  target = stream->EnsureSpace(target);
492  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
493  1, this->_internal_type(), target);
494  }
495 
496  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
497  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
498  _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
499  }
500  // @@protoc_insertion_point(serialize_to_array_end:operations_research.bop.BopOptimizerMethod)
501  return target;
502 }
503 
505 // @@protoc_insertion_point(message_byte_size_start:operations_research.bop.BopOptimizerMethod)
506  size_t total_size = 0;
507 
508  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
509  // Prevent compiler warnings about cached_has_bits being unused
510  (void) cached_has_bits;
511 
512  // optional .operations_research.bop.BopOptimizerMethod.OptimizerType type = 1;
513  cached_has_bits = _has_bits_[0];
514  if (cached_has_bits & 0x00000001u) {
515  total_size += 1 +
516  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_type());
517  }
518 
519  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
520  return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
521  _internal_metadata_, total_size, &_cached_size_);
522  }
523  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
524  SetCachedSize(cached_size);
525  return total_size;
526 }
527 
528 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData BopOptimizerMethod::_class_data_ = {
529  ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
530  BopOptimizerMethod::MergeImpl
531 };
532 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*BopOptimizerMethod::GetClassData() const { return &_class_data_; }
533 
534 void BopOptimizerMethod::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message*to,
535  const ::PROTOBUF_NAMESPACE_ID::Message&from) {
536  static_cast<BopOptimizerMethod *>(to)->MergeFrom(
537  static_cast<const BopOptimizerMethod &>(from));
538 }
539 
540 
542 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.bop.BopOptimizerMethod)
543  GOOGLE_DCHECK_NE(&from, this);
544  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
545  (void) cached_has_bits;
546 
547  if (from._internal_has_type()) {
548  _internal_set_type(from._internal_type());
549  }
550  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
551 }
552 
554 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.bop.BopOptimizerMethod)
555  if (&from == this) return;
556  Clear();
557  MergeFrom(from);
558 }
559 
561  return true;
562 }
563 
564 void BopOptimizerMethod::InternalSwap(BopOptimizerMethod* other) {
565  using std::swap;
566  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
567  swap(_has_bits_[0], other->_has_bits_[0]);
568  swap(type_, other->type_);
569 }
570 
571 ::PROTOBUF_NAMESPACE_ID::Metadata BopOptimizerMethod::GetMetadata() const {
572  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
575 }
576 
577 // ===================================================================
578 
580  public:
581 };
582 
583 BopSolverOptimizerSet::BopSolverOptimizerSet(::PROTOBUF_NAMESPACE_ID::Arena* arena,
584  bool is_message_owned)
585  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
586  methods_(arena) {
587  SharedCtor();
588  if (!is_message_owned) {
589  RegisterArenaDtor(arena);
590  }
591  // @@protoc_insertion_point(arena_constructor:operations_research.bop.BopSolverOptimizerSet)
592 }
594  : ::PROTOBUF_NAMESPACE_ID::Message(),
595  methods_(from.methods_) {
596  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
597  // @@protoc_insertion_point(copy_constructor:operations_research.bop.BopSolverOptimizerSet)
598 }
599 
600 inline void BopSolverOptimizerSet::SharedCtor() {
601 }
602 
604  // @@protoc_insertion_point(destructor:operations_research.bop.BopSolverOptimizerSet)
605  if (GetArenaForAllocation() != nullptr) return;
606  SharedDtor();
607  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
608 }
609 
610 inline void BopSolverOptimizerSet::SharedDtor() {
611  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
612 }
613 
614 void BopSolverOptimizerSet::ArenaDtor(void* object) {
615  BopSolverOptimizerSet* _this = reinterpret_cast< BopSolverOptimizerSet* >(object);
616  (void)_this;
617 }
618 void BopSolverOptimizerSet::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
619 }
620 void BopSolverOptimizerSet::SetCachedSize(int size) const {
621  _cached_size_.Set(size);
622 }
623 
625 // @@protoc_insertion_point(message_clear_start:operations_research.bop.BopSolverOptimizerSet)
626  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
627  // Prevent compiler warnings about cached_has_bits being unused
628  (void) cached_has_bits;
629 
630  methods_.Clear();
631  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
632 }
633 
634 const char* BopSolverOptimizerSet::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
635 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
636  while (!ctx->Done(&ptr)) {
637  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
638  ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
639  switch (tag >> 3) {
640  // repeated .operations_research.bop.BopOptimizerMethod methods = 1;
641  case 1:
642  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
643  ptr -= 1;
644  do {
645  ptr += 1;
646  ptr = ctx->ParseMessage(_internal_add_methods(), ptr);
647  CHK_(ptr);
648  if (!ctx->DataAvailable(ptr)) break;
649  } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
650  } else goto handle_unusual;
651  continue;
652  default: {
653  handle_unusual:
654  if ((tag == 0) || ((tag & 7) == 4)) {
655  CHK_(ptr);
656  ctx->SetLastTag(tag);
657  goto success;
658  }
659  ptr = UnknownFieldParse(tag,
660  _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
661  ptr, ctx);
662  CHK_(ptr != nullptr);
663  continue;
664  }
665  } // switch
666  } // while
667 success:
668  return ptr;
669 failure:
670  ptr = nullptr;
671  goto success;
672 #undef CHK_
673 }
674 
675 ::PROTOBUF_NAMESPACE_ID::uint8* BopSolverOptimizerSet::_InternalSerialize(
676  ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
677  // @@protoc_insertion_point(serialize_to_array_start:operations_research.bop.BopSolverOptimizerSet)
678  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
679  (void) cached_has_bits;
680 
681  // repeated .operations_research.bop.BopOptimizerMethod methods = 1;
682  for (unsigned int i = 0,
683  n = static_cast<unsigned int>(this->_internal_methods_size()); i < n; i++) {
684  target = stream->EnsureSpace(target);
685  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
686  InternalWriteMessage(1, this->_internal_methods(i), target, stream);
687  }
688 
689  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
690  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
691  _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
692  }
693  // @@protoc_insertion_point(serialize_to_array_end:operations_research.bop.BopSolverOptimizerSet)
694  return target;
695 }
696 
698 // @@protoc_insertion_point(message_byte_size_start:operations_research.bop.BopSolverOptimizerSet)
699  size_t total_size = 0;
700 
701  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
702  // Prevent compiler warnings about cached_has_bits being unused
703  (void) cached_has_bits;
704 
705  // repeated .operations_research.bop.BopOptimizerMethod methods = 1;
706  total_size += 1UL * this->_internal_methods_size();
707  for (const auto& msg : this->methods_) {
708  total_size +=
709  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
710  }
711 
712  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
713  return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
714  _internal_metadata_, total_size, &_cached_size_);
715  }
716  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
717  SetCachedSize(cached_size);
718  return total_size;
719 }
720 
721 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData BopSolverOptimizerSet::_class_data_ = {
722  ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
723  BopSolverOptimizerSet::MergeImpl
724 };
725 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*BopSolverOptimizerSet::GetClassData() const { return &_class_data_; }
726 
727 void BopSolverOptimizerSet::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message*to,
728  const ::PROTOBUF_NAMESPACE_ID::Message&from) {
729  static_cast<BopSolverOptimizerSet *>(to)->MergeFrom(
730  static_cast<const BopSolverOptimizerSet &>(from));
731 }
732 
733 
735 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.bop.BopSolverOptimizerSet)
736  GOOGLE_DCHECK_NE(&from, this);
737  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
738  (void) cached_has_bits;
739 
740  methods_.MergeFrom(from.methods_);
741  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
742 }
743 
745 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.bop.BopSolverOptimizerSet)
746  if (&from == this) return;
747  Clear();
748  MergeFrom(from);
749 }
750 
752  return true;
753 }
754 
755 void BopSolverOptimizerSet::InternalSwap(BopSolverOptimizerSet* other) {
756  using std::swap;
757  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
758  methods_.InternalSwap(&other->methods_);
759 }
760 
761 ::PROTOBUF_NAMESPACE_ID::Metadata BopSolverOptimizerSet::GetMetadata() const {
762  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
765 }
766 
767 // ===================================================================
768 
770  public:
771  using HasBits = decltype(std::declval<BopParameters>()._has_bits_);
772  static void set_has_max_time_in_seconds(HasBits* has_bits) {
773  (*has_bits)[0] |= 4096u;
774  }
775  static void set_has_max_deterministic_time(HasBits* has_bits) {
776  (*has_bits)[0] |= 536870912u;
777  }
779  (*has_bits)[1] |= 8u;
780  }
782  (*has_bits)[0] |= 64u;
783  }
784  static void set_has_relative_gap_limit(HasBits* has_bits) {
785  (*has_bits)[0] |= 1073741824u;
786  }
787  static void set_has_max_num_decisions_in_ls(HasBits* has_bits) {
788  (*has_bits)[0] |= 8192u;
789  }
791  (*has_bits)[1] |= 4u;
792  }
793  static void set_has_log_search_progress(HasBits* has_bits) {
794  (*has_bits)[0] |= 2u;
795  }
796  static void set_has_compute_estimated_impact(HasBits* has_bits) {
797  (*has_bits)[0] |= 131072u;
798  }
799  static void set_has_prune_search_tree(HasBits* has_bits) {
800  (*has_bits)[0] |= 4u;
801  }
803  (*has_bits)[0] |= 8u;
804  }
805  static void set_has_use_random_lns(HasBits* has_bits) {
806  (*has_bits)[0] |= 262144u;
807  }
808  static void set_has_random_seed(HasBits* has_bits) {
809  (*has_bits)[0] |= 16384u;
810  }
811  static void set_has_num_relaxed_vars(HasBits* has_bits) {
812  (*has_bits)[0] |= 32768u;
813  }
815  (*has_bits)[0] |= 65536u;
816  }
817  static void set_has_num_random_lns_tries(HasBits* has_bits) {
818  (*has_bits)[0] |= 2097152u;
819  }
821  (*has_bits)[0] |= 4194304u;
822  }
823  static void set_has_use_lp_lns(HasBits* has_bits) {
824  (*has_bits)[0] |= 524288u;
825  }
827  (*has_bits)[0] |= 1048576u;
828  }
830  (*has_bits)[0] |= 8388608u;
831  }
832  static void set_has_use_symmetry(HasBits* has_bits) {
833  (*has_bits)[0] |= 16u;
834  }
836  (*has_bits)[0] |= 128u;
837  }
839  (*has_bits)[0] |= 16777216u;
840  }
842  (*has_bits)[0] |= 33554432u;
843  }
845  (*has_bits)[0] |= 67108864u;
846  }
848  (*has_bits)[0] |= 256u;
849  }
851  (*has_bits)[0] |= 134217728u;
852  }
853  static void set_has_number_of_solvers(HasBits* has_bits) {
854  (*has_bits)[0] |= 268435456u;
855  }
856  static void set_has_synchronization_type(HasBits* has_bits) {
857  (*has_bits)[0] |= 32u;
858  }
860  (*has_bits)[0] |= 1u;
861  }
862  static void set_has_use_lp_strong_branching(HasBits* has_bits) {
863  (*has_bits)[0] |= 512u;
864  }
866  (*has_bits)[0] |= 2147483648u;
867  }
869  (*has_bits)[1] |= 1u;
870  }
872  (*has_bits)[0] |= 1024u;
873  }
875  (*has_bits)[1] |= 2u;
876  }
878  (*has_bits)[0] |= 2048u;
879  }
880 };
881 
882 const ::PROTOBUF_NAMESPACE_ID::internal::LazyString BopParameters::_i_give_permission_to_break_this_code_default_default_solver_optimizer_sets_{{{"methods:{type:LOCAL_SEARCH } methods:{type:RANDOM_FIRST_SOLUTION } methods:{type:LINEAR_RELAXATION } methods:{type:LP_FIRST_SOLUTION } methods:{type:OBJECTIVE_FIRST_SOLUTION } methods:{type:USER_GUIDED_FIRST_SOLUTION } methods:{type:RANDOM_CONSTRAINT_LNS_GUIDED_BY_LP } methods:{type:RANDOM_VARIABLE_LNS_GUIDED_BY_LP } methods:{type:RELATION_GRAPH_LNS } methods:{type:RELATION_GRAPH_LNS_GUIDED_BY_LP } methods:{type:RANDOM_CONSTRAINT_LNS } methods:{type:RANDOM_VARIABLE_LNS } methods:{type:SAT_CORE_BASED } methods:{type:COMPLETE_LNS } ", 714}}, {nullptr}};
883 BopParameters::BopParameters(::PROTOBUF_NAMESPACE_ID::Arena* arena,
884  bool is_message_owned)
885  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned),
886  solver_optimizer_sets_(arena) {
887  SharedCtor();
888  if (!is_message_owned) {
889  RegisterArenaDtor(arena);
890  }
891  // @@protoc_insertion_point(arena_constructor:operations_research.bop.BopParameters)
892 }
894  : ::PROTOBUF_NAMESPACE_ID::Message(),
895  _has_bits_(from._has_bits_),
896  solver_optimizer_sets_(from.solver_optimizer_sets_) {
897  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
898  default_solver_optimizer_sets_.UnsafeSetDefault(nullptr);
899  if (from._internal_has_default_solver_optimizer_sets()) {
900  default_solver_optimizer_sets_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::NonEmptyDefault{}, from._internal_default_solver_optimizer_sets(),
901  GetArenaForAllocation());
902  }
903  ::memcpy(&log_search_progress_, &from.log_search_progress_,
904  static_cast<size_t>(reinterpret_cast<char*>(&lp_max_deterministic_time_) -
905  reinterpret_cast<char*>(&log_search_progress_)) + sizeof(lp_max_deterministic_time_));
906  // @@protoc_insertion_point(copy_constructor:operations_research.bop.BopParameters)
907 }
908 
909 inline void BopParameters::SharedCtor() {
910 default_solver_optimizer_sets_.UnsafeSetDefault(nullptr);
911 ::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
912  reinterpret_cast<char*>(&log_search_progress_) - reinterpret_cast<char*>(this)),
913  0, static_cast<size_t>(reinterpret_cast<char*>(&max_lp_solve_for_feasibility_problems_) -
914  reinterpret_cast<char*>(&log_search_progress_)) + sizeof(max_lp_solve_for_feasibility_problems_));
915 max_time_in_seconds_ = std::numeric_limits<double>::infinity();
916 max_num_decisions_in_ls_ = 4;
917 random_seed_ = 8;
918 num_relaxed_vars_ = 10;
919 max_number_of_conflicts_in_random_lns_ = 2500;
920 compute_estimated_impact_ = true;
921 use_random_lns_ = true;
922 use_lp_lns_ = true;
923 use_sat_to_choose_lns_neighbourhood_ = true;
924 num_random_lns_tries_ = 1;
925 max_number_of_backtracks_in_ls_ = int64_t{100000000};
926 max_number_of_conflicts_for_quick_check_ = 10;
927 max_number_of_conflicts_in_random_solution_generation_ = 500;
928 max_number_of_explored_assignments_per_try_in_ls_ = int64_t{10000};
929 use_transposition_table_in_ls_ = true;
930 use_learned_binary_clauses_in_lp_ = true;
931 number_of_solvers_ = 1;
932 max_deterministic_time_ = std::numeric_limits<double>::infinity();
933 relative_gap_limit_ = 0.0001;
934 decomposer_num_variables_threshold_ = 50;
935 num_bop_solvers_used_by_decomposition_ = 1;
936 guided_sat_conflicts_chunk_ = 1000;
937 max_num_broken_constraints_in_ls_ = 2147483647;
938 lp_max_deterministic_time_ = 1;
939 }
940 
942  // @@protoc_insertion_point(destructor:operations_research.bop.BopParameters)
943  if (GetArenaForAllocation() != nullptr) return;
944  SharedDtor();
945  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
946 }
947 
948 inline void BopParameters::SharedDtor() {
949  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
950  default_solver_optimizer_sets_.DestroyNoArena(nullptr);
951 }
952 
953 void BopParameters::ArenaDtor(void* object) {
954  BopParameters* _this = reinterpret_cast< BopParameters* >(object);
955  (void)_this;
956 }
957 void BopParameters::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
958 }
959 void BopParameters::SetCachedSize(int size) const {
960  _cached_size_.Set(size);
961 }
962 
964 // @@protoc_insertion_point(message_clear_start:operations_research.bop.BopParameters)
965  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
966  // Prevent compiler warnings about cached_has_bits being unused
967  (void) cached_has_bits;
968 
969  solver_optimizer_sets_.Clear();
970  cached_has_bits = _has_bits_[0];
971  if (cached_has_bits & 0x00000001u) {
972  default_solver_optimizer_sets_.ClearToDefault(::operations_research::bop::BopParameters::_i_give_permission_to_break_this_code_default_default_solver_optimizer_sets_, GetArenaForAllocation());
973  }
974  if (cached_has_bits & 0x000000feu) {
975  ::memset(&log_search_progress_, 0, static_cast<size_t>(
976  reinterpret_cast<char*>(&exploit_symmetry_in_sat_first_solution_) -
977  reinterpret_cast<char*>(&log_search_progress_)) + sizeof(exploit_symmetry_in_sat_first_solution_));
978  }
979  if (cached_has_bits & 0x0000ff00u) {
980  ::memset(&use_potential_one_flip_repairs_in_ls_, 0, static_cast<size_t>(
981  reinterpret_cast<char*>(&max_lp_solve_for_feasibility_problems_) -
982  reinterpret_cast<char*>(&use_potential_one_flip_repairs_in_ls_)) + sizeof(max_lp_solve_for_feasibility_problems_));
983  max_time_in_seconds_ = std::numeric_limits<double>::infinity();
984  max_num_decisions_in_ls_ = 4;
985  random_seed_ = 8;
986  num_relaxed_vars_ = 10;
987  }
988  if (cached_has_bits & 0x00ff0000u) {
989  max_number_of_conflicts_in_random_lns_ = 2500;
990  compute_estimated_impact_ = true;
991  use_random_lns_ = true;
992  use_lp_lns_ = true;
993  use_sat_to_choose_lns_neighbourhood_ = true;
994  num_random_lns_tries_ = 1;
995  max_number_of_backtracks_in_ls_ = int64_t{100000000};
996  max_number_of_conflicts_for_quick_check_ = 10;
997  }
998  if (cached_has_bits & 0xff000000u) {
999  max_number_of_conflicts_in_random_solution_generation_ = 500;
1000  max_number_of_explored_assignments_per_try_in_ls_ = int64_t{10000};
1001  use_transposition_table_in_ls_ = true;
1002  use_learned_binary_clauses_in_lp_ = true;
1003  number_of_solvers_ = 1;
1004  max_deterministic_time_ = std::numeric_limits<double>::infinity();
1005  relative_gap_limit_ = 0.0001;
1006  decomposer_num_variables_threshold_ = 50;
1007  }
1008  cached_has_bits = _has_bits_[1];
1009  if (cached_has_bits & 0x0000000fu) {
1010  num_bop_solvers_used_by_decomposition_ = 1;
1011  guided_sat_conflicts_chunk_ = 1000;
1012  max_num_broken_constraints_in_ls_ = 2147483647;
1013  lp_max_deterministic_time_ = 1;
1014  }
1015  _has_bits_.Clear();
1016  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
1017 }
1018 
1019 const char* BopParameters::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
1020 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
1021  while (!ctx->Done(&ptr)) {
1022  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
1023  ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
1024  switch (tag >> 3) {
1025  // optional double max_time_in_seconds = 1 [default = inf];
1026  case 1:
1027  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 9)) {
1029  max_time_in_seconds_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
1030  ptr += sizeof(double);
1031  } else goto handle_unusual;
1032  continue;
1033  // optional int32 max_num_decisions_in_ls = 2 [default = 4];
1034  case 2:
1035  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
1037  max_num_decisions_in_ls_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1038  CHK_(ptr);
1039  } else goto handle_unusual;
1040  continue;
1041  // optional bool compute_estimated_impact = 3 [default = true];
1042  case 3:
1043  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
1045  compute_estimated_impact_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1046  CHK_(ptr);
1047  } else goto handle_unusual;
1048  continue;
1049  // optional bool prune_search_tree = 4 [default = false];
1050  case 4:
1051  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
1053  prune_search_tree_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1054  CHK_(ptr);
1055  } else goto handle_unusual;
1056  continue;
1057  // optional bool sort_constraints_by_num_terms = 5 [default = false];
1058  case 5:
1059  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
1061  sort_constraints_by_num_terms_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1062  CHK_(ptr);
1063  } else goto handle_unusual;
1064  continue;
1065  // optional bool use_random_lns = 6 [default = true];
1066  case 6:
1067  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
1068  _Internal::set_has_use_random_lns(&_has_bits_);
1069  use_random_lns_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1070  CHK_(ptr);
1071  } else goto handle_unusual;
1072  continue;
1073  // optional int32 random_seed = 7 [default = 8];
1074  case 7:
1075  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
1076  _Internal::set_has_random_seed(&_has_bits_);
1077  random_seed_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1078  CHK_(ptr);
1079  } else goto handle_unusual;
1080  continue;
1081  // optional int32 num_relaxed_vars = 8 [default = 10];
1082  case 8:
1083  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) {
1085  num_relaxed_vars_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1086  CHK_(ptr);
1087  } else goto handle_unusual;
1088  continue;
1089  // optional int32 max_number_of_conflicts_in_random_lns = 9 [default = 2500];
1090  case 9:
1091  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) {
1093  max_number_of_conflicts_in_random_lns_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1094  CHK_(ptr);
1095  } else goto handle_unusual;
1096  continue;
1097  // optional int32 num_random_lns_tries = 10 [default = 1];
1098  case 10:
1099  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) {
1101  num_random_lns_tries_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1102  CHK_(ptr);
1103  } else goto handle_unusual;
1104  continue;
1105  // optional int64 max_number_of_backtracks_in_ls = 11 [default = 100000000];
1106  case 11:
1107  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) {
1109  max_number_of_backtracks_in_ls_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1110  CHK_(ptr);
1111  } else goto handle_unusual;
1112  continue;
1113  // optional bool use_lp_lns = 12 [default = true];
1114  case 12:
1115  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 96)) {
1116  _Internal::set_has_use_lp_lns(&_has_bits_);
1117  use_lp_lns_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1118  CHK_(ptr);
1119  } else goto handle_unusual;
1120  continue;
1121  // optional bool log_search_progress = 14 [default = false];
1122  case 14:
1123  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 112)) {
1125  log_search_progress_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1126  CHK_(ptr);
1127  } else goto handle_unusual;
1128  continue;
1129  // optional bool use_sat_to_choose_lns_neighbourhood = 15 [default = true];
1130  case 15:
1131  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 120)) {
1133  use_sat_to_choose_lns_neighbourhood_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1134  CHK_(ptr);
1135  } else goto handle_unusual;
1136  continue;
1137  // optional int32 max_number_of_conflicts_for_quick_check = 16 [default = 10];
1138  case 16:
1139  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 128)) {
1141  max_number_of_conflicts_for_quick_check_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1142  CHK_(ptr);
1143  } else goto handle_unusual;
1144  continue;
1145  // optional bool use_symmetry = 17 [default = false];
1146  case 17:
1147  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 136)) {
1148  _Internal::set_has_use_symmetry(&_has_bits_);
1149  use_symmetry_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1150  CHK_(ptr);
1151  } else goto handle_unusual;
1152  continue;
1153  // optional int32 max_number_of_conflicts_in_random_solution_generation = 20 [default = 500];
1154  case 20:
1155  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 160)) {
1157  max_number_of_conflicts_in_random_solution_generation_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1158  CHK_(ptr);
1159  } else goto handle_unusual;
1160  continue;
1161  // optional int64 max_number_of_explored_assignments_per_try_in_ls = 21 [default = 10000];
1162  case 21:
1163  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 168)) {
1165  max_number_of_explored_assignments_per_try_in_ls_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1166  CHK_(ptr);
1167  } else goto handle_unusual;
1168  continue;
1169  // optional bool use_transposition_table_in_ls = 22 [default = true];
1170  case 22:
1171  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 176)) {
1173  use_transposition_table_in_ls_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1174  CHK_(ptr);
1175  } else goto handle_unusual;
1176  continue;
1177  // optional bool use_learned_binary_clauses_in_lp = 23 [default = true];
1178  case 23:
1179  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 184)) {
1181  use_learned_binary_clauses_in_lp_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1182  CHK_(ptr);
1183  } else goto handle_unusual;
1184  continue;
1185  // optional int32 number_of_solvers = 24 [default = 1];
1186  case 24:
1187  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 192)) {
1189  number_of_solvers_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1190  CHK_(ptr);
1191  } else goto handle_unusual;
1192  continue;
1193  // optional .operations_research.bop.BopParameters.ThreadSynchronizationType synchronization_type = 25 [default = NO_SYNCHRONIZATION];
1194  case 25:
1195  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 200)) {
1196  ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1197  CHK_(ptr);
1199  _internal_set_synchronization_type(static_cast<::operations_research::bop::BopParameters_ThreadSynchronizationType>(val));
1200  } else {
1201  ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(25, val, mutable_unknown_fields());
1202  }
1203  } else goto handle_unusual;
1204  continue;
1205  // repeated .operations_research.bop.BopSolverOptimizerSet solver_optimizer_sets = 26;
1206  case 26:
1207  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) {
1208  ptr -= 2;
1209  do {
1210  ptr += 2;
1211  ptr = ctx->ParseMessage(_internal_add_solver_optimizer_sets(), ptr);
1212  CHK_(ptr);
1213  if (!ctx->DataAvailable(ptr)) break;
1214  } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<210>(ptr));
1215  } else goto handle_unusual;
1216  continue;
1217  // optional double max_deterministic_time = 27 [default = inf];
1218  case 27:
1219  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 217)) {
1221  max_deterministic_time_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
1222  ptr += sizeof(double);
1223  } else goto handle_unusual;
1224  continue;
1225  // optional double relative_gap_limit = 28 [default = 0.0001];
1226  case 28:
1227  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 225)) {
1229  relative_gap_limit_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
1230  ptr += sizeof(double);
1231  } else goto handle_unusual;
1232  continue;
1233  // optional bool use_lp_strong_branching = 29 [default = false];
1234  case 29:
1235  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 232)) {
1237  use_lp_strong_branching_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1238  CHK_(ptr);
1239  } else goto handle_unusual;
1240  continue;
1241  // optional int32 decomposer_num_variables_threshold = 30 [default = 50];
1242  case 30:
1243  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 240)) {
1245  decomposer_num_variables_threshold_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1246  CHK_(ptr);
1247  } else goto handle_unusual;
1248  continue;
1249  // optional int32 num_bop_solvers_used_by_decomposition = 31 [default = 1];
1250  case 31:
1251  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 248)) {
1253  num_bop_solvers_used_by_decomposition_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1254  CHK_(ptr);
1255  } else goto handle_unusual;
1256  continue;
1257  // optional string default_solver_optimizer_sets = 33 [default = "methods:{type:LOCAL_SEARCH } methods:{type:RANDOM_FIRST_SOLUTION } methods:{type:LINEAR_RELAXATION } methods:{type:LP_FIRST_SOLUTION } methods:{type:OBJECTIVE_FIRST_SOLUTION } methods:{type:USER_GUIDED_FIRST_SOLUTION } methods:{type:RANDOM_CONSTRAINT_LNS_GUIDED_BY_LP } methods:{type:RANDOM_VARIABLE_LNS_GUIDED_BY_LP } methods:{type:RELATION_GRAPH_LNS } methods:{type:RELATION_GRAPH_LNS_GUIDED_BY_LP } methods:{type:RANDOM_CONSTRAINT_LNS } methods:{type:RANDOM_VARIABLE_LNS } methods:{type:SAT_CORE_BASED } methods:{type:COMPLETE_LNS } "];
1258  case 33:
1259  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
1260  auto str = _internal_mutable_default_solver_optimizer_sets();
1261  ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
1262  #ifndef NDEBUG
1263  ::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "operations_research.bop.BopParameters.default_solver_optimizer_sets");
1264  #endif // !NDEBUG
1265  CHK_(ptr);
1266  } else goto handle_unusual;
1267  continue;
1268  // optional int32 guided_sat_conflicts_chunk = 34 [default = 1000];
1269  case 34:
1270  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
1272  guided_sat_conflicts_chunk_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1273  CHK_(ptr);
1274  } else goto handle_unusual;
1275  continue;
1276  // optional int32 max_number_of_consecutive_failing_optimizer_calls = 35;
1277  case 35:
1278  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
1280  max_number_of_consecutive_failing_optimizer_calls_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1281  CHK_(ptr);
1282  } else goto handle_unusual;
1283  continue;
1284  // optional double decomposed_problem_min_time_in_seconds = 36 [default = 0];
1285  case 36:
1286  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 33)) {
1288  decomposed_problem_min_time_in_seconds_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
1289  ptr += sizeof(double);
1290  } else goto handle_unusual;
1291  continue;
1292  // optional double lp_max_deterministic_time = 37 [default = 1];
1293  case 37:
1294  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 41)) {
1296  lp_max_deterministic_time_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
1297  ptr += sizeof(double);
1298  } else goto handle_unusual;
1299  continue;
1300  // optional int32 max_num_broken_constraints_in_ls = 38 [default = 2147483647];
1301  case 38:
1302  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
1304  max_num_broken_constraints_in_ls_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1305  CHK_(ptr);
1306  } else goto handle_unusual;
1307  continue;
1308  // optional bool use_potential_one_flip_repairs_in_ls = 39 [default = false];
1309  case 39:
1310  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
1312  use_potential_one_flip_repairs_in_ls_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1313  CHK_(ptr);
1314  } else goto handle_unusual;
1315  continue;
1316  // optional bool exploit_symmetry_in_sat_first_solution = 40 [default = false];
1317  case 40:
1318  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) {
1320  exploit_symmetry_in_sat_first_solution_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1321  CHK_(ptr);
1322  } else goto handle_unusual;
1323  continue;
1324  // optional int32 max_lp_solve_for_feasibility_problems = 41 [default = 0];
1325  case 41:
1326  if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) {
1328  max_lp_solve_for_feasibility_problems_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1329  CHK_(ptr);
1330  } else goto handle_unusual;
1331  continue;
1332  default: {
1333  handle_unusual:
1334  if ((tag == 0) || ((tag & 7) == 4)) {
1335  CHK_(ptr);
1336  ctx->SetLastTag(tag);
1337  goto success;
1338  }
1339  ptr = UnknownFieldParse(tag,
1340  _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
1341  ptr, ctx);
1342  CHK_(ptr != nullptr);
1343  continue;
1344  }
1345  } // switch
1346  } // while
1347 success:
1348  return ptr;
1349 failure:
1350  ptr = nullptr;
1351  goto success;
1352 #undef CHK_
1353 }
1354 
1355 ::PROTOBUF_NAMESPACE_ID::uint8* BopParameters::_InternalSerialize(
1356  ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
1357  // @@protoc_insertion_point(serialize_to_array_start:operations_research.bop.BopParameters)
1358  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
1359  (void) cached_has_bits;
1360 
1361  cached_has_bits = _has_bits_[0];
1362  // optional double max_time_in_seconds = 1 [default = inf];
1363  if (cached_has_bits & 0x00001000u) {
1364  target = stream->EnsureSpace(target);
1365  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(1, this->_internal_max_time_in_seconds(), target);
1366  }
1367 
1368  // optional int32 max_num_decisions_in_ls = 2 [default = 4];
1369  if (cached_has_bits & 0x00002000u) {
1370  target = stream->EnsureSpace(target);
1371  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(2, this->_internal_max_num_decisions_in_ls(), target);
1372  }
1373 
1374  // optional bool compute_estimated_impact = 3 [default = true];
1375  if (cached_has_bits & 0x00020000u) {
1376  target = stream->EnsureSpace(target);
1377  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(3, this->_internal_compute_estimated_impact(), target);
1378  }
1379 
1380  // optional bool prune_search_tree = 4 [default = false];
1381  if (cached_has_bits & 0x00000004u) {
1382  target = stream->EnsureSpace(target);
1383  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(4, this->_internal_prune_search_tree(), target);
1384  }
1385 
1386  // optional bool sort_constraints_by_num_terms = 5 [default = false];
1387  if (cached_has_bits & 0x00000008u) {
1388  target = stream->EnsureSpace(target);
1389  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(5, this->_internal_sort_constraints_by_num_terms(), target);
1390  }
1391 
1392  // optional bool use_random_lns = 6 [default = true];
1393  if (cached_has_bits & 0x00040000u) {
1394  target = stream->EnsureSpace(target);
1395  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_use_random_lns(), target);
1396  }
1397 
1398  // optional int32 random_seed = 7 [default = 8];
1399  if (cached_has_bits & 0x00004000u) {
1400  target = stream->EnsureSpace(target);
1401  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_random_seed(), target);
1402  }
1403 
1404  // optional int32 num_relaxed_vars = 8 [default = 10];
1405  if (cached_has_bits & 0x00008000u) {
1406  target = stream->EnsureSpace(target);
1407  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(8, this->_internal_num_relaxed_vars(), target);
1408  }
1409 
1410  // optional int32 max_number_of_conflicts_in_random_lns = 9 [default = 2500];
1411  if (cached_has_bits & 0x00010000u) {
1412  target = stream->EnsureSpace(target);
1413  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(9, this->_internal_max_number_of_conflicts_in_random_lns(), target);
1414  }
1415 
1416  // optional int32 num_random_lns_tries = 10 [default = 1];
1417  if (cached_has_bits & 0x00200000u) {
1418  target = stream->EnsureSpace(target);
1419  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(10, this->_internal_num_random_lns_tries(), target);
1420  }
1421 
1422  // optional int64 max_number_of_backtracks_in_ls = 11 [default = 100000000];
1423  if (cached_has_bits & 0x00400000u) {
1424  target = stream->EnsureSpace(target);
1425  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(11, this->_internal_max_number_of_backtracks_in_ls(), target);
1426  }
1427 
1428  // optional bool use_lp_lns = 12 [default = true];
1429  if (cached_has_bits & 0x00080000u) {
1430  target = stream->EnsureSpace(target);
1431  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(12, this->_internal_use_lp_lns(), target);
1432  }
1433 
1434  // optional bool log_search_progress = 14 [default = false];
1435  if (cached_has_bits & 0x00000002u) {
1436  target = stream->EnsureSpace(target);
1437  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(14, this->_internal_log_search_progress(), target);
1438  }
1439 
1440  // optional bool use_sat_to_choose_lns_neighbourhood = 15 [default = true];
1441  if (cached_has_bits & 0x00100000u) {
1442  target = stream->EnsureSpace(target);
1443  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(15, this->_internal_use_sat_to_choose_lns_neighbourhood(), target);
1444  }
1445 
1446  // optional int32 max_number_of_conflicts_for_quick_check = 16 [default = 10];
1447  if (cached_has_bits & 0x00800000u) {
1448  target = stream->EnsureSpace(target);
1449  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(16, this->_internal_max_number_of_conflicts_for_quick_check(), target);
1450  }
1451 
1452  // optional bool use_symmetry = 17 [default = false];
1453  if (cached_has_bits & 0x00000010u) {
1454  target = stream->EnsureSpace(target);
1455  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(17, this->_internal_use_symmetry(), target);
1456  }
1457 
1458  // optional int32 max_number_of_conflicts_in_random_solution_generation = 20 [default = 500];
1459  if (cached_has_bits & 0x01000000u) {
1460  target = stream->EnsureSpace(target);
1461  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(20, this->_internal_max_number_of_conflicts_in_random_solution_generation(), target);
1462  }
1463 
1464  // optional int64 max_number_of_explored_assignments_per_try_in_ls = 21 [default = 10000];
1465  if (cached_has_bits & 0x02000000u) {
1466  target = stream->EnsureSpace(target);
1467  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(21, this->_internal_max_number_of_explored_assignments_per_try_in_ls(), target);
1468  }
1469 
1470  // optional bool use_transposition_table_in_ls = 22 [default = true];
1471  if (cached_has_bits & 0x04000000u) {
1472  target = stream->EnsureSpace(target);
1473  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(22, this->_internal_use_transposition_table_in_ls(), target);
1474  }
1475 
1476  // optional bool use_learned_binary_clauses_in_lp = 23 [default = true];
1477  if (cached_has_bits & 0x08000000u) {
1478  target = stream->EnsureSpace(target);
1479  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(23, this->_internal_use_learned_binary_clauses_in_lp(), target);
1480  }
1481 
1482  // optional int32 number_of_solvers = 24 [default = 1];
1483  if (cached_has_bits & 0x10000000u) {
1484  target = stream->EnsureSpace(target);
1485  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(24, this->_internal_number_of_solvers(), target);
1486  }
1487 
1488  // optional .operations_research.bop.BopParameters.ThreadSynchronizationType synchronization_type = 25 [default = NO_SYNCHRONIZATION];
1489  if (cached_has_bits & 0x00000020u) {
1490  target = stream->EnsureSpace(target);
1491  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1492  25, this->_internal_synchronization_type(), target);
1493  }
1494 
1495  // repeated .operations_research.bop.BopSolverOptimizerSet solver_optimizer_sets = 26;
1496  for (unsigned int i = 0,
1497  n = static_cast<unsigned int>(this->_internal_solver_optimizer_sets_size()); i < n; i++) {
1498  target = stream->EnsureSpace(target);
1499  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
1500  InternalWriteMessage(26, this->_internal_solver_optimizer_sets(i), target, stream);
1501  }
1502 
1503  // optional double max_deterministic_time = 27 [default = inf];
1504  if (cached_has_bits & 0x20000000u) {
1505  target = stream->EnsureSpace(target);
1506  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(27, this->_internal_max_deterministic_time(), target);
1507  }
1508 
1509  // optional double relative_gap_limit = 28 [default = 0.0001];
1510  if (cached_has_bits & 0x40000000u) {
1511  target = stream->EnsureSpace(target);
1512  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(28, this->_internal_relative_gap_limit(), target);
1513  }
1514 
1515  // optional bool use_lp_strong_branching = 29 [default = false];
1516  if (cached_has_bits & 0x00000200u) {
1517  target = stream->EnsureSpace(target);
1518  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(29, this->_internal_use_lp_strong_branching(), target);
1519  }
1520 
1521  // optional int32 decomposer_num_variables_threshold = 30 [default = 50];
1522  if (cached_has_bits & 0x80000000u) {
1523  target = stream->EnsureSpace(target);
1524  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(30, this->_internal_decomposer_num_variables_threshold(), target);
1525  }
1526 
1527  cached_has_bits = _has_bits_[1];
1528  // optional int32 num_bop_solvers_used_by_decomposition = 31 [default = 1];
1529  if (cached_has_bits & 0x00000001u) {
1530  target = stream->EnsureSpace(target);
1531  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(31, this->_internal_num_bop_solvers_used_by_decomposition(), target);
1532  }
1533 
1534  cached_has_bits = _has_bits_[0];
1535  // optional string default_solver_optimizer_sets = 33 [default = "methods:{type:LOCAL_SEARCH } methods:{type:RANDOM_FIRST_SOLUTION } methods:{type:LINEAR_RELAXATION } methods:{type:LP_FIRST_SOLUTION } methods:{type:OBJECTIVE_FIRST_SOLUTION } methods:{type:USER_GUIDED_FIRST_SOLUTION } methods:{type:RANDOM_CONSTRAINT_LNS_GUIDED_BY_LP } methods:{type:RANDOM_VARIABLE_LNS_GUIDED_BY_LP } methods:{type:RELATION_GRAPH_LNS } methods:{type:RELATION_GRAPH_LNS_GUIDED_BY_LP } methods:{type:RANDOM_CONSTRAINT_LNS } methods:{type:RANDOM_VARIABLE_LNS } methods:{type:SAT_CORE_BASED } methods:{type:COMPLETE_LNS } "];
1536  if (cached_has_bits & 0x00000001u) {
1537  ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::VerifyUTF8StringNamedField(
1538  this->_internal_default_solver_optimizer_sets().data(), static_cast<int>(this->_internal_default_solver_optimizer_sets().length()),
1539  ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::SERIALIZE,
1540  "operations_research.bop.BopParameters.default_solver_optimizer_sets");
1541  target = stream->WriteStringMaybeAliased(
1542  33, this->_internal_default_solver_optimizer_sets(), target);
1543  }
1544 
1545  cached_has_bits = _has_bits_[1];
1546  // optional int32 guided_sat_conflicts_chunk = 34 [default = 1000];
1547  if (cached_has_bits & 0x00000002u) {
1548  target = stream->EnsureSpace(target);
1549  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(34, this->_internal_guided_sat_conflicts_chunk(), target);
1550  }
1551 
1552  cached_has_bits = _has_bits_[0];
1553  // optional int32 max_number_of_consecutive_failing_optimizer_calls = 35;
1554  if (cached_has_bits & 0x00000040u) {
1555  target = stream->EnsureSpace(target);
1556  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(35, this->_internal_max_number_of_consecutive_failing_optimizer_calls(), target);
1557  }
1558 
1559  // optional double decomposed_problem_min_time_in_seconds = 36 [default = 0];
1560  if (cached_has_bits & 0x00000400u) {
1561  target = stream->EnsureSpace(target);
1562  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(36, this->_internal_decomposed_problem_min_time_in_seconds(), target);
1563  }
1564 
1565  cached_has_bits = _has_bits_[1];
1566  // optional double lp_max_deterministic_time = 37 [default = 1];
1567  if (cached_has_bits & 0x00000008u) {
1568  target = stream->EnsureSpace(target);
1569  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(37, this->_internal_lp_max_deterministic_time(), target);
1570  }
1571 
1572  // optional int32 max_num_broken_constraints_in_ls = 38 [default = 2147483647];
1573  if (cached_has_bits & 0x00000004u) {
1574  target = stream->EnsureSpace(target);
1575  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(38, this->_internal_max_num_broken_constraints_in_ls(), target);
1576  }
1577 
1578  cached_has_bits = _has_bits_[0];
1579  // optional bool use_potential_one_flip_repairs_in_ls = 39 [default = false];
1580  if (cached_has_bits & 0x00000100u) {
1581  target = stream->EnsureSpace(target);
1582  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(39, this->_internal_use_potential_one_flip_repairs_in_ls(), target);
1583  }
1584 
1585  // optional bool exploit_symmetry_in_sat_first_solution = 40 [default = false];
1586  if (cached_has_bits & 0x00000080u) {
1587  target = stream->EnsureSpace(target);
1588  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(40, this->_internal_exploit_symmetry_in_sat_first_solution(), target);
1589  }
1590 
1591  // optional int32 max_lp_solve_for_feasibility_problems = 41 [default = 0];
1592  if (cached_has_bits & 0x00000800u) {
1593  target = stream->EnsureSpace(target);
1594  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(41, this->_internal_max_lp_solve_for_feasibility_problems(), target);
1595  }
1596 
1597  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
1598  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
1599  _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
1600  }
1601  // @@protoc_insertion_point(serialize_to_array_end:operations_research.bop.BopParameters)
1602  return target;
1603 }
1604 
1606 // @@protoc_insertion_point(message_byte_size_start:operations_research.bop.BopParameters)
1607  size_t total_size = 0;
1608 
1609  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
1610  // Prevent compiler warnings about cached_has_bits being unused
1611  (void) cached_has_bits;
1612 
1613  // repeated .operations_research.bop.BopSolverOptimizerSet solver_optimizer_sets = 26;
1614  total_size += 2UL * this->_internal_solver_optimizer_sets_size();
1615  for (const auto& msg : this->solver_optimizer_sets_) {
1616  total_size +=
1617  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
1618  }
1619 
1620  cached_has_bits = _has_bits_[0];
1621  if (cached_has_bits & 0x000000ffu) {
1622  // optional string default_solver_optimizer_sets = 33 [default = "methods:{type:LOCAL_SEARCH } methods:{type:RANDOM_FIRST_SOLUTION } methods:{type:LINEAR_RELAXATION } methods:{type:LP_FIRST_SOLUTION } methods:{type:OBJECTIVE_FIRST_SOLUTION } methods:{type:USER_GUIDED_FIRST_SOLUTION } methods:{type:RANDOM_CONSTRAINT_LNS_GUIDED_BY_LP } methods:{type:RANDOM_VARIABLE_LNS_GUIDED_BY_LP } methods:{type:RELATION_GRAPH_LNS } methods:{type:RELATION_GRAPH_LNS_GUIDED_BY_LP } methods:{type:RANDOM_CONSTRAINT_LNS } methods:{type:RANDOM_VARIABLE_LNS } methods:{type:SAT_CORE_BASED } methods:{type:COMPLETE_LNS } "];
1623  if (cached_has_bits & 0x00000001u) {
1624  total_size += 2 +
1625  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
1626  this->_internal_default_solver_optimizer_sets());
1627  }
1628 
1629  // optional bool log_search_progress = 14 [default = false];
1630  if (cached_has_bits & 0x00000002u) {
1631  total_size += 1 + 1;
1632  }
1633 
1634  // optional bool prune_search_tree = 4 [default = false];
1635  if (cached_has_bits & 0x00000004u) {
1636  total_size += 1 + 1;
1637  }
1638 
1639  // optional bool sort_constraints_by_num_terms = 5 [default = false];
1640  if (cached_has_bits & 0x00000008u) {
1641  total_size += 1 + 1;
1642  }
1643 
1644  // optional bool use_symmetry = 17 [default = false];
1645  if (cached_has_bits & 0x00000010u) {
1646  total_size += 2 + 1;
1647  }
1648 
1649  // optional .operations_research.bop.BopParameters.ThreadSynchronizationType synchronization_type = 25 [default = NO_SYNCHRONIZATION];
1650  if (cached_has_bits & 0x00000020u) {
1651  total_size += 2 +
1652  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_synchronization_type());
1653  }
1654 
1655  // optional int32 max_number_of_consecutive_failing_optimizer_calls = 35;
1656  if (cached_has_bits & 0x00000040u) {
1657  total_size += 2 +
1658  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1659  this->_internal_max_number_of_consecutive_failing_optimizer_calls());
1660  }
1661 
1662  // optional bool exploit_symmetry_in_sat_first_solution = 40 [default = false];
1663  if (cached_has_bits & 0x00000080u) {
1664  total_size += 2 + 1;
1665  }
1666 
1667  }
1668  if (cached_has_bits & 0x0000ff00u) {
1669  // optional bool use_potential_one_flip_repairs_in_ls = 39 [default = false];
1670  if (cached_has_bits & 0x00000100u) {
1671  total_size += 2 + 1;
1672  }
1673 
1674  // optional bool use_lp_strong_branching = 29 [default = false];
1675  if (cached_has_bits & 0x00000200u) {
1676  total_size += 2 + 1;
1677  }
1678 
1679  // optional double decomposed_problem_min_time_in_seconds = 36 [default = 0];
1680  if (cached_has_bits & 0x00000400u) {
1681  total_size += 2 + 8;
1682  }
1683 
1684  // optional int32 max_lp_solve_for_feasibility_problems = 41 [default = 0];
1685  if (cached_has_bits & 0x00000800u) {
1686  total_size += 2 +
1687  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1688  this->_internal_max_lp_solve_for_feasibility_problems());
1689  }
1690 
1691  // optional double max_time_in_seconds = 1 [default = inf];
1692  if (cached_has_bits & 0x00001000u) {
1693  total_size += 1 + 8;
1694  }
1695 
1696  // optional int32 max_num_decisions_in_ls = 2 [default = 4];
1697  if (cached_has_bits & 0x00002000u) {
1698  total_size += 1 +
1699  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1700  this->_internal_max_num_decisions_in_ls());
1701  }
1702 
1703  // optional int32 random_seed = 7 [default = 8];
1704  if (cached_has_bits & 0x00004000u) {
1705  total_size += 1 +
1706  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1707  this->_internal_random_seed());
1708  }
1709 
1710  // optional int32 num_relaxed_vars = 8 [default = 10];
1711  if (cached_has_bits & 0x00008000u) {
1712  total_size += 1 +
1713  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1714  this->_internal_num_relaxed_vars());
1715  }
1716 
1717  }
1718  if (cached_has_bits & 0x00ff0000u) {
1719  // optional int32 max_number_of_conflicts_in_random_lns = 9 [default = 2500];
1720  if (cached_has_bits & 0x00010000u) {
1721  total_size += 1 +
1722  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1723  this->_internal_max_number_of_conflicts_in_random_lns());
1724  }
1725 
1726  // optional bool compute_estimated_impact = 3 [default = true];
1727  if (cached_has_bits & 0x00020000u) {
1728  total_size += 1 + 1;
1729  }
1730 
1731  // optional bool use_random_lns = 6 [default = true];
1732  if (cached_has_bits & 0x00040000u) {
1733  total_size += 1 + 1;
1734  }
1735 
1736  // optional bool use_lp_lns = 12 [default = true];
1737  if (cached_has_bits & 0x00080000u) {
1738  total_size += 1 + 1;
1739  }
1740 
1741  // optional bool use_sat_to_choose_lns_neighbourhood = 15 [default = true];
1742  if (cached_has_bits & 0x00100000u) {
1743  total_size += 1 + 1;
1744  }
1745 
1746  // optional int32 num_random_lns_tries = 10 [default = 1];
1747  if (cached_has_bits & 0x00200000u) {
1748  total_size += 1 +
1749  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1750  this->_internal_num_random_lns_tries());
1751  }
1752 
1753  // optional int64 max_number_of_backtracks_in_ls = 11 [default = 100000000];
1754  if (cached_has_bits & 0x00400000u) {
1755  total_size += 1 +
1756  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
1757  this->_internal_max_number_of_backtracks_in_ls());
1758  }
1759 
1760  // optional int32 max_number_of_conflicts_for_quick_check = 16 [default = 10];
1761  if (cached_has_bits & 0x00800000u) {
1762  total_size += 2 +
1763  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1764  this->_internal_max_number_of_conflicts_for_quick_check());
1765  }
1766 
1767  }
1768  if (cached_has_bits & 0xff000000u) {
1769  // optional int32 max_number_of_conflicts_in_random_solution_generation = 20 [default = 500];
1770  if (cached_has_bits & 0x01000000u) {
1771  total_size += 2 +
1772  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1773  this->_internal_max_number_of_conflicts_in_random_solution_generation());
1774  }
1775 
1776  // optional int64 max_number_of_explored_assignments_per_try_in_ls = 21 [default = 10000];
1777  if (cached_has_bits & 0x02000000u) {
1778  total_size += 2 +
1779  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
1780  this->_internal_max_number_of_explored_assignments_per_try_in_ls());
1781  }
1782 
1783  // optional bool use_transposition_table_in_ls = 22 [default = true];
1784  if (cached_has_bits & 0x04000000u) {
1785  total_size += 2 + 1;
1786  }
1787 
1788  // optional bool use_learned_binary_clauses_in_lp = 23 [default = true];
1789  if (cached_has_bits & 0x08000000u) {
1790  total_size += 2 + 1;
1791  }
1792 
1793  // optional int32 number_of_solvers = 24 [default = 1];
1794  if (cached_has_bits & 0x10000000u) {
1795  total_size += 2 +
1796  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1797  this->_internal_number_of_solvers());
1798  }
1799 
1800  // optional double max_deterministic_time = 27 [default = inf];
1801  if (cached_has_bits & 0x20000000u) {
1802  total_size += 2 + 8;
1803  }
1804 
1805  // optional double relative_gap_limit = 28 [default = 0.0001];
1806  if (cached_has_bits & 0x40000000u) {
1807  total_size += 2 + 8;
1808  }
1809 
1810  // optional int32 decomposer_num_variables_threshold = 30 [default = 50];
1811  if (cached_has_bits & 0x80000000u) {
1812  total_size += 2 +
1813  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1814  this->_internal_decomposer_num_variables_threshold());
1815  }
1816 
1817  }
1818  cached_has_bits = _has_bits_[1];
1819  if (cached_has_bits & 0x0000000fu) {
1820  // optional int32 num_bop_solvers_used_by_decomposition = 31 [default = 1];
1821  if (cached_has_bits & 0x00000001u) {
1822  total_size += 2 +
1823  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1824  this->_internal_num_bop_solvers_used_by_decomposition());
1825  }
1826 
1827  // optional int32 guided_sat_conflicts_chunk = 34 [default = 1000];
1828  if (cached_has_bits & 0x00000002u) {
1829  total_size += 2 +
1830  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1831  this->_internal_guided_sat_conflicts_chunk());
1832  }
1833 
1834  // optional int32 max_num_broken_constraints_in_ls = 38 [default = 2147483647];
1835  if (cached_has_bits & 0x00000004u) {
1836  total_size += 2 +
1837  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1838  this->_internal_max_num_broken_constraints_in_ls());
1839  }
1840 
1841  // optional double lp_max_deterministic_time = 37 [default = 1];
1842  if (cached_has_bits & 0x00000008u) {
1843  total_size += 2 + 8;
1844  }
1845 
1846  }
1847  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
1848  return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
1849  _internal_metadata_, total_size, &_cached_size_);
1850  }
1851  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
1852  SetCachedSize(cached_size);
1853  return total_size;
1854 }
1855 
1856 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData BopParameters::_class_data_ = {
1857  ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
1858  BopParameters::MergeImpl
1859 };
1860 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*BopParameters::GetClassData() const { return &_class_data_; }
1861 
1862 void BopParameters::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message*to,
1863  const ::PROTOBUF_NAMESPACE_ID::Message&from) {
1864  static_cast<BopParameters *>(to)->MergeFrom(
1865  static_cast<const BopParameters &>(from));
1866 }
1867 
1868 
1870 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.bop.BopParameters)
1871  GOOGLE_DCHECK_NE(&from, this);
1872  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
1873  (void) cached_has_bits;
1874 
1875  solver_optimizer_sets_.MergeFrom(from.solver_optimizer_sets_);
1876  cached_has_bits = from._has_bits_[0];
1877  if (cached_has_bits & 0x000000ffu) {
1878  if (cached_has_bits & 0x00000001u) {
1879  _internal_set_default_solver_optimizer_sets(from._internal_default_solver_optimizer_sets());
1880  }
1881  if (cached_has_bits & 0x00000002u) {
1882  log_search_progress_ = from.log_search_progress_;
1883  }
1884  if (cached_has_bits & 0x00000004u) {
1885  prune_search_tree_ = from.prune_search_tree_;
1886  }
1887  if (cached_has_bits & 0x00000008u) {
1888  sort_constraints_by_num_terms_ = from.sort_constraints_by_num_terms_;
1889  }
1890  if (cached_has_bits & 0x00000010u) {
1891  use_symmetry_ = from.use_symmetry_;
1892  }
1893  if (cached_has_bits & 0x00000020u) {
1894  synchronization_type_ = from.synchronization_type_;
1895  }
1896  if (cached_has_bits & 0x00000040u) {
1897  max_number_of_consecutive_failing_optimizer_calls_ = from.max_number_of_consecutive_failing_optimizer_calls_;
1898  }
1899  if (cached_has_bits & 0x00000080u) {
1900  exploit_symmetry_in_sat_first_solution_ = from.exploit_symmetry_in_sat_first_solution_;
1901  }
1902  _has_bits_[0] |= cached_has_bits;
1903  }
1904  if (cached_has_bits & 0x0000ff00u) {
1905  if (cached_has_bits & 0x00000100u) {
1906  use_potential_one_flip_repairs_in_ls_ = from.use_potential_one_flip_repairs_in_ls_;
1907  }
1908  if (cached_has_bits & 0x00000200u) {
1909  use_lp_strong_branching_ = from.use_lp_strong_branching_;
1910  }
1911  if (cached_has_bits & 0x00000400u) {
1912  decomposed_problem_min_time_in_seconds_ = from.decomposed_problem_min_time_in_seconds_;
1913  }
1914  if (cached_has_bits & 0x00000800u) {
1915  max_lp_solve_for_feasibility_problems_ = from.max_lp_solve_for_feasibility_problems_;
1916  }
1917  if (cached_has_bits & 0x00001000u) {
1918  max_time_in_seconds_ = from.max_time_in_seconds_;
1919  }
1920  if (cached_has_bits & 0x00002000u) {
1921  max_num_decisions_in_ls_ = from.max_num_decisions_in_ls_;
1922  }
1923  if (cached_has_bits & 0x00004000u) {
1924  random_seed_ = from.random_seed_;
1925  }
1926  if (cached_has_bits & 0x00008000u) {
1927  num_relaxed_vars_ = from.num_relaxed_vars_;
1928  }
1929  _has_bits_[0] |= cached_has_bits;
1930  }
1931  if (cached_has_bits & 0x00ff0000u) {
1932  if (cached_has_bits & 0x00010000u) {
1933  max_number_of_conflicts_in_random_lns_ = from.max_number_of_conflicts_in_random_lns_;
1934  }
1935  if (cached_has_bits & 0x00020000u) {
1936  compute_estimated_impact_ = from.compute_estimated_impact_;
1937  }
1938  if (cached_has_bits & 0x00040000u) {
1939  use_random_lns_ = from.use_random_lns_;
1940  }
1941  if (cached_has_bits & 0x00080000u) {
1942  use_lp_lns_ = from.use_lp_lns_;
1943  }
1944  if (cached_has_bits & 0x00100000u) {
1945  use_sat_to_choose_lns_neighbourhood_ = from.use_sat_to_choose_lns_neighbourhood_;
1946  }
1947  if (cached_has_bits & 0x00200000u) {
1948  num_random_lns_tries_ = from.num_random_lns_tries_;
1949  }
1950  if (cached_has_bits & 0x00400000u) {
1951  max_number_of_backtracks_in_ls_ = from.max_number_of_backtracks_in_ls_;
1952  }
1953  if (cached_has_bits & 0x00800000u) {
1954  max_number_of_conflicts_for_quick_check_ = from.max_number_of_conflicts_for_quick_check_;
1955  }
1956  _has_bits_[0] |= cached_has_bits;
1957  }
1958  if (cached_has_bits & 0xff000000u) {
1959  if (cached_has_bits & 0x01000000u) {
1960  max_number_of_conflicts_in_random_solution_generation_ = from.max_number_of_conflicts_in_random_solution_generation_;
1961  }
1962  if (cached_has_bits & 0x02000000u) {
1963  max_number_of_explored_assignments_per_try_in_ls_ = from.max_number_of_explored_assignments_per_try_in_ls_;
1964  }
1965  if (cached_has_bits & 0x04000000u) {
1966  use_transposition_table_in_ls_ = from.use_transposition_table_in_ls_;
1967  }
1968  if (cached_has_bits & 0x08000000u) {
1969  use_learned_binary_clauses_in_lp_ = from.use_learned_binary_clauses_in_lp_;
1970  }
1971  if (cached_has_bits & 0x10000000u) {
1972  number_of_solvers_ = from.number_of_solvers_;
1973  }
1974  if (cached_has_bits & 0x20000000u) {
1975  max_deterministic_time_ = from.max_deterministic_time_;
1976  }
1977  if (cached_has_bits & 0x40000000u) {
1978  relative_gap_limit_ = from.relative_gap_limit_;
1979  }
1980  if (cached_has_bits & 0x80000000u) {
1981  decomposer_num_variables_threshold_ = from.decomposer_num_variables_threshold_;
1982  }
1983  _has_bits_[0] |= cached_has_bits;
1984  }
1985  cached_has_bits = from._has_bits_[1];
1986  if (cached_has_bits & 0x0000000fu) {
1987  if (cached_has_bits & 0x00000001u) {
1988  num_bop_solvers_used_by_decomposition_ = from.num_bop_solvers_used_by_decomposition_;
1989  }
1990  if (cached_has_bits & 0x00000002u) {
1991  guided_sat_conflicts_chunk_ = from.guided_sat_conflicts_chunk_;
1992  }
1993  if (cached_has_bits & 0x00000004u) {
1994  max_num_broken_constraints_in_ls_ = from.max_num_broken_constraints_in_ls_;
1995  }
1996  if (cached_has_bits & 0x00000008u) {
1997  lp_max_deterministic_time_ = from.lp_max_deterministic_time_;
1998  }
1999  _has_bits_[1] |= cached_has_bits;
2000  }
2001  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
2002 }
2003 
2005 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.bop.BopParameters)
2006  if (&from == this) return;
2007  Clear();
2008  MergeFrom(from);
2009 }
2010 
2012  return true;
2013 }
2014 
2015 void BopParameters::InternalSwap(BopParameters* other) {
2016  using std::swap;
2017  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
2018  swap(_has_bits_[0], other->_has_bits_[0]);
2019  swap(_has_bits_[1], other->_has_bits_[1]);
2020  solver_optimizer_sets_.InternalSwap(&other->solver_optimizer_sets_);
2021  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
2022  nullptr,
2023  &default_solver_optimizer_sets_, GetArenaForAllocation(),
2024  &other->default_solver_optimizer_sets_, other->GetArenaForAllocation()
2025  );
2026  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
2027  PROTOBUF_FIELD_OFFSET(BopParameters, max_lp_solve_for_feasibility_problems_)
2028  + sizeof(BopParameters::max_lp_solve_for_feasibility_problems_)
2029  - PROTOBUF_FIELD_OFFSET(BopParameters, log_search_progress_)>(
2030  reinterpret_cast<char*>(&log_search_progress_),
2031  reinterpret_cast<char*>(&other->log_search_progress_));
2032  swap(max_time_in_seconds_, other->max_time_in_seconds_);
2033  swap(max_num_decisions_in_ls_, other->max_num_decisions_in_ls_);
2034  swap(random_seed_, other->random_seed_);
2035  swap(num_relaxed_vars_, other->num_relaxed_vars_);
2036  swap(max_number_of_conflicts_in_random_lns_, other->max_number_of_conflicts_in_random_lns_);
2037  swap(compute_estimated_impact_, other->compute_estimated_impact_);
2038  swap(use_random_lns_, other->use_random_lns_);
2039  swap(use_lp_lns_, other->use_lp_lns_);
2040  swap(use_sat_to_choose_lns_neighbourhood_, other->use_sat_to_choose_lns_neighbourhood_);
2041  swap(num_random_lns_tries_, other->num_random_lns_tries_);
2042  swap(max_number_of_backtracks_in_ls_, other->max_number_of_backtracks_in_ls_);
2043  swap(max_number_of_conflicts_for_quick_check_, other->max_number_of_conflicts_for_quick_check_);
2044  swap(max_number_of_conflicts_in_random_solution_generation_, other->max_number_of_conflicts_in_random_solution_generation_);
2045  swap(max_number_of_explored_assignments_per_try_in_ls_, other->max_number_of_explored_assignments_per_try_in_ls_);
2046  swap(use_transposition_table_in_ls_, other->use_transposition_table_in_ls_);
2047  swap(use_learned_binary_clauses_in_lp_, other->use_learned_binary_clauses_in_lp_);
2048  swap(number_of_solvers_, other->number_of_solvers_);
2049  swap(max_deterministic_time_, other->max_deterministic_time_);
2050  swap(relative_gap_limit_, other->relative_gap_limit_);
2051  swap(decomposer_num_variables_threshold_, other->decomposer_num_variables_threshold_);
2052  swap(num_bop_solvers_used_by_decomposition_, other->num_bop_solvers_used_by_decomposition_);
2053  swap(guided_sat_conflicts_chunk_, other->guided_sat_conflicts_chunk_);
2054  swap(max_num_broken_constraints_in_ls_, other->max_num_broken_constraints_in_ls_);
2055  swap(lp_max_deterministic_time_, other->lp_max_deterministic_time_);
2056 }
2057 
2058 ::PROTOBUF_NAMESPACE_ID::Metadata BopParameters::GetMetadata() const {
2059  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
2062 }
2063 
2064 // @@protoc_insertion_point(namespace_scope)
2065 } // namespace bop
2066 } // namespace operations_research
2067 PROTOBUF_NAMESPACE_OPEN
2068 template<> PROTOBUF_NOINLINE ::operations_research::bop::BopOptimizerMethod* Arena::CreateMaybeMessage< ::operations_research::bop::BopOptimizerMethod >(Arena* arena) {
2069  return Arena::CreateMessageInternal< ::operations_research::bop::BopOptimizerMethod >(arena);
2070 }
2071 template<> PROTOBUF_NOINLINE ::operations_research::bop::BopSolverOptimizerSet* Arena::CreateMaybeMessage< ::operations_research::bop::BopSolverOptimizerSet >(Arena* arena) {
2072  return Arena::CreateMessageInternal< ::operations_research::bop::BopSolverOptimizerSet >(arena);
2073 }
2074 template<> PROTOBUF_NOINLINE ::operations_research::bop::BopParameters* Arena::CreateMaybeMessage< ::operations_research::bop::BopParameters >(Arena* arena) {
2075  return Arena::CreateMessageInternal< ::operations_research::bop::BopParameters >(arena);
2076 }
2077 PROTOBUF_NAMESPACE_CLOSE
2078 
2079 // @@protoc_insertion_point(global_scope)
2080 #include <google/protobuf/port_undef.inc>
PROTOBUF_NOINLINE ::operations_research::bop::BopSolverOptimizerSet * Arena::CreateMaybeMessage< ::operations_research::bop::BopSolverOptimizerSet >(Arena *arena)
static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor * file_level_enum_descriptors_ortools_2fbop_2fbop_5fparameters_2eproto[2]
bool BopParameters_ThreadSynchronizationType_IsValid(int value)
void MergeFrom(const BopSolverOptimizerSet &from)
static void set_has_use_transposition_table_in_ls(HasBits *has_bits)
static void set_has_max_number_of_conflicts_in_random_solution_generation(HasBits *has_bits)
static constexpr OptimizerType RANDOM_VARIABLE_LNS_GUIDED_BY_LP
::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final
::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor * BopParameters_ThreadSynchronizationType_descriptor()
::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_ortools_2fbop_2fbop_5fparameters_2eproto_once
void swap(IdMap< K, V > &a, IdMap< K, V > &b)
Definition: id_map.h:263
static void set_has_num_random_lns_tries(HasBits *has_bits)
static void set_has_default_solver_optimizer_sets(HasBits *has_bits)
static void set_has_num_relaxed_vars(HasBits *has_bits)
PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final
static void set_has_max_time_in_seconds(HasBits *has_bits)
static void set_has_use_learned_binary_clauses_in_lp(HasBits *has_bits)
static void set_has_max_lp_solve_for_feasibility_problems(HasBits *has_bits)
static void set_has_use_potential_one_flip_repairs_in_ls(HasBits *has_bits)
static void set_has_lp_max_deterministic_time(HasBits *has_bits)
static void set_has_max_number_of_conflicts_for_quick_check(HasBits *has_bits)
::PROTOBUF_NAMESPACE_ID::uint8 * _InternalSerialize(::PROTOBUF_NAMESPACE_ID::uint8 *target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream *stream) const final
static constexpr OptimizerType LOCAL_SEARCH
static void set_has_compute_estimated_impact(HasBits *has_bits)
static constexpr OptimizerType RELATION_GRAPH_LNS
decltype(std::declval< BopOptimizerMethod >()._has_bits_) HasBits
static constexpr OptimizerType RANDOM_VARIABLE_LNS
static void set_has_prune_search_tree(HasBits *has_bits)
::PROTOBUF_NAMESPACE_ID::uint8 * _InternalSerialize(::PROTOBUF_NAMESPACE_ID::uint8 *target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream *stream) const final
inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet * mutable_unknown_fields()
const char * _InternalParse(const char *ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext *ctx) final
void CopyFrom(const BopOptimizerMethod &from)
void CopyFrom(const BopSolverOptimizerSet &from)
PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final
static constexpr int ThreadSynchronizationType_ARRAYSIZE
static void set_has_number_of_solvers(HasBits *has_bits)
PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT BopSolverOptimizerSetDefaultTypeInternal _BopSolverOptimizerSet_default_instance_
static void set_has_max_number_of_consecutive_failing_optimizer_calls(HasBits *has_bits)
static constexpr OptimizerType RELATION_GRAPH_LNS_GUIDED_BY_LP
::PROTOBUF_NAMESPACE_ID::Message const *const file_default_instances[]
PROTOBUF_ATTRIBUTE_WEAKconst ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable * descriptor_table_ortools_2fbop_2fbop_5fparameters_2eproto_getter()
static constexpr ThreadSynchronizationType SYNCHRONIZE_ON_RIGHT
static constexpr ThreadSynchronizationType NO_SYNCHRONIZATION
static void set_has_max_number_of_explored_assignments_per_try_in_ls(HasBits *has_bits)
static void set_has_decomposer_num_variables_threshold(HasBits *has_bits)
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const ** file_level_service_descriptors_ortools_2fbop_2fbop_5fparameters_2eproto
static void set_has_guided_sat_conflicts_chunk(HasBits *has_bits)
const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_ortools_2fbop_2fbop_5fparameters_2eproto::offsets [] PROTOBUF_SECTION_VARIABLE(protodesc_cold)
static constexpr ThreadSynchronizationType SYNCHRONIZE_ALL
void CopyFrom(const BopParameters &from)
static void set_has_decomposed_problem_min_time_in_seconds(HasBits *has_bits)
static constexpr OptimizerType SAT_LINEAR_SEARCH
bool BopOptimizerMethod_OptimizerType_IsValid(int value)
static void set_has_use_lp_strong_branching(HasBits *has_bits)
friend void swap(BopParameters &a, BopParameters &b)
inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet * mutable_unknown_fields()
static void set_has_use_sat_to_choose_lns_neighbourhood(HasBits *has_bits)
static constexpr OptimizerType RANDOM_CONSTRAINT_LNS_GUIDED_BY_LP
static constexpr OptimizerType COMPLETE_LNS
PROTOBUF_NAMESPACE_OPEN PROTOBUF_NOINLINE ::operations_research::bop::BopOptimizerMethod * Arena::CreateMaybeMessage< ::operations_research::bop::BopOptimizerMethod >(Arena *arena)
PROTOBUF_NOINLINE ::operations_research::bop::BopParameters * Arena::CreateMaybeMessage< ::operations_research::bop::BopParameters >(Arena *arena)
void MergeFrom(const BopOptimizerMethod &from)
const char * _InternalParse(const char *ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext *ctx) final
static constexpr OptimizerType RANDOM_CONSTRAINT_LNS
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_ortools_2fbop_2fbop_5fparameters_2eproto
static void set_has_max_number_of_backtracks_in_ls(HasBits *has_bits)
::PROTOBUF_NAMESPACE_ID::uint8 * _InternalSerialize(::PROTOBUF_NAMESPACE_ID::uint8 *target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream *stream) const final
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData * GetClassData() const final
const char * _InternalParse(const char *ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext *ctx) final
#define CHK_(x)
static constexpr OptimizerType OBJECTIVE_FIRST_SOLUTION
static constexpr OptimizerType OptimizerType_MIN
static void set_has_synchronization_type(HasBits *has_bits)
::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_ortools_2fbop_2fbop_5fparameters_2eproto[3]
static constexpr OptimizerType LINEAR_RELAXATION
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor * BopOptimizerMethod_OptimizerType_descriptor()
static constexpr OptimizerType LP_FIRST_SOLUTION
static constexpr OptimizerType RANDOM_FIRST_SOLUTION
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData * GetClassData() const final
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT BopOptimizerMethodDefaultTypeInternal _BopOptimizerMethod_default_instance_
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT BopParametersDefaultTypeInternal _BopParameters_default_instance_
static void set_has_max_num_broken_constraints_in_ls(HasBits *has_bits)
Collection of objects used to extend the Constraint Solver library.
static void set_has_log_search_progress(HasBits *has_bits)
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData * GetClassData() const final
static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[]
static void set_has_sort_constraints_by_num_terms(HasBits *has_bits)
static void set_has_relative_gap_limit(HasBits *has_bits)
static void set_has_max_deterministic_time(HasBits *has_bits)
static constexpr OptimizerType SAT_CORE_BASED
static void set_has_max_num_decisions_in_ls(HasBits *has_bits)
static constexpr OptimizerType USER_GUIDED_FIRST_SOLUTION
friend void swap(BopOptimizerMethod &a, BopOptimizerMethod &b)
static void set_has_num_bop_solvers_used_by_decomposition(HasBits *has_bits)
static constexpr OptimizerType OptimizerType_MAX
static constexpr ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema * schemas
void MergeFrom(const BopParameters &from)
static void set_has_max_number_of_conflicts_in_random_lns(HasBits *has_bits)
int64_t value
decltype(std::declval< BopParameters >()._has_bits_) HasBits
::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final
static constexpr ThreadSynchronizationType ThreadSynchronizationType_MAX
static void set_has_exploit_symmetry_in_sat_first_solution(HasBits *has_bits)
static constexpr ThreadSynchronizationType ThreadSynchronizationType_MIN