OR-Tools  9.2
routing_parameters.pb.cc
Go to the documentation of this file.
1 // Generated by the protocol buffer compiler. DO NOT EDIT!
2 // source: ortools/constraint_solver/routing_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 {
21  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
22  : use_relocate_(0)
23 
24  , use_relocate_pair_(0)
25 
26  , use_relocate_neighbors_(0)
27 
28  , use_exchange_(0)
29 
30  , use_cross_(0)
31 
32  , use_cross_exchange_(0)
33 
34  , use_two_opt_(0)
35 
36  , use_or_opt_(0)
37 
38  , use_lin_kernighan_(0)
39 
40  , use_tsp_opt_(0)
41 
42  , use_make_active_(0)
43 
44  , use_make_inactive_(0)
45 
46  , use_make_chain_inactive_(0)
47 
48  , use_swap_active_(0)
49 
50  , use_extended_swap_active_(0)
51 
52  , use_path_lns_(0)
53 
54  , use_full_path_lns_(0)
55 
56  , use_tsp_lns_(0)
57 
58  , use_inactive_lns_(0)
59 
60  , use_node_pair_swap_active_(0)
61 
62  , use_relocate_and_make_active_(0)
63 
64  , use_exchange_pair_(0)
65 
66  , use_relocate_expensive_chain_(0)
67 
68  , use_light_relocate_pair_(0)
69 
70  , use_relocate_subtrip_(0)
71 
72  , use_exchange_subtrip_(0)
73 
74  , use_global_cheapest_insertion_path_lns_(0)
75 
76  , use_local_cheapest_insertion_path_lns_(0)
77 
78  , use_global_cheapest_insertion_expensive_chain_lns_(0)
79 
80  , use_local_cheapest_insertion_expensive_chain_lns_(0)
81 
82  , use_global_cheapest_insertion_close_nodes_lns_(0)
83 
84  , use_local_cheapest_insertion_close_nodes_lns_(0)
85 
86  , use_relocate_path_global_cheapest_insertion_insert_unperformed_(0)
87 {}
90  : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
92  union {
94  };
95 };
98  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
99  : improvement_rate_solutions_distance_(0)
100  , improvement_rate_coefficient_(0){}
103  : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
105  union {
107  };
108 };
111  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
112  : log_tag_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
113  , local_search_operators_(nullptr)
114  , time_limit_(nullptr)
115  , lns_time_limit_(nullptr)
116  , improvement_limit_parameters_(nullptr)
117  , sat_parameters_(nullptr)
118  , first_solution_strategy_(0)
119 
120  , local_search_metaheuristic_(0)
121 
122  , guided_local_search_lambda_coefficient_(0)
123  , optimization_step_(0)
124  , solution_limit_(int64_t{0})
125  , use_full_propagation_(false)
126  , log_search_(false)
127  , number_of_solutions_to_collect_(0)
128  , savings_neighbors_ratio_(0)
129  , cheapest_insertion_farthest_seeds_ratio_(0)
130  , savings_arc_coefficient_(0)
131  , relocate_expensive_chain_num_arcs_to_consider_(0)
132  , use_unfiltered_first_solution_strategy_(false)
133  , savings_add_reverse_arcs_(false)
134  , savings_parallel_routes_(false)
135  , cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization_(false)
136  , cheapest_insertion_first_solution_neighbors_ratio_(0)
137  , log_cost_scaling_factor_(0)
138  , savings_max_memory_usage_bytes_(0)
139  , use_cp_sat_(0)
140 
141  , use_cp_(0)
142 
143  , log_cost_offset_(0)
144  , cheapest_insertion_add_unperformed_entries_(false)
145  , christofides_use_minimum_matching_(false)
146  , use_multi_armed_bandit_concatenate_operators_(false)
147  , use_depth_first_search_(false)
148  , heuristic_expensive_chain_lns_num_arcs_to_consider_(0)
149  , cheapest_insertion_ls_operator_neighbors_ratio_(0)
150  , continuous_scheduling_solver_(0)
151 
152  , mixed_integer_scheduling_solver_(0)
153 
154  , heuristic_close_nodes_lns_num_nodes_(0)
155  , cheapest_insertion_first_solution_min_neighbors_(0)
156  , multi_armed_bandit_compound_operator_memory_coefficient_(0)
157  , multi_armed_bandit_compound_operator_exploration_coefficient_(0)
158  , cheapest_insertion_ls_operator_min_neighbors_(0)
159  , use_generalized_cp_sat_(0)
160 {}
163  : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
165  union {
167  };
168 };
171  ::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized)
172  : solver_parameters_(nullptr)
173  , reduce_vehicle_cost_model_(false)
174  , max_callback_cache_size_(0){}
177  : _instance(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized{}) {}
179  union {
181  };
182 };
184 } // namespace operations_research
187 static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto = nullptr;
188 
190  ~0u, // no _has_bits_
191  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _internal_metadata_),
192  ~0u, // no _extensions_
193  ~0u, // no _oneof_case_
194  ~0u, // no _weak_field_map_
195  ~0u, // no _inlined_string_donated_
197  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_relocate_pair_),
198  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_light_relocate_pair_),
199  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_relocate_neighbors_),
200  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_relocate_subtrip_),
202  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_exchange_pair_),
203  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_exchange_subtrip_),
205  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_cross_exchange_),
206  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_relocate_expensive_chain_),
209  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_lin_kernighan_),
212  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_relocate_and_make_active_),
213  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_make_inactive_),
214  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_make_chain_inactive_),
216  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_extended_swap_active_),
217  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_node_pair_swap_active_),
219  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_full_path_lns_),
221  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_inactive_lns_),
222  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_global_cheapest_insertion_path_lns_),
223  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_local_cheapest_insertion_path_lns_),
224  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_relocate_path_global_cheapest_insertion_insert_unperformed_),
225  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_global_cheapest_insertion_expensive_chain_lns_),
226  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_local_cheapest_insertion_expensive_chain_lns_),
227  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_global_cheapest_insertion_close_nodes_lns_),
228  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_local_cheapest_insertion_close_nodes_lns_),
229  ~0u, // no _has_bits_
230  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters, _internal_metadata_),
231  ~0u, // no _extensions_
232  ~0u, // no _oneof_case_
233  ~0u, // no _weak_field_map_
234  ~0u, // no _inlined_string_donated_
235  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters, improvement_rate_coefficient_),
236  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters, improvement_rate_solutions_distance_),
237  ~0u, // no _has_bits_
238  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _internal_metadata_),
239  ~0u, // no _extensions_
240  ~0u, // no _oneof_case_
241  ~0u, // no _weak_field_map_
242  ~0u, // no _inlined_string_donated_
243  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, first_solution_strategy_),
244  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, use_unfiltered_first_solution_strategy_),
245  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, savings_neighbors_ratio_),
246  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, savings_max_memory_usage_bytes_),
247  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, savings_add_reverse_arcs_),
248  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, savings_arc_coefficient_),
249  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, savings_parallel_routes_),
250  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, cheapest_insertion_farthest_seeds_ratio_),
251  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, cheapest_insertion_first_solution_neighbors_ratio_),
252  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, cheapest_insertion_first_solution_min_neighbors_),
253  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, cheapest_insertion_ls_operator_neighbors_ratio_),
254  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, cheapest_insertion_ls_operator_min_neighbors_),
255  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization_),
256  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, cheapest_insertion_add_unperformed_entries_),
257  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, christofides_use_minimum_matching_),
258  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, local_search_operators_),
259  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, use_multi_armed_bandit_concatenate_operators_),
260  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, multi_armed_bandit_compound_operator_memory_coefficient_),
261  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, multi_armed_bandit_compound_operator_exploration_coefficient_),
262  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, relocate_expensive_chain_num_arcs_to_consider_),
263  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, heuristic_expensive_chain_lns_num_arcs_to_consider_),
264  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, heuristic_close_nodes_lns_num_nodes_),
265  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, local_search_metaheuristic_),
266  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, guided_local_search_lambda_coefficient_),
267  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, use_depth_first_search_),
268  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, use_cp_),
269  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, use_cp_sat_),
270  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, use_generalized_cp_sat_),
271  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, sat_parameters_),
272  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, continuous_scheduling_solver_),
273  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, mixed_integer_scheduling_solver_),
274  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, optimization_step_),
275  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, number_of_solutions_to_collect_),
276  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, solution_limit_),
277  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, time_limit_),
278  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, lns_time_limit_),
279  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, improvement_limit_parameters_),
280  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, use_full_propagation_),
281  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, log_search_),
282  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, log_cost_scaling_factor_),
283  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, log_cost_offset_),
284  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, log_tag_),
285  ~0u, // no _has_bits_
286  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingModelParameters, _internal_metadata_),
287  ~0u, // no _extensions_
288  ~0u, // no _oneof_case_
289  ~0u, // no _weak_field_map_
290  ~0u, // no _inlined_string_donated_
291  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingModelParameters, solver_parameters_),
292  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingModelParameters, reduce_vehicle_cost_model_),
293  PROTOBUF_FIELD_OFFSET(::operations_research::RoutingModelParameters, max_callback_cache_size_),
294 };
295 static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
298  { 47, -1, -1, sizeof(::operations_research::RoutingSearchParameters)},
299  { 95, -1, -1, sizeof(::operations_research::RoutingModelParameters)},
300 };
301 
302 static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
303  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::operations_research::_RoutingSearchParameters_LocalSearchNeighborhoodOperators_default_instance_),
304  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::operations_research::_RoutingSearchParameters_ImprovementSearchLimitParameters_default_instance_),
305  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::operations_research::_RoutingSearchParameters_default_instance_),
306  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::operations_research::_RoutingModelParameters_default_instance_),
307 };
308 
309 const char descriptor_table_protodef_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
310  "\n2ortools/constraint_solver/routing_para"
311  "meters.proto\022\023operations_research\032\036googl"
312  "e/protobuf/duration.proto\032-ortools/const"
313  "raint_solver/routing_enums.proto\0321ortool"
314  "s/constraint_solver/solver_parameters.pr"
315  "oto\032 ortools/sat/sat_parameters.proto\032#o"
316  "rtools/util/optional_boolean.proto\"\372%\n\027R"
317  "outingSearchParameters\022Q\n\027first_solution"
318  "_strategy\030\001 \001(\01620.operations_research.Fi"
319  "rstSolutionStrategy.Value\022.\n&use_unfilte"
320  "red_first_solution_strategy\030\002 \001(\010\022\037\n\027sav"
321  "ings_neighbors_ratio\030\016 \001(\001\022&\n\036savings_ma"
322  "x_memory_usage_bytes\030\027 \001(\001\022 \n\030savings_ad"
323  "d_reverse_arcs\030\017 \001(\010\022\037\n\027savings_arc_coef"
324  "ficient\030\022 \001(\001\022\037\n\027savings_parallel_routes"
325  "\030\023 \001(\010\022/\n\'cheapest_insertion_farthest_se"
326  "eds_ratio\030\020 \001(\001\0229\n1cheapest_insertion_fi"
327  "rst_solution_neighbors_ratio\030\025 \001(\001\0227\n/ch"
328  "eapest_insertion_first_solution_min_neig"
329  "hbors\030, \001(\005\0226\n.cheapest_insertion_ls_ope"
330  "rator_neighbors_ratio\030\037 \001(\001\0224\n,cheapest_"
331  "insertion_ls_operator_min_neighbors\030- \001("
332  "\005\022P\nHcheapest_insertion_first_solution_u"
333  "se_neighbors_ratio_for_initialization\030. "
334  "\001(\010\0222\n*cheapest_insertion_add_unperforme"
335  "d_entries\030( \001(\010\022)\n!christofides_use_mini"
336  "mum_matching\030\036 \001(\010\022m\n\026local_search_opera"
337  "tors\030\003 \001(\0132M.operations_research.Routing"
338  "SearchParameters.LocalSearchNeighborhood"
339  "Operators\0224\n,use_multi_armed_bandit_conc"
340  "atenate_operators\030) \001(\010\022\?\n7multi_armed_b"
341  "andit_compound_operator_memory_coefficie"
342  "nt\030* \001(\001\022D\n<multi_armed_bandit_compound_"
343  "operator_exploration_coefficient\030+ \001(\001\0225"
344  "\n-relocate_expensive_chain_num_arcs_to_c"
345  "onsider\030\024 \001(\005\022:\n2heuristic_expensive_cha"
346  "in_lns_num_arcs_to_consider\030 \001(\005\022+\n#heu"
347  "ristic_close_nodes_lns_num_nodes\030# \001(\005\022W"
348  "\n\032local_search_metaheuristic\030\004 \001(\01623.ope"
349  "rations_research.LocalSearchMetaheuristi"
350  "c.Value\022.\n&guided_local_search_lambda_co"
351  "efficient\030\005 \001(\001\022\036\n\026use_depth_first_searc"
352  "h\030\006 \001(\010\0224\n\006use_cp\030\034 \001(\0162$.operations_res"
353  "earch.OptionalBoolean\0228\n\nuse_cp_sat\030\033 \001("
354  "\0162$.operations_research.OptionalBoolean\022"
355  "D\n\026use_generalized_cp_sat\030/ \001(\0162$.operat"
356  "ions_research.OptionalBoolean\022>\n\016sat_par"
357  "ameters\0300 \001(\0132&.operations_research.sat."
358  "SatParameters\022c\n\034continuous_scheduling_s"
359  "olver\030! \001(\0162=.operations_research.Routin"
360  "gSearchParameters.SchedulingSolver\022f\n\037mi"
361  "xed_integer_scheduling_solver\030\" \001(\0162=.op"
362  "erations_research.RoutingSearchParameter"
363  "s.SchedulingSolver\022\031\n\021optimization_step\030"
364  "\007 \001(\001\022&\n\036number_of_solutions_to_collect\030"
365  "\021 \001(\005\022\026\n\016solution_limit\030\010 \001(\003\022-\n\ntime_li"
366  "mit\030\t \001(\0132\031.google.protobuf.Duration\0221\n\016"
367  "lns_time_limit\030\n \001(\0132\031.google.protobuf.D"
368  "uration\022s\n\034improvement_limit_parameters\030"
369  "% \001(\0132M.operations_research.RoutingSearc"
370  "hParameters.ImprovementSearchLimitParame"
371  "ters\022\034\n\024use_full_propagation\030\013 \001(\010\022\022\n\nlo"
372  "g_search\030\r \001(\010\022\037\n\027log_cost_scaling_facto"
373  "r\030\026 \001(\001\022\027\n\017log_cost_offset\030\035 \001(\001\022\017\n\007log_"
374  "tag\030$ \001(\t\032\327\022\n LocalSearchNeighborhoodOpe"
375  "rators\022:\n\014use_relocate\030\001 \001(\0162$.operation"
376  "s_research.OptionalBoolean\022\?\n\021use_reloca"
377  "te_pair\030\002 \001(\0162$.operations_research.Opti"
378  "onalBoolean\022E\n\027use_light_relocate_pair\030\030"
379  " \001(\0162$.operations_research.OptionalBoole"
380  "an\022D\n\026use_relocate_neighbors\030\003 \001(\0162$.ope"
381  "rations_research.OptionalBoolean\022B\n\024use_"
382  "relocate_subtrip\030\031 \001(\0162$.operations_rese"
383  "arch.OptionalBoolean\022:\n\014use_exchange\030\004 \001"
384  "(\0162$.operations_research.OptionalBoolean"
385  "\022\?\n\021use_exchange_pair\030\026 \001(\0162$.operations"
386  "_research.OptionalBoolean\022B\n\024use_exchang"
387  "e_subtrip\030\032 \001(\0162$.operations_research.Op"
388  "tionalBoolean\0227\n\tuse_cross\030\005 \001(\0162$.opera"
389  "tions_research.OptionalBoolean\022@\n\022use_cr"
390  "oss_exchange\030\006 \001(\0162$.operations_research"
391  ".OptionalBoolean\022J\n\034use_relocate_expensi"
392  "ve_chain\030\027 \001(\0162$.operations_research.Opt"
393  "ionalBoolean\0229\n\013use_two_opt\030\007 \001(\0162$.oper"
394  "ations_research.OptionalBoolean\0228\n\nuse_o"
395  "r_opt\030\010 \001(\0162$.operations_research.Option"
396  "alBoolean\022\?\n\021use_lin_kernighan\030\t \001(\0162$.o"
397  "perations_research.OptionalBoolean\0229\n\013us"
398  "e_tsp_opt\030\n \001(\0162$.operations_research.Op"
399  "tionalBoolean\022=\n\017use_make_active\030\013 \001(\0162$"
400  ".operations_research.OptionalBoolean\022J\n\034"
401  "use_relocate_and_make_active\030\025 \001(\0162$.ope"
402  "rations_research.OptionalBoolean\022\?\n\021use_"
403  "make_inactive\030\014 \001(\0162$.operations_researc"
404  "h.OptionalBoolean\022E\n\027use_make_chain_inac"
405  "tive\030\r \001(\0162$.operations_research.Optiona"
406  "lBoolean\022=\n\017use_swap_active\030\016 \001(\0162$.oper"
407  "ations_research.OptionalBoolean\022F\n\030use_e"
408  "xtended_swap_active\030\017 \001(\0162$.operations_r"
409  "esearch.OptionalBoolean\022G\n\031use_node_pair"
410  "_swap_active\030\024 \001(\0162$.operations_research"
411  ".OptionalBoolean\022:\n\014use_path_lns\030\020 \001(\0162$"
412  ".operations_research.OptionalBoolean\022\?\n\021"
413  "use_full_path_lns\030\021 \001(\0162$.operations_res"
414  "earch.OptionalBoolean\0229\n\013use_tsp_lns\030\022 \001"
415  "(\0162$.operations_research.OptionalBoolean"
416  "\022>\n\020use_inactive_lns\030\023 \001(\0162$.operations_"
417  "research.OptionalBoolean\022T\n&use_global_c"
418  "heapest_insertion_path_lns\030\033 \001(\0162$.opera"
419  "tions_research.OptionalBoolean\022S\n%use_lo"
420  "cal_cheapest_insertion_path_lns\030\034 \001(\0162$."
421  "operations_research.OptionalBoolean\022l\n>u"
422  "se_relocate_path_global_cheapest_inserti"
423  "on_insert_unperformed\030! \001(\0162$.operations"
424  "_research.OptionalBoolean\022_\n1use_global_"
425  "cheapest_insertion_expensive_chain_lns\030\035"
426  " \001(\0162$.operations_research.OptionalBoole"
427  "an\022^\n0use_local_cheapest_insertion_expen"
428  "sive_chain_lns\030\036 \001(\0162$.operations_resear"
429  "ch.OptionalBoolean\022[\n-use_global_cheapes"
430  "t_insertion_close_nodes_lns\030\037 \001(\0162$.oper"
431  "ations_research.OptionalBoolean\022Z\n,use_l"
432  "ocal_cheapest_insertion_close_nodes_lns\030"
433  " \001(\0162$.operations_research.OptionalBool"
434  "ean\032u\n ImprovementSearchLimitParameters\022"
435  "$\n\034improvement_rate_coefficient\030& \001(\001\022+\n"
436  "#improvement_rate_solutions_distance\030\' \001"
437  "(\005\"3\n\020SchedulingSolver\022\t\n\005UNSET\020\000\022\010\n\004GLO"
438  "P\020\001\022\n\n\006CP_SAT\020\002\"\250\001\n\026RoutingModelParamete"
439  "rs\022J\n\021solver_parameters\030\001 \001(\0132/.operatio"
440  "ns_research.ConstraintSolverParameters\022!"
441  "\n\031reduce_vehicle_cost_model\030\002 \001(\010\022\037\n\027max"
442  "_callback_cache_size\030\003 \001(\005BI\n#com.google"
443  ".ortools.constraintsolverP\001\252\002\037Google.OrT"
444  "ools.ConstraintSolverb\006proto3"
445  ;
446 static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto_deps[5] = {
447  &::descriptor_table_google_2fprotobuf_2fduration_2eproto,
452 };
454 const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto = {
455  false, false, 5389, descriptor_table_protodef_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto, "ortools/constraint_solver/routing_parameters.proto",
459 };
460 PROTOBUF_ATTRIBUTE_WEAK const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable* descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto_getter() {
462 }
463 
464 // Force running AddDescriptors() at dynamic initialization time.
465 PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::PROTOBUF_NAMESPACE_ID::internal::AddDescriptorsRunner dynamic_init_dummy_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto(&descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto);
466 namespace operations_research {
467 const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* RoutingSearchParameters_SchedulingSolver_descriptor() {
468  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto);
470 }
472  switch (value) {
473  case 0:
474  case 1:
475  case 2:
476  return true;
477  default:
478  return false;
479  }
480 }
481 
482 #if (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
489 #endif // (__cplusplus < 201703) && (!defined(_MSC_VER) || (_MSC_VER >= 1900 && _MSC_VER < 1912))
490 
491 // ===================================================================
492 
494  public:
495 };
496 
498  bool is_message_owned)
499  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
500  SharedCtor();
501  if (!is_message_owned) {
502  RegisterArenaDtor(arena);
503  }
504  // @@protoc_insertion_point(arena_constructor:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
505 }
507  : ::PROTOBUF_NAMESPACE_ID::Message() {
508  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
509  ::memcpy(&use_relocate_, &from.use_relocate_,
510  static_cast<size_t>(reinterpret_cast<char*>(&use_relocate_path_global_cheapest_insertion_insert_unperformed_) -
511  reinterpret_cast<char*>(&use_relocate_)) + sizeof(use_relocate_path_global_cheapest_insertion_insert_unperformed_));
512  // @@protoc_insertion_point(copy_constructor:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
513 }
514 
515 inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::SharedCtor() {
516 ::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
517  reinterpret_cast<char*>(&use_relocate_) - reinterpret_cast<char*>(this)),
518  0, static_cast<size_t>(reinterpret_cast<char*>(&use_relocate_path_global_cheapest_insertion_insert_unperformed_) -
519  reinterpret_cast<char*>(&use_relocate_)) + sizeof(use_relocate_path_global_cheapest_insertion_insert_unperformed_));
520 }
521 
523  // @@protoc_insertion_point(destructor:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
524  if (GetArenaForAllocation() != nullptr) return;
525  SharedDtor();
526  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
527 }
528 
529 inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::SharedDtor() {
530  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
531 }
532 
533 void RoutingSearchParameters_LocalSearchNeighborhoodOperators::ArenaDtor(void* object) {
534  RoutingSearchParameters_LocalSearchNeighborhoodOperators* _this = reinterpret_cast< RoutingSearchParameters_LocalSearchNeighborhoodOperators* >(object);
535  (void)_this;
536 }
537 void RoutingSearchParameters_LocalSearchNeighborhoodOperators::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
538 }
539 void RoutingSearchParameters_LocalSearchNeighborhoodOperators::SetCachedSize(int size) const {
540  _cached_size_.Set(size);
541 }
542 
544 // @@protoc_insertion_point(message_clear_start:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
545  uint32_t cached_has_bits = 0;
546  // Prevent compiler warnings about cached_has_bits being unused
547  (void) cached_has_bits;
548 
549  ::memset(&use_relocate_, 0, static_cast<size_t>(
550  reinterpret_cast<char*>(&use_relocate_path_global_cheapest_insertion_insert_unperformed_) -
551  reinterpret_cast<char*>(&use_relocate_)) + sizeof(use_relocate_path_global_cheapest_insertion_insert_unperformed_));
552  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
553 }
554 
555 const char* RoutingSearchParameters_LocalSearchNeighborhoodOperators::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
556 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
557  while (!ctx->Done(&ptr)) {
558  uint32_t tag;
559  ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
560  switch (tag >> 3) {
561  // .operations_research.OptionalBoolean use_relocate = 1;
562  case 1:
563  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
564  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
565  CHK_(ptr);
566  _internal_set_use_relocate(static_cast<::operations_research::OptionalBoolean>(val));
567  } else
568  goto handle_unusual;
569  continue;
570  // .operations_research.OptionalBoolean use_relocate_pair = 2;
571  case 2:
572  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
573  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
574  CHK_(ptr);
575  _internal_set_use_relocate_pair(static_cast<::operations_research::OptionalBoolean>(val));
576  } else
577  goto handle_unusual;
578  continue;
579  // .operations_research.OptionalBoolean use_relocate_neighbors = 3;
580  case 3:
581  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
582  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
583  CHK_(ptr);
584  _internal_set_use_relocate_neighbors(static_cast<::operations_research::OptionalBoolean>(val));
585  } else
586  goto handle_unusual;
587  continue;
588  // .operations_research.OptionalBoolean use_exchange = 4;
589  case 4:
590  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
591  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
592  CHK_(ptr);
593  _internal_set_use_exchange(static_cast<::operations_research::OptionalBoolean>(val));
594  } else
595  goto handle_unusual;
596  continue;
597  // .operations_research.OptionalBoolean use_cross = 5;
598  case 5:
599  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
600  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
601  CHK_(ptr);
602  _internal_set_use_cross(static_cast<::operations_research::OptionalBoolean>(val));
603  } else
604  goto handle_unusual;
605  continue;
606  // .operations_research.OptionalBoolean use_cross_exchange = 6;
607  case 6:
608  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
609  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
610  CHK_(ptr);
611  _internal_set_use_cross_exchange(static_cast<::operations_research::OptionalBoolean>(val));
612  } else
613  goto handle_unusual;
614  continue;
615  // .operations_research.OptionalBoolean use_two_opt = 7;
616  case 7:
617  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
618  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
619  CHK_(ptr);
620  _internal_set_use_two_opt(static_cast<::operations_research::OptionalBoolean>(val));
621  } else
622  goto handle_unusual;
623  continue;
624  // .operations_research.OptionalBoolean use_or_opt = 8;
625  case 8:
626  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
627  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
628  CHK_(ptr);
629  _internal_set_use_or_opt(static_cast<::operations_research::OptionalBoolean>(val));
630  } else
631  goto handle_unusual;
632  continue;
633  // .operations_research.OptionalBoolean use_lin_kernighan = 9;
634  case 9:
635  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 72)) {
636  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
637  CHK_(ptr);
638  _internal_set_use_lin_kernighan(static_cast<::operations_research::OptionalBoolean>(val));
639  } else
640  goto handle_unusual;
641  continue;
642  // .operations_research.OptionalBoolean use_tsp_opt = 10;
643  case 10:
644  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 80)) {
645  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
646  CHK_(ptr);
647  _internal_set_use_tsp_opt(static_cast<::operations_research::OptionalBoolean>(val));
648  } else
649  goto handle_unusual;
650  continue;
651  // .operations_research.OptionalBoolean use_make_active = 11;
652  case 11:
653  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 88)) {
654  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
655  CHK_(ptr);
656  _internal_set_use_make_active(static_cast<::operations_research::OptionalBoolean>(val));
657  } else
658  goto handle_unusual;
659  continue;
660  // .operations_research.OptionalBoolean use_make_inactive = 12;
661  case 12:
662  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
663  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
664  CHK_(ptr);
665  _internal_set_use_make_inactive(static_cast<::operations_research::OptionalBoolean>(val));
666  } else
667  goto handle_unusual;
668  continue;
669  // .operations_research.OptionalBoolean use_make_chain_inactive = 13;
670  case 13:
671  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
672  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
673  CHK_(ptr);
674  _internal_set_use_make_chain_inactive(static_cast<::operations_research::OptionalBoolean>(val));
675  } else
676  goto handle_unusual;
677  continue;
678  // .operations_research.OptionalBoolean use_swap_active = 14;
679  case 14:
680  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 112)) {
681  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
682  CHK_(ptr);
683  _internal_set_use_swap_active(static_cast<::operations_research::OptionalBoolean>(val));
684  } else
685  goto handle_unusual;
686  continue;
687  // .operations_research.OptionalBoolean use_extended_swap_active = 15;
688  case 15:
689  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 120)) {
690  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
691  CHK_(ptr);
692  _internal_set_use_extended_swap_active(static_cast<::operations_research::OptionalBoolean>(val));
693  } else
694  goto handle_unusual;
695  continue;
696  // .operations_research.OptionalBoolean use_path_lns = 16;
697  case 16:
698  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 128)) {
699  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
700  CHK_(ptr);
701  _internal_set_use_path_lns(static_cast<::operations_research::OptionalBoolean>(val));
702  } else
703  goto handle_unusual;
704  continue;
705  // .operations_research.OptionalBoolean use_full_path_lns = 17;
706  case 17:
707  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 136)) {
708  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
709  CHK_(ptr);
710  _internal_set_use_full_path_lns(static_cast<::operations_research::OptionalBoolean>(val));
711  } else
712  goto handle_unusual;
713  continue;
714  // .operations_research.OptionalBoolean use_tsp_lns = 18;
715  case 18:
716  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 144)) {
717  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
718  CHK_(ptr);
719  _internal_set_use_tsp_lns(static_cast<::operations_research::OptionalBoolean>(val));
720  } else
721  goto handle_unusual;
722  continue;
723  // .operations_research.OptionalBoolean use_inactive_lns = 19;
724  case 19:
725  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 152)) {
726  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
727  CHK_(ptr);
728  _internal_set_use_inactive_lns(static_cast<::operations_research::OptionalBoolean>(val));
729  } else
730  goto handle_unusual;
731  continue;
732  // .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
733  case 20:
734  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 160)) {
735  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
736  CHK_(ptr);
737  _internal_set_use_node_pair_swap_active(static_cast<::operations_research::OptionalBoolean>(val));
738  } else
739  goto handle_unusual;
740  continue;
741  // .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
742  case 21:
743  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 168)) {
744  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
745  CHK_(ptr);
746  _internal_set_use_relocate_and_make_active(static_cast<::operations_research::OptionalBoolean>(val));
747  } else
748  goto handle_unusual;
749  continue;
750  // .operations_research.OptionalBoolean use_exchange_pair = 22;
751  case 22:
752  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 176)) {
753  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
754  CHK_(ptr);
755  _internal_set_use_exchange_pair(static_cast<::operations_research::OptionalBoolean>(val));
756  } else
757  goto handle_unusual;
758  continue;
759  // .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
760  case 23:
761  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 184)) {
762  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
763  CHK_(ptr);
764  _internal_set_use_relocate_expensive_chain(static_cast<::operations_research::OptionalBoolean>(val));
765  } else
766  goto handle_unusual;
767  continue;
768  // .operations_research.OptionalBoolean use_light_relocate_pair = 24;
769  case 24:
770  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 192)) {
771  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
772  CHK_(ptr);
773  _internal_set_use_light_relocate_pair(static_cast<::operations_research::OptionalBoolean>(val));
774  } else
775  goto handle_unusual;
776  continue;
777  // .operations_research.OptionalBoolean use_relocate_subtrip = 25;
778  case 25:
779  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 200)) {
780  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
781  CHK_(ptr);
782  _internal_set_use_relocate_subtrip(static_cast<::operations_research::OptionalBoolean>(val));
783  } else
784  goto handle_unusual;
785  continue;
786  // .operations_research.OptionalBoolean use_exchange_subtrip = 26;
787  case 26:
788  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 208)) {
789  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
790  CHK_(ptr);
791  _internal_set_use_exchange_subtrip(static_cast<::operations_research::OptionalBoolean>(val));
792  } else
793  goto handle_unusual;
794  continue;
795  // .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
796  case 27:
797  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 216)) {
798  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
799  CHK_(ptr);
800  _internal_set_use_global_cheapest_insertion_path_lns(static_cast<::operations_research::OptionalBoolean>(val));
801  } else
802  goto handle_unusual;
803  continue;
804  // .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
805  case 28:
806  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 224)) {
807  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
808  CHK_(ptr);
809  _internal_set_use_local_cheapest_insertion_path_lns(static_cast<::operations_research::OptionalBoolean>(val));
810  } else
811  goto handle_unusual;
812  continue;
813  // .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
814  case 29:
815  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 232)) {
816  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
817  CHK_(ptr);
818  _internal_set_use_global_cheapest_insertion_expensive_chain_lns(static_cast<::operations_research::OptionalBoolean>(val));
819  } else
820  goto handle_unusual;
821  continue;
822  // .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
823  case 30:
824  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 240)) {
825  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
826  CHK_(ptr);
827  _internal_set_use_local_cheapest_insertion_expensive_chain_lns(static_cast<::operations_research::OptionalBoolean>(val));
828  } else
829  goto handle_unusual;
830  continue;
831  // .operations_research.OptionalBoolean use_global_cheapest_insertion_close_nodes_lns = 31;
832  case 31:
833  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 248)) {
834  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
835  CHK_(ptr);
836  _internal_set_use_global_cheapest_insertion_close_nodes_lns(static_cast<::operations_research::OptionalBoolean>(val));
837  } else
838  goto handle_unusual;
839  continue;
840  // .operations_research.OptionalBoolean use_local_cheapest_insertion_close_nodes_lns = 32;
841  case 32:
842  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 0)) {
843  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
844  CHK_(ptr);
845  _internal_set_use_local_cheapest_insertion_close_nodes_lns(static_cast<::operations_research::OptionalBoolean>(val));
846  } else
847  goto handle_unusual;
848  continue;
849  // .operations_research.OptionalBoolean use_relocate_path_global_cheapest_insertion_insert_unperformed = 33;
850  case 33:
851  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
852  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
853  CHK_(ptr);
854  _internal_set_use_relocate_path_global_cheapest_insertion_insert_unperformed(static_cast<::operations_research::OptionalBoolean>(val));
855  } else
856  goto handle_unusual;
857  continue;
858  default:
859  goto handle_unusual;
860  } // switch
861  handle_unusual:
862  if ((tag == 0) || ((tag & 7) == 4)) {
863  CHK_(ptr);
864  ctx->SetLastTag(tag);
865  goto message_done;
866  }
867  ptr = UnknownFieldParse(
868  tag,
869  _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
870  ptr, ctx);
871  CHK_(ptr != nullptr);
872  } // while
873 message_done:
874  return ptr;
875 failure:
876  ptr = nullptr;
877  goto message_done;
878 #undef CHK_
879 }
880 
882  uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
883  // @@protoc_insertion_point(serialize_to_array_start:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
884  uint32_t cached_has_bits = 0;
885  (void) cached_has_bits;
886 
887  // .operations_research.OptionalBoolean use_relocate = 1;
888  if (this->_internal_use_relocate() != 0) {
889  target = stream->EnsureSpace(target);
890  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
891  1, this->_internal_use_relocate(), target);
892  }
893 
894  // .operations_research.OptionalBoolean use_relocate_pair = 2;
895  if (this->_internal_use_relocate_pair() != 0) {
896  target = stream->EnsureSpace(target);
897  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
898  2, this->_internal_use_relocate_pair(), target);
899  }
900 
901  // .operations_research.OptionalBoolean use_relocate_neighbors = 3;
902  if (this->_internal_use_relocate_neighbors() != 0) {
903  target = stream->EnsureSpace(target);
904  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
905  3, this->_internal_use_relocate_neighbors(), target);
906  }
907 
908  // .operations_research.OptionalBoolean use_exchange = 4;
909  if (this->_internal_use_exchange() != 0) {
910  target = stream->EnsureSpace(target);
911  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
912  4, this->_internal_use_exchange(), target);
913  }
914 
915  // .operations_research.OptionalBoolean use_cross = 5;
916  if (this->_internal_use_cross() != 0) {
917  target = stream->EnsureSpace(target);
918  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
919  5, this->_internal_use_cross(), target);
920  }
921 
922  // .operations_research.OptionalBoolean use_cross_exchange = 6;
923  if (this->_internal_use_cross_exchange() != 0) {
924  target = stream->EnsureSpace(target);
925  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
926  6, this->_internal_use_cross_exchange(), target);
927  }
928 
929  // .operations_research.OptionalBoolean use_two_opt = 7;
930  if (this->_internal_use_two_opt() != 0) {
931  target = stream->EnsureSpace(target);
932  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
933  7, this->_internal_use_two_opt(), target);
934  }
935 
936  // .operations_research.OptionalBoolean use_or_opt = 8;
937  if (this->_internal_use_or_opt() != 0) {
938  target = stream->EnsureSpace(target);
939  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
940  8, this->_internal_use_or_opt(), target);
941  }
942 
943  // .operations_research.OptionalBoolean use_lin_kernighan = 9;
944  if (this->_internal_use_lin_kernighan() != 0) {
945  target = stream->EnsureSpace(target);
946  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
947  9, this->_internal_use_lin_kernighan(), target);
948  }
949 
950  // .operations_research.OptionalBoolean use_tsp_opt = 10;
951  if (this->_internal_use_tsp_opt() != 0) {
952  target = stream->EnsureSpace(target);
953  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
954  10, this->_internal_use_tsp_opt(), target);
955  }
956 
957  // .operations_research.OptionalBoolean use_make_active = 11;
958  if (this->_internal_use_make_active() != 0) {
959  target = stream->EnsureSpace(target);
960  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
961  11, this->_internal_use_make_active(), target);
962  }
963 
964  // .operations_research.OptionalBoolean use_make_inactive = 12;
965  if (this->_internal_use_make_inactive() != 0) {
966  target = stream->EnsureSpace(target);
967  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
968  12, this->_internal_use_make_inactive(), target);
969  }
970 
971  // .operations_research.OptionalBoolean use_make_chain_inactive = 13;
972  if (this->_internal_use_make_chain_inactive() != 0) {
973  target = stream->EnsureSpace(target);
974  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
975  13, this->_internal_use_make_chain_inactive(), target);
976  }
977 
978  // .operations_research.OptionalBoolean use_swap_active = 14;
979  if (this->_internal_use_swap_active() != 0) {
980  target = stream->EnsureSpace(target);
981  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
982  14, this->_internal_use_swap_active(), target);
983  }
984 
985  // .operations_research.OptionalBoolean use_extended_swap_active = 15;
986  if (this->_internal_use_extended_swap_active() != 0) {
987  target = stream->EnsureSpace(target);
988  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
989  15, this->_internal_use_extended_swap_active(), target);
990  }
991 
992  // .operations_research.OptionalBoolean use_path_lns = 16;
993  if (this->_internal_use_path_lns() != 0) {
994  target = stream->EnsureSpace(target);
995  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
996  16, this->_internal_use_path_lns(), target);
997  }
998 
999  // .operations_research.OptionalBoolean use_full_path_lns = 17;
1000  if (this->_internal_use_full_path_lns() != 0) {
1001  target = stream->EnsureSpace(target);
1002  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1003  17, this->_internal_use_full_path_lns(), target);
1004  }
1005 
1006  // .operations_research.OptionalBoolean use_tsp_lns = 18;
1007  if (this->_internal_use_tsp_lns() != 0) {
1008  target = stream->EnsureSpace(target);
1009  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1010  18, this->_internal_use_tsp_lns(), target);
1011  }
1012 
1013  // .operations_research.OptionalBoolean use_inactive_lns = 19;
1014  if (this->_internal_use_inactive_lns() != 0) {
1015  target = stream->EnsureSpace(target);
1016  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1017  19, this->_internal_use_inactive_lns(), target);
1018  }
1019 
1020  // .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
1021  if (this->_internal_use_node_pair_swap_active() != 0) {
1022  target = stream->EnsureSpace(target);
1023  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1024  20, this->_internal_use_node_pair_swap_active(), target);
1025  }
1026 
1027  // .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
1028  if (this->_internal_use_relocate_and_make_active() != 0) {
1029  target = stream->EnsureSpace(target);
1030  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1031  21, this->_internal_use_relocate_and_make_active(), target);
1032  }
1033 
1034  // .operations_research.OptionalBoolean use_exchange_pair = 22;
1035  if (this->_internal_use_exchange_pair() != 0) {
1036  target = stream->EnsureSpace(target);
1037  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1038  22, this->_internal_use_exchange_pair(), target);
1039  }
1040 
1041  // .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
1042  if (this->_internal_use_relocate_expensive_chain() != 0) {
1043  target = stream->EnsureSpace(target);
1044  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1045  23, this->_internal_use_relocate_expensive_chain(), target);
1046  }
1047 
1048  // .operations_research.OptionalBoolean use_light_relocate_pair = 24;
1049  if (this->_internal_use_light_relocate_pair() != 0) {
1050  target = stream->EnsureSpace(target);
1051  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1052  24, this->_internal_use_light_relocate_pair(), target);
1053  }
1054 
1055  // .operations_research.OptionalBoolean use_relocate_subtrip = 25;
1056  if (this->_internal_use_relocate_subtrip() != 0) {
1057  target = stream->EnsureSpace(target);
1058  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1059  25, this->_internal_use_relocate_subtrip(), target);
1060  }
1061 
1062  // .operations_research.OptionalBoolean use_exchange_subtrip = 26;
1063  if (this->_internal_use_exchange_subtrip() != 0) {
1064  target = stream->EnsureSpace(target);
1065  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1066  26, this->_internal_use_exchange_subtrip(), target);
1067  }
1068 
1069  // .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
1070  if (this->_internal_use_global_cheapest_insertion_path_lns() != 0) {
1071  target = stream->EnsureSpace(target);
1072  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1073  27, this->_internal_use_global_cheapest_insertion_path_lns(), target);
1074  }
1075 
1076  // .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
1077  if (this->_internal_use_local_cheapest_insertion_path_lns() != 0) {
1078  target = stream->EnsureSpace(target);
1079  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1080  28, this->_internal_use_local_cheapest_insertion_path_lns(), target);
1081  }
1082 
1083  // .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
1084  if (this->_internal_use_global_cheapest_insertion_expensive_chain_lns() != 0) {
1085  target = stream->EnsureSpace(target);
1086  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1087  29, this->_internal_use_global_cheapest_insertion_expensive_chain_lns(), target);
1088  }
1089 
1090  // .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
1091  if (this->_internal_use_local_cheapest_insertion_expensive_chain_lns() != 0) {
1092  target = stream->EnsureSpace(target);
1093  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1094  30, this->_internal_use_local_cheapest_insertion_expensive_chain_lns(), target);
1095  }
1096 
1097  // .operations_research.OptionalBoolean use_global_cheapest_insertion_close_nodes_lns = 31;
1098  if (this->_internal_use_global_cheapest_insertion_close_nodes_lns() != 0) {
1099  target = stream->EnsureSpace(target);
1100  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1101  31, this->_internal_use_global_cheapest_insertion_close_nodes_lns(), target);
1102  }
1103 
1104  // .operations_research.OptionalBoolean use_local_cheapest_insertion_close_nodes_lns = 32;
1105  if (this->_internal_use_local_cheapest_insertion_close_nodes_lns() != 0) {
1106  target = stream->EnsureSpace(target);
1107  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1108  32, this->_internal_use_local_cheapest_insertion_close_nodes_lns(), target);
1109  }
1110 
1111  // .operations_research.OptionalBoolean use_relocate_path_global_cheapest_insertion_insert_unperformed = 33;
1112  if (this->_internal_use_relocate_path_global_cheapest_insertion_insert_unperformed() != 0) {
1113  target = stream->EnsureSpace(target);
1114  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
1115  33, this->_internal_use_relocate_path_global_cheapest_insertion_insert_unperformed(), target);
1116  }
1117 
1118  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
1119  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
1120  _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
1121  }
1122  // @@protoc_insertion_point(serialize_to_array_end:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
1123  return target;
1124 }
1125 
1127 // @@protoc_insertion_point(message_byte_size_start:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
1128  size_t total_size = 0;
1129 
1130  uint32_t cached_has_bits = 0;
1131  // Prevent compiler warnings about cached_has_bits being unused
1132  (void) cached_has_bits;
1133 
1134  // .operations_research.OptionalBoolean use_relocate = 1;
1135  if (this->_internal_use_relocate() != 0) {
1136  total_size += 1 +
1137  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_relocate());
1138  }
1139 
1140  // .operations_research.OptionalBoolean use_relocate_pair = 2;
1141  if (this->_internal_use_relocate_pair() != 0) {
1142  total_size += 1 +
1143  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_relocate_pair());
1144  }
1145 
1146  // .operations_research.OptionalBoolean use_relocate_neighbors = 3;
1147  if (this->_internal_use_relocate_neighbors() != 0) {
1148  total_size += 1 +
1149  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_relocate_neighbors());
1150  }
1151 
1152  // .operations_research.OptionalBoolean use_exchange = 4;
1153  if (this->_internal_use_exchange() != 0) {
1154  total_size += 1 +
1155  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_exchange());
1156  }
1157 
1158  // .operations_research.OptionalBoolean use_cross = 5;
1159  if (this->_internal_use_cross() != 0) {
1160  total_size += 1 +
1161  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_cross());
1162  }
1163 
1164  // .operations_research.OptionalBoolean use_cross_exchange = 6;
1165  if (this->_internal_use_cross_exchange() != 0) {
1166  total_size += 1 +
1167  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_cross_exchange());
1168  }
1169 
1170  // .operations_research.OptionalBoolean use_two_opt = 7;
1171  if (this->_internal_use_two_opt() != 0) {
1172  total_size += 1 +
1173  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_two_opt());
1174  }
1175 
1176  // .operations_research.OptionalBoolean use_or_opt = 8;
1177  if (this->_internal_use_or_opt() != 0) {
1178  total_size += 1 +
1179  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_or_opt());
1180  }
1181 
1182  // .operations_research.OptionalBoolean use_lin_kernighan = 9;
1183  if (this->_internal_use_lin_kernighan() != 0) {
1184  total_size += 1 +
1185  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_lin_kernighan());
1186  }
1187 
1188  // .operations_research.OptionalBoolean use_tsp_opt = 10;
1189  if (this->_internal_use_tsp_opt() != 0) {
1190  total_size += 1 +
1191  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_tsp_opt());
1192  }
1193 
1194  // .operations_research.OptionalBoolean use_make_active = 11;
1195  if (this->_internal_use_make_active() != 0) {
1196  total_size += 1 +
1197  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_make_active());
1198  }
1199 
1200  // .operations_research.OptionalBoolean use_make_inactive = 12;
1201  if (this->_internal_use_make_inactive() != 0) {
1202  total_size += 1 +
1203  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_make_inactive());
1204  }
1205 
1206  // .operations_research.OptionalBoolean use_make_chain_inactive = 13;
1207  if (this->_internal_use_make_chain_inactive() != 0) {
1208  total_size += 1 +
1209  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_make_chain_inactive());
1210  }
1211 
1212  // .operations_research.OptionalBoolean use_swap_active = 14;
1213  if (this->_internal_use_swap_active() != 0) {
1214  total_size += 1 +
1215  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_swap_active());
1216  }
1217 
1218  // .operations_research.OptionalBoolean use_extended_swap_active = 15;
1219  if (this->_internal_use_extended_swap_active() != 0) {
1220  total_size += 1 +
1221  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_extended_swap_active());
1222  }
1223 
1224  // .operations_research.OptionalBoolean use_path_lns = 16;
1225  if (this->_internal_use_path_lns() != 0) {
1226  total_size += 2 +
1227  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_path_lns());
1228  }
1229 
1230  // .operations_research.OptionalBoolean use_full_path_lns = 17;
1231  if (this->_internal_use_full_path_lns() != 0) {
1232  total_size += 2 +
1233  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_full_path_lns());
1234  }
1235 
1236  // .operations_research.OptionalBoolean use_tsp_lns = 18;
1237  if (this->_internal_use_tsp_lns() != 0) {
1238  total_size += 2 +
1239  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_tsp_lns());
1240  }
1241 
1242  // .operations_research.OptionalBoolean use_inactive_lns = 19;
1243  if (this->_internal_use_inactive_lns() != 0) {
1244  total_size += 2 +
1245  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_inactive_lns());
1246  }
1247 
1248  // .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
1249  if (this->_internal_use_node_pair_swap_active() != 0) {
1250  total_size += 2 +
1251  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_node_pair_swap_active());
1252  }
1253 
1254  // .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
1255  if (this->_internal_use_relocate_and_make_active() != 0) {
1256  total_size += 2 +
1257  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_relocate_and_make_active());
1258  }
1259 
1260  // .operations_research.OptionalBoolean use_exchange_pair = 22;
1261  if (this->_internal_use_exchange_pair() != 0) {
1262  total_size += 2 +
1263  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_exchange_pair());
1264  }
1265 
1266  // .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
1267  if (this->_internal_use_relocate_expensive_chain() != 0) {
1268  total_size += 2 +
1269  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_relocate_expensive_chain());
1270  }
1271 
1272  // .operations_research.OptionalBoolean use_light_relocate_pair = 24;
1273  if (this->_internal_use_light_relocate_pair() != 0) {
1274  total_size += 2 +
1275  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_light_relocate_pair());
1276  }
1277 
1278  // .operations_research.OptionalBoolean use_relocate_subtrip = 25;
1279  if (this->_internal_use_relocate_subtrip() != 0) {
1280  total_size += 2 +
1281  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_relocate_subtrip());
1282  }
1283 
1284  // .operations_research.OptionalBoolean use_exchange_subtrip = 26;
1285  if (this->_internal_use_exchange_subtrip() != 0) {
1286  total_size += 2 +
1287  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_exchange_subtrip());
1288  }
1289 
1290  // .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
1291  if (this->_internal_use_global_cheapest_insertion_path_lns() != 0) {
1292  total_size += 2 +
1293  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_global_cheapest_insertion_path_lns());
1294  }
1295 
1296  // .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
1297  if (this->_internal_use_local_cheapest_insertion_path_lns() != 0) {
1298  total_size += 2 +
1299  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_local_cheapest_insertion_path_lns());
1300  }
1301 
1302  // .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
1303  if (this->_internal_use_global_cheapest_insertion_expensive_chain_lns() != 0) {
1304  total_size += 2 +
1305  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_global_cheapest_insertion_expensive_chain_lns());
1306  }
1307 
1308  // .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
1309  if (this->_internal_use_local_cheapest_insertion_expensive_chain_lns() != 0) {
1310  total_size += 2 +
1311  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_local_cheapest_insertion_expensive_chain_lns());
1312  }
1313 
1314  // .operations_research.OptionalBoolean use_global_cheapest_insertion_close_nodes_lns = 31;
1315  if (this->_internal_use_global_cheapest_insertion_close_nodes_lns() != 0) {
1316  total_size += 2 +
1317  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_global_cheapest_insertion_close_nodes_lns());
1318  }
1319 
1320  // .operations_research.OptionalBoolean use_local_cheapest_insertion_close_nodes_lns = 32;
1321  if (this->_internal_use_local_cheapest_insertion_close_nodes_lns() != 0) {
1322  total_size += 2 +
1323  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_local_cheapest_insertion_close_nodes_lns());
1324  }
1325 
1326  // .operations_research.OptionalBoolean use_relocate_path_global_cheapest_insertion_insert_unperformed = 33;
1327  if (this->_internal_use_relocate_path_global_cheapest_insertion_insert_unperformed() != 0) {
1328  total_size += 2 +
1329  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_relocate_path_global_cheapest_insertion_insert_unperformed());
1330  }
1331 
1332  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
1333 }
1334 
1335 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RoutingSearchParameters_LocalSearchNeighborhoodOperators::_class_data_ = {
1336  ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
1337  RoutingSearchParameters_LocalSearchNeighborhoodOperators::MergeImpl
1338 };
1339 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RoutingSearchParameters_LocalSearchNeighborhoodOperators::GetClassData() const { return &_class_data_; }
1340 
1341 void RoutingSearchParameters_LocalSearchNeighborhoodOperators::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
1342  const ::PROTOBUF_NAMESPACE_ID::Message& from) {
1343  static_cast<RoutingSearchParameters_LocalSearchNeighborhoodOperators *>(to)->MergeFrom(
1344  static_cast<const RoutingSearchParameters_LocalSearchNeighborhoodOperators &>(from));
1345 }
1346 
1347 
1349 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
1350  GOOGLE_DCHECK_NE(&from, this);
1351  uint32_t cached_has_bits = 0;
1352  (void) cached_has_bits;
1353 
1354  if (from._internal_use_relocate() != 0) {
1355  _internal_set_use_relocate(from._internal_use_relocate());
1356  }
1357  if (from._internal_use_relocate_pair() != 0) {
1358  _internal_set_use_relocate_pair(from._internal_use_relocate_pair());
1359  }
1360  if (from._internal_use_relocate_neighbors() != 0) {
1361  _internal_set_use_relocate_neighbors(from._internal_use_relocate_neighbors());
1362  }
1363  if (from._internal_use_exchange() != 0) {
1364  _internal_set_use_exchange(from._internal_use_exchange());
1365  }
1366  if (from._internal_use_cross() != 0) {
1367  _internal_set_use_cross(from._internal_use_cross());
1368  }
1369  if (from._internal_use_cross_exchange() != 0) {
1370  _internal_set_use_cross_exchange(from._internal_use_cross_exchange());
1371  }
1372  if (from._internal_use_two_opt() != 0) {
1373  _internal_set_use_two_opt(from._internal_use_two_opt());
1374  }
1375  if (from._internal_use_or_opt() != 0) {
1376  _internal_set_use_or_opt(from._internal_use_or_opt());
1377  }
1378  if (from._internal_use_lin_kernighan() != 0) {
1379  _internal_set_use_lin_kernighan(from._internal_use_lin_kernighan());
1380  }
1381  if (from._internal_use_tsp_opt() != 0) {
1382  _internal_set_use_tsp_opt(from._internal_use_tsp_opt());
1383  }
1384  if (from._internal_use_make_active() != 0) {
1385  _internal_set_use_make_active(from._internal_use_make_active());
1386  }
1387  if (from._internal_use_make_inactive() != 0) {
1388  _internal_set_use_make_inactive(from._internal_use_make_inactive());
1389  }
1390  if (from._internal_use_make_chain_inactive() != 0) {
1391  _internal_set_use_make_chain_inactive(from._internal_use_make_chain_inactive());
1392  }
1393  if (from._internal_use_swap_active() != 0) {
1394  _internal_set_use_swap_active(from._internal_use_swap_active());
1395  }
1396  if (from._internal_use_extended_swap_active() != 0) {
1397  _internal_set_use_extended_swap_active(from._internal_use_extended_swap_active());
1398  }
1399  if (from._internal_use_path_lns() != 0) {
1400  _internal_set_use_path_lns(from._internal_use_path_lns());
1401  }
1402  if (from._internal_use_full_path_lns() != 0) {
1403  _internal_set_use_full_path_lns(from._internal_use_full_path_lns());
1404  }
1405  if (from._internal_use_tsp_lns() != 0) {
1406  _internal_set_use_tsp_lns(from._internal_use_tsp_lns());
1407  }
1408  if (from._internal_use_inactive_lns() != 0) {
1409  _internal_set_use_inactive_lns(from._internal_use_inactive_lns());
1410  }
1411  if (from._internal_use_node_pair_swap_active() != 0) {
1412  _internal_set_use_node_pair_swap_active(from._internal_use_node_pair_swap_active());
1413  }
1414  if (from._internal_use_relocate_and_make_active() != 0) {
1415  _internal_set_use_relocate_and_make_active(from._internal_use_relocate_and_make_active());
1416  }
1417  if (from._internal_use_exchange_pair() != 0) {
1418  _internal_set_use_exchange_pair(from._internal_use_exchange_pair());
1419  }
1420  if (from._internal_use_relocate_expensive_chain() != 0) {
1421  _internal_set_use_relocate_expensive_chain(from._internal_use_relocate_expensive_chain());
1422  }
1423  if (from._internal_use_light_relocate_pair() != 0) {
1424  _internal_set_use_light_relocate_pair(from._internal_use_light_relocate_pair());
1425  }
1426  if (from._internal_use_relocate_subtrip() != 0) {
1427  _internal_set_use_relocate_subtrip(from._internal_use_relocate_subtrip());
1428  }
1429  if (from._internal_use_exchange_subtrip() != 0) {
1430  _internal_set_use_exchange_subtrip(from._internal_use_exchange_subtrip());
1431  }
1432  if (from._internal_use_global_cheapest_insertion_path_lns() != 0) {
1433  _internal_set_use_global_cheapest_insertion_path_lns(from._internal_use_global_cheapest_insertion_path_lns());
1434  }
1435  if (from._internal_use_local_cheapest_insertion_path_lns() != 0) {
1436  _internal_set_use_local_cheapest_insertion_path_lns(from._internal_use_local_cheapest_insertion_path_lns());
1437  }
1438  if (from._internal_use_global_cheapest_insertion_expensive_chain_lns() != 0) {
1439  _internal_set_use_global_cheapest_insertion_expensive_chain_lns(from._internal_use_global_cheapest_insertion_expensive_chain_lns());
1440  }
1441  if (from._internal_use_local_cheapest_insertion_expensive_chain_lns() != 0) {
1442  _internal_set_use_local_cheapest_insertion_expensive_chain_lns(from._internal_use_local_cheapest_insertion_expensive_chain_lns());
1443  }
1444  if (from._internal_use_global_cheapest_insertion_close_nodes_lns() != 0) {
1445  _internal_set_use_global_cheapest_insertion_close_nodes_lns(from._internal_use_global_cheapest_insertion_close_nodes_lns());
1446  }
1447  if (from._internal_use_local_cheapest_insertion_close_nodes_lns() != 0) {
1448  _internal_set_use_local_cheapest_insertion_close_nodes_lns(from._internal_use_local_cheapest_insertion_close_nodes_lns());
1449  }
1450  if (from._internal_use_relocate_path_global_cheapest_insertion_insert_unperformed() != 0) {
1451  _internal_set_use_relocate_path_global_cheapest_insertion_insert_unperformed(from._internal_use_relocate_path_global_cheapest_insertion_insert_unperformed());
1452  }
1453  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
1454 }
1455 
1457 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
1458  if (&from == this) return;
1459  Clear();
1460  MergeFrom(from);
1461 }
1462 
1464  return true;
1465 }
1466 
1467 void RoutingSearchParameters_LocalSearchNeighborhoodOperators::InternalSwap(RoutingSearchParameters_LocalSearchNeighborhoodOperators* other) {
1468  using std::swap;
1469  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
1470  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
1471  PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_relocate_path_global_cheapest_insertion_insert_unperformed_)
1472  + sizeof(RoutingSearchParameters_LocalSearchNeighborhoodOperators::use_relocate_path_global_cheapest_insertion_insert_unperformed_)
1473  - PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, use_relocate_)>(
1474  reinterpret_cast<char*>(&use_relocate_),
1475  reinterpret_cast<char*>(&other->use_relocate_));
1476 }
1477 
1479  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
1482 }
1483 
1484 // ===================================================================
1485 
1487  public:
1488 };
1489 
1491  bool is_message_owned)
1492  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
1493  SharedCtor();
1494  if (!is_message_owned) {
1495  RegisterArenaDtor(arena);
1496  }
1497  // @@protoc_insertion_point(arena_constructor:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
1498 }
1500  : ::PROTOBUF_NAMESPACE_ID::Message() {
1501  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
1502  ::memcpy(&improvement_rate_solutions_distance_, &from.improvement_rate_solutions_distance_,
1503  static_cast<size_t>(reinterpret_cast<char*>(&improvement_rate_coefficient_) -
1504  reinterpret_cast<char*>(&improvement_rate_solutions_distance_)) + sizeof(improvement_rate_coefficient_));
1505  // @@protoc_insertion_point(copy_constructor:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
1506 }
1507 
1508 inline void RoutingSearchParameters_ImprovementSearchLimitParameters::SharedCtor() {
1509 ::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
1510  reinterpret_cast<char*>(&improvement_rate_solutions_distance_) - reinterpret_cast<char*>(this)),
1511  0, static_cast<size_t>(reinterpret_cast<char*>(&improvement_rate_coefficient_) -
1512  reinterpret_cast<char*>(&improvement_rate_solutions_distance_)) + sizeof(improvement_rate_coefficient_));
1513 }
1514 
1516  // @@protoc_insertion_point(destructor:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
1517  if (GetArenaForAllocation() != nullptr) return;
1518  SharedDtor();
1519  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
1520 }
1521 
1522 inline void RoutingSearchParameters_ImprovementSearchLimitParameters::SharedDtor() {
1523  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
1524 }
1525 
1526 void RoutingSearchParameters_ImprovementSearchLimitParameters::ArenaDtor(void* object) {
1527  RoutingSearchParameters_ImprovementSearchLimitParameters* _this = reinterpret_cast< RoutingSearchParameters_ImprovementSearchLimitParameters* >(object);
1528  (void)_this;
1529 }
1530 void RoutingSearchParameters_ImprovementSearchLimitParameters::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
1531 }
1532 void RoutingSearchParameters_ImprovementSearchLimitParameters::SetCachedSize(int size) const {
1533  _cached_size_.Set(size);
1534 }
1535 
1537 // @@protoc_insertion_point(message_clear_start:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
1538  uint32_t cached_has_bits = 0;
1539  // Prevent compiler warnings about cached_has_bits being unused
1540  (void) cached_has_bits;
1541 
1542  ::memset(&improvement_rate_solutions_distance_, 0, static_cast<size_t>(
1543  reinterpret_cast<char*>(&improvement_rate_coefficient_) -
1544  reinterpret_cast<char*>(&improvement_rate_solutions_distance_)) + sizeof(improvement_rate_coefficient_));
1545  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
1546 }
1547 
1548 const char* RoutingSearchParameters_ImprovementSearchLimitParameters::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
1549 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
1550  while (!ctx->Done(&ptr)) {
1551  uint32_t tag;
1552  ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
1553  switch (tag >> 3) {
1554  // double improvement_rate_coefficient = 38;
1555  case 38:
1556  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 49)) {
1557  improvement_rate_coefficient_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
1558  ptr += sizeof(double);
1559  } else
1560  goto handle_unusual;
1561  continue;
1562  // int32 improvement_rate_solutions_distance = 39;
1563  case 39:
1564  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 56)) {
1565  improvement_rate_solutions_distance_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
1566  CHK_(ptr);
1567  } else
1568  goto handle_unusual;
1569  continue;
1570  default:
1571  goto handle_unusual;
1572  } // switch
1573  handle_unusual:
1574  if ((tag == 0) || ((tag & 7) == 4)) {
1575  CHK_(ptr);
1576  ctx->SetLastTag(tag);
1577  goto message_done;
1578  }
1579  ptr = UnknownFieldParse(
1580  tag,
1581  _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
1582  ptr, ctx);
1583  CHK_(ptr != nullptr);
1584  } // while
1585 message_done:
1586  return ptr;
1587 failure:
1588  ptr = nullptr;
1589  goto message_done;
1590 #undef CHK_
1591 }
1592 
1594  uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
1595  // @@protoc_insertion_point(serialize_to_array_start:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
1596  uint32_t cached_has_bits = 0;
1597  (void) cached_has_bits;
1598 
1599  // double improvement_rate_coefficient = 38;
1600  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
1601  double tmp_improvement_rate_coefficient = this->_internal_improvement_rate_coefficient();
1602  uint64_t raw_improvement_rate_coefficient;
1603  memcpy(&raw_improvement_rate_coefficient, &tmp_improvement_rate_coefficient, sizeof(tmp_improvement_rate_coefficient));
1604  if (raw_improvement_rate_coefficient != 0) {
1605  target = stream->EnsureSpace(target);
1606  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(38, this->_internal_improvement_rate_coefficient(), target);
1607  }
1608 
1609  // int32 improvement_rate_solutions_distance = 39;
1610  if (this->_internal_improvement_rate_solutions_distance() != 0) {
1611  target = stream->EnsureSpace(target);
1612  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(39, this->_internal_improvement_rate_solutions_distance(), target);
1613  }
1614 
1615  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
1616  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
1617  _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
1618  }
1619  // @@protoc_insertion_point(serialize_to_array_end:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
1620  return target;
1621 }
1622 
1624 // @@protoc_insertion_point(message_byte_size_start:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
1625  size_t total_size = 0;
1626 
1627  uint32_t cached_has_bits = 0;
1628  // Prevent compiler warnings about cached_has_bits being unused
1629  (void) cached_has_bits;
1630 
1631  // int32 improvement_rate_solutions_distance = 39;
1632  if (this->_internal_improvement_rate_solutions_distance() != 0) {
1633  total_size += 2 +
1634  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
1635  this->_internal_improvement_rate_solutions_distance());
1636  }
1637 
1638  // double improvement_rate_coefficient = 38;
1639  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
1640  double tmp_improvement_rate_coefficient = this->_internal_improvement_rate_coefficient();
1641  uint64_t raw_improvement_rate_coefficient;
1642  memcpy(&raw_improvement_rate_coefficient, &tmp_improvement_rate_coefficient, sizeof(tmp_improvement_rate_coefficient));
1643  if (raw_improvement_rate_coefficient != 0) {
1644  total_size += 2 + 8;
1645  }
1646 
1647  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
1648 }
1649 
1650 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RoutingSearchParameters_ImprovementSearchLimitParameters::_class_data_ = {
1651  ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
1652  RoutingSearchParameters_ImprovementSearchLimitParameters::MergeImpl
1653 };
1654 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RoutingSearchParameters_ImprovementSearchLimitParameters::GetClassData() const { return &_class_data_; }
1655 
1656 void RoutingSearchParameters_ImprovementSearchLimitParameters::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
1657  const ::PROTOBUF_NAMESPACE_ID::Message& from) {
1658  static_cast<RoutingSearchParameters_ImprovementSearchLimitParameters *>(to)->MergeFrom(
1659  static_cast<const RoutingSearchParameters_ImprovementSearchLimitParameters &>(from));
1660 }
1661 
1662 
1664 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
1665  GOOGLE_DCHECK_NE(&from, this);
1666  uint32_t cached_has_bits = 0;
1667  (void) cached_has_bits;
1668 
1669  if (from._internal_improvement_rate_solutions_distance() != 0) {
1670  _internal_set_improvement_rate_solutions_distance(from._internal_improvement_rate_solutions_distance());
1671  }
1672  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
1673  double tmp_improvement_rate_coefficient = from._internal_improvement_rate_coefficient();
1674  uint64_t raw_improvement_rate_coefficient;
1675  memcpy(&raw_improvement_rate_coefficient, &tmp_improvement_rate_coefficient, sizeof(tmp_improvement_rate_coefficient));
1676  if (raw_improvement_rate_coefficient != 0) {
1677  _internal_set_improvement_rate_coefficient(from._internal_improvement_rate_coefficient());
1678  }
1679  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
1680 }
1681 
1683 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
1684  if (&from == this) return;
1685  Clear();
1686  MergeFrom(from);
1687 }
1688 
1690  return true;
1691 }
1692 
1693 void RoutingSearchParameters_ImprovementSearchLimitParameters::InternalSwap(RoutingSearchParameters_ImprovementSearchLimitParameters* other) {
1694  using std::swap;
1695  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
1696  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
1697  PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, improvement_rate_coefficient_)
1698  + sizeof(RoutingSearchParameters_ImprovementSearchLimitParameters::improvement_rate_coefficient_)
1699  - PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, improvement_rate_solutions_distance_)>(
1700  reinterpret_cast<char*>(&improvement_rate_solutions_distance_),
1701  reinterpret_cast<char*>(&other->improvement_rate_solutions_distance_));
1702 }
1703 
1705  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
1708 }
1709 
1710 // ===================================================================
1711 
1713  public:
1714  static const ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators& local_search_operators(const RoutingSearchParameters* msg);
1715  static const ::operations_research::sat::SatParameters& sat_parameters(const RoutingSearchParameters* msg);
1716  static const ::PROTOBUF_NAMESPACE_ID::Duration& time_limit(const RoutingSearchParameters* msg);
1717  static const ::PROTOBUF_NAMESPACE_ID::Duration& lns_time_limit(const RoutingSearchParameters* msg);
1718  static const ::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters& improvement_limit_parameters(const RoutingSearchParameters* msg);
1719 };
1720 
1721 const ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators&
1723  return *msg->local_search_operators_;
1724 }
1725 const ::operations_research::sat::SatParameters&
1727  return *msg->sat_parameters_;
1728 }
1729 const ::PROTOBUF_NAMESPACE_ID::Duration&
1731  return *msg->time_limit_;
1732 }
1733 const ::PROTOBUF_NAMESPACE_ID::Duration&
1735  return *msg->lns_time_limit_;
1736 }
1737 const ::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters&
1739  return *msg->improvement_limit_parameters_;
1740 }
1742  if (GetArenaForAllocation() == nullptr && sat_parameters_ != nullptr) {
1743  delete sat_parameters_;
1744  }
1745  sat_parameters_ = nullptr;
1746 }
1748  if (GetArenaForAllocation() == nullptr && time_limit_ != nullptr) {
1749  delete time_limit_;
1750  }
1751  time_limit_ = nullptr;
1752 }
1754  if (GetArenaForAllocation() == nullptr && lns_time_limit_ != nullptr) {
1755  delete lns_time_limit_;
1756  }
1757  lns_time_limit_ = nullptr;
1758 }
1759 RoutingSearchParameters::RoutingSearchParameters(::PROTOBUF_NAMESPACE_ID::Arena* arena,
1760  bool is_message_owned)
1761  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
1762  SharedCtor();
1763  if (!is_message_owned) {
1764  RegisterArenaDtor(arena);
1765  }
1766  // @@protoc_insertion_point(arena_constructor:operations_research.RoutingSearchParameters)
1767 }
1769  : ::PROTOBUF_NAMESPACE_ID::Message() {
1770  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
1771  log_tag_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
1772  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
1773  log_tag_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
1774  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
1775  if (!from._internal_log_tag().empty()) {
1776  log_tag_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_log_tag(),
1777  GetArenaForAllocation());
1778  }
1779  if (from._internal_has_local_search_operators()) {
1780  local_search_operators_ = new ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators(*from.local_search_operators_);
1781  } else {
1782  local_search_operators_ = nullptr;
1783  }
1784  if (from._internal_has_time_limit()) {
1785  time_limit_ = new ::PROTOBUF_NAMESPACE_ID::Duration(*from.time_limit_);
1786  } else {
1787  time_limit_ = nullptr;
1788  }
1789  if (from._internal_has_lns_time_limit()) {
1790  lns_time_limit_ = new ::PROTOBUF_NAMESPACE_ID::Duration(*from.lns_time_limit_);
1791  } else {
1792  lns_time_limit_ = nullptr;
1793  }
1794  if (from._internal_has_improvement_limit_parameters()) {
1795  improvement_limit_parameters_ = new ::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters(*from.improvement_limit_parameters_);
1796  } else {
1797  improvement_limit_parameters_ = nullptr;
1798  }
1799  if (from._internal_has_sat_parameters()) {
1800  sat_parameters_ = new ::operations_research::sat::SatParameters(*from.sat_parameters_);
1801  } else {
1802  sat_parameters_ = nullptr;
1803  }
1804  ::memcpy(&first_solution_strategy_, &from.first_solution_strategy_,
1805  static_cast<size_t>(reinterpret_cast<char*>(&use_generalized_cp_sat_) -
1806  reinterpret_cast<char*>(&first_solution_strategy_)) + sizeof(use_generalized_cp_sat_));
1807  // @@protoc_insertion_point(copy_constructor:operations_research.RoutingSearchParameters)
1808 }
1809 
1810 inline void RoutingSearchParameters::SharedCtor() {
1811 log_tag_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
1812 #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
1813  log_tag_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
1814 #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
1815 ::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
1816  reinterpret_cast<char*>(&local_search_operators_) - reinterpret_cast<char*>(this)),
1817  0, static_cast<size_t>(reinterpret_cast<char*>(&use_generalized_cp_sat_) -
1818  reinterpret_cast<char*>(&local_search_operators_)) + sizeof(use_generalized_cp_sat_));
1819 }
1820 
1822  // @@protoc_insertion_point(destructor:operations_research.RoutingSearchParameters)
1823  if (GetArenaForAllocation() != nullptr) return;
1824  SharedDtor();
1825  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
1826 }
1827 
1828 inline void RoutingSearchParameters::SharedDtor() {
1829  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
1830  log_tag_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
1831  if (this != internal_default_instance()) delete local_search_operators_;
1832  if (this != internal_default_instance()) delete time_limit_;
1833  if (this != internal_default_instance()) delete lns_time_limit_;
1834  if (this != internal_default_instance()) delete improvement_limit_parameters_;
1835  if (this != internal_default_instance()) delete sat_parameters_;
1836 }
1837 
1838 void RoutingSearchParameters::ArenaDtor(void* object) {
1839  RoutingSearchParameters* _this = reinterpret_cast< RoutingSearchParameters* >(object);
1840  (void)_this;
1841 }
1842 void RoutingSearchParameters::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
1843 }
1844 void RoutingSearchParameters::SetCachedSize(int size) const {
1845  _cached_size_.Set(size);
1846 }
1847 
1849 // @@protoc_insertion_point(message_clear_start:operations_research.RoutingSearchParameters)
1850  uint32_t cached_has_bits = 0;
1851  // Prevent compiler warnings about cached_has_bits being unused
1852  (void) cached_has_bits;
1853 
1854  log_tag_.ClearToEmpty();
1855  if (GetArenaForAllocation() == nullptr && local_search_operators_ != nullptr) {
1856  delete local_search_operators_;
1857  }
1858  local_search_operators_ = nullptr;
1859  if (GetArenaForAllocation() == nullptr && time_limit_ != nullptr) {
1860  delete time_limit_;
1861  }
1862  time_limit_ = nullptr;
1863  if (GetArenaForAllocation() == nullptr && lns_time_limit_ != nullptr) {
1864  delete lns_time_limit_;
1865  }
1866  lns_time_limit_ = nullptr;
1867  if (GetArenaForAllocation() == nullptr && improvement_limit_parameters_ != nullptr) {
1868  delete improvement_limit_parameters_;
1869  }
1870  improvement_limit_parameters_ = nullptr;
1871  if (GetArenaForAllocation() == nullptr && sat_parameters_ != nullptr) {
1872  delete sat_parameters_;
1873  }
1874  sat_parameters_ = nullptr;
1875  ::memset(&first_solution_strategy_, 0, static_cast<size_t>(
1876  reinterpret_cast<char*>(&use_generalized_cp_sat_) -
1877  reinterpret_cast<char*>(&first_solution_strategy_)) + sizeof(use_generalized_cp_sat_));
1878  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
1879 }
1880 
1881 const char* RoutingSearchParameters::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
1882 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
1883  while (!ctx->Done(&ptr)) {
1884  uint32_t tag;
1885  ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
1886  switch (tag >> 3) {
1887  // .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
1888  case 1:
1889  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
1890  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1891  CHK_(ptr);
1892  _internal_set_first_solution_strategy(static_cast<::operations_research::FirstSolutionStrategy_Value>(val));
1893  } else
1894  goto handle_unusual;
1895  continue;
1896  // bool use_unfiltered_first_solution_strategy = 2;
1897  case 2:
1898  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
1899  use_unfiltered_first_solution_strategy_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1900  CHK_(ptr);
1901  } else
1902  goto handle_unusual;
1903  continue;
1904  // .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
1905  case 3:
1906  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
1907  ptr = ctx->ParseMessage(_internal_mutable_local_search_operators(), ptr);
1908  CHK_(ptr);
1909  } else
1910  goto handle_unusual;
1911  continue;
1912  // .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
1913  case 4:
1914  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 32)) {
1915  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1916  CHK_(ptr);
1917  _internal_set_local_search_metaheuristic(static_cast<::operations_research::LocalSearchMetaheuristic_Value>(val));
1918  } else
1919  goto handle_unusual;
1920  continue;
1921  // double guided_local_search_lambda_coefficient = 5;
1922  case 5:
1923  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 41)) {
1924  guided_local_search_lambda_coefficient_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
1925  ptr += sizeof(double);
1926  } else
1927  goto handle_unusual;
1928  continue;
1929  // bool use_depth_first_search = 6;
1930  case 6:
1931  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
1932  use_depth_first_search_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1933  CHK_(ptr);
1934  } else
1935  goto handle_unusual;
1936  continue;
1937  // double optimization_step = 7;
1938  case 7:
1939  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 57)) {
1940  optimization_step_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
1941  ptr += sizeof(double);
1942  } else
1943  goto handle_unusual;
1944  continue;
1945  // int64 solution_limit = 8;
1946  case 8:
1947  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
1948  solution_limit_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1949  CHK_(ptr);
1950  } else
1951  goto handle_unusual;
1952  continue;
1953  // .google.protobuf.Duration time_limit = 9;
1954  case 9:
1955  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 74)) {
1956  ptr = ctx->ParseMessage(_internal_mutable_time_limit(), ptr);
1957  CHK_(ptr);
1958  } else
1959  goto handle_unusual;
1960  continue;
1961  // .google.protobuf.Duration lns_time_limit = 10;
1962  case 10:
1963  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 82)) {
1964  ptr = ctx->ParseMessage(_internal_mutable_lns_time_limit(), ptr);
1965  CHK_(ptr);
1966  } else
1967  goto handle_unusual;
1968  continue;
1969  // bool use_full_propagation = 11;
1970  case 11:
1971  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 88)) {
1972  use_full_propagation_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1973  CHK_(ptr);
1974  } else
1975  goto handle_unusual;
1976  continue;
1977  // bool log_search = 13;
1978  case 13:
1979  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
1980  log_search_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1981  CHK_(ptr);
1982  } else
1983  goto handle_unusual;
1984  continue;
1985  // double savings_neighbors_ratio = 14;
1986  case 14:
1987  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 113)) {
1988  savings_neighbors_ratio_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
1989  ptr += sizeof(double);
1990  } else
1991  goto handle_unusual;
1992  continue;
1993  // bool savings_add_reverse_arcs = 15;
1994  case 15:
1995  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 120)) {
1996  savings_add_reverse_arcs_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
1997  CHK_(ptr);
1998  } else
1999  goto handle_unusual;
2000  continue;
2001  // double cheapest_insertion_farthest_seeds_ratio = 16;
2002  case 16:
2003  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 129)) {
2004  cheapest_insertion_farthest_seeds_ratio_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
2005  ptr += sizeof(double);
2006  } else
2007  goto handle_unusual;
2008  continue;
2009  // int32 number_of_solutions_to_collect = 17;
2010  case 17:
2011  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 136)) {
2012  number_of_solutions_to_collect_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
2013  CHK_(ptr);
2014  } else
2015  goto handle_unusual;
2016  continue;
2017  // double savings_arc_coefficient = 18;
2018  case 18:
2019  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 145)) {
2020  savings_arc_coefficient_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
2021  ptr += sizeof(double);
2022  } else
2023  goto handle_unusual;
2024  continue;
2025  // bool savings_parallel_routes = 19;
2026  case 19:
2027  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 152)) {
2028  savings_parallel_routes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
2029  CHK_(ptr);
2030  } else
2031  goto handle_unusual;
2032  continue;
2033  // int32 relocate_expensive_chain_num_arcs_to_consider = 20;
2034  case 20:
2035  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 160)) {
2036  relocate_expensive_chain_num_arcs_to_consider_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
2037  CHK_(ptr);
2038  } else
2039  goto handle_unusual;
2040  continue;
2041  // double cheapest_insertion_first_solution_neighbors_ratio = 21;
2042  case 21:
2043  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 169)) {
2044  cheapest_insertion_first_solution_neighbors_ratio_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
2045  ptr += sizeof(double);
2046  } else
2047  goto handle_unusual;
2048  continue;
2049  // double log_cost_scaling_factor = 22;
2050  case 22:
2051  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 177)) {
2052  log_cost_scaling_factor_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
2053  ptr += sizeof(double);
2054  } else
2055  goto handle_unusual;
2056  continue;
2057  // double savings_max_memory_usage_bytes = 23;
2058  case 23:
2059  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 185)) {
2060  savings_max_memory_usage_bytes_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
2061  ptr += sizeof(double);
2062  } else
2063  goto handle_unusual;
2064  continue;
2065  // .operations_research.OptionalBoolean use_cp_sat = 27;
2066  case 27:
2067  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 216)) {
2068  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
2069  CHK_(ptr);
2070  _internal_set_use_cp_sat(static_cast<::operations_research::OptionalBoolean>(val));
2071  } else
2072  goto handle_unusual;
2073  continue;
2074  // .operations_research.OptionalBoolean use_cp = 28;
2075  case 28:
2076  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 224)) {
2077  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
2078  CHK_(ptr);
2079  _internal_set_use_cp(static_cast<::operations_research::OptionalBoolean>(val));
2080  } else
2081  goto handle_unusual;
2082  continue;
2083  // double log_cost_offset = 29;
2084  case 29:
2085  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 233)) {
2086  log_cost_offset_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
2087  ptr += sizeof(double);
2088  } else
2089  goto handle_unusual;
2090  continue;
2091  // bool christofides_use_minimum_matching = 30;
2092  case 30:
2093  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 240)) {
2094  christofides_use_minimum_matching_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
2095  CHK_(ptr);
2096  } else
2097  goto handle_unusual;
2098  continue;
2099  // double cheapest_insertion_ls_operator_neighbors_ratio = 31;
2100  case 31:
2101  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 249)) {
2102  cheapest_insertion_ls_operator_neighbors_ratio_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
2103  ptr += sizeof(double);
2104  } else
2105  goto handle_unusual;
2106  continue;
2107  // int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
2108  case 32:
2109  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 0)) {
2110  heuristic_expensive_chain_lns_num_arcs_to_consider_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
2111  CHK_(ptr);
2112  } else
2113  goto handle_unusual;
2114  continue;
2115  // .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
2116  case 33:
2117  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 8)) {
2118  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
2119  CHK_(ptr);
2120  _internal_set_continuous_scheduling_solver(static_cast<::operations_research::RoutingSearchParameters_SchedulingSolver>(val));
2121  } else
2122  goto handle_unusual;
2123  continue;
2124  // .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
2125  case 34:
2126  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
2127  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
2128  CHK_(ptr);
2129  _internal_set_mixed_integer_scheduling_solver(static_cast<::operations_research::RoutingSearchParameters_SchedulingSolver>(val));
2130  } else
2131  goto handle_unusual;
2132  continue;
2133  // int32 heuristic_close_nodes_lns_num_nodes = 35;
2134  case 35:
2135  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
2136  heuristic_close_nodes_lns_num_nodes_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
2137  CHK_(ptr);
2138  } else
2139  goto handle_unusual;
2140  continue;
2141  // string log_tag = 36;
2142  case 36:
2143  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
2144  auto str = _internal_mutable_log_tag();
2145  ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
2146  CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "operations_research.RoutingSearchParameters.log_tag"));
2147  CHK_(ptr);
2148  } else
2149  goto handle_unusual;
2150  continue;
2151  // .operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters improvement_limit_parameters = 37;
2152  case 37:
2153  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
2154  ptr = ctx->ParseMessage(_internal_mutable_improvement_limit_parameters(), ptr);
2155  CHK_(ptr);
2156  } else
2157  goto handle_unusual;
2158  continue;
2159  // bool cheapest_insertion_add_unperformed_entries = 40;
2160  case 40:
2161  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 64)) {
2162  cheapest_insertion_add_unperformed_entries_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
2163  CHK_(ptr);
2164  } else
2165  goto handle_unusual;
2166  continue;
2167  // bool use_multi_armed_bandit_concatenate_operators = 41;
2168  case 41:
2169  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 72)) {
2170  use_multi_armed_bandit_concatenate_operators_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
2171  CHK_(ptr);
2172  } else
2173  goto handle_unusual;
2174  continue;
2175  // double multi_armed_bandit_compound_operator_memory_coefficient = 42;
2176  case 42:
2177  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 81)) {
2178  multi_armed_bandit_compound_operator_memory_coefficient_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
2179  ptr += sizeof(double);
2180  } else
2181  goto handle_unusual;
2182  continue;
2183  // double multi_armed_bandit_compound_operator_exploration_coefficient = 43;
2184  case 43:
2185  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 89)) {
2186  multi_armed_bandit_compound_operator_exploration_coefficient_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<double>(ptr);
2187  ptr += sizeof(double);
2188  } else
2189  goto handle_unusual;
2190  continue;
2191  // int32 cheapest_insertion_first_solution_min_neighbors = 44;
2192  case 44:
2193  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 96)) {
2194  cheapest_insertion_first_solution_min_neighbors_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
2195  CHK_(ptr);
2196  } else
2197  goto handle_unusual;
2198  continue;
2199  // int32 cheapest_insertion_ls_operator_min_neighbors = 45;
2200  case 45:
2201  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 104)) {
2202  cheapest_insertion_ls_operator_min_neighbors_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
2203  CHK_(ptr);
2204  } else
2205  goto handle_unusual;
2206  continue;
2207  // bool cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization = 46;
2208  case 46:
2209  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 112)) {
2210  cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
2211  CHK_(ptr);
2212  } else
2213  goto handle_unusual;
2214  continue;
2215  // .operations_research.OptionalBoolean use_generalized_cp_sat = 47;
2216  case 47:
2217  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 120)) {
2218  uint64_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
2219  CHK_(ptr);
2220  _internal_set_use_generalized_cp_sat(static_cast<::operations_research::OptionalBoolean>(val));
2221  } else
2222  goto handle_unusual;
2223  continue;
2224  // .operations_research.sat.SatParameters sat_parameters = 48;
2225  case 48:
2226  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 130)) {
2227  ptr = ctx->ParseMessage(_internal_mutable_sat_parameters(), ptr);
2228  CHK_(ptr);
2229  } else
2230  goto handle_unusual;
2231  continue;
2232  default:
2233  goto handle_unusual;
2234  } // switch
2235  handle_unusual:
2236  if ((tag == 0) || ((tag & 7) == 4)) {
2237  CHK_(ptr);
2238  ctx->SetLastTag(tag);
2239  goto message_done;
2240  }
2241  ptr = UnknownFieldParse(
2242  tag,
2243  _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
2244  ptr, ctx);
2245  CHK_(ptr != nullptr);
2246  } // while
2247 message_done:
2248  return ptr;
2249 failure:
2250  ptr = nullptr;
2251  goto message_done;
2252 #undef CHK_
2253 }
2254 
2256  uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
2257  // @@protoc_insertion_point(serialize_to_array_start:operations_research.RoutingSearchParameters)
2258  uint32_t cached_has_bits = 0;
2259  (void) cached_has_bits;
2260 
2261  // .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
2262  if (this->_internal_first_solution_strategy() != 0) {
2263  target = stream->EnsureSpace(target);
2264  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
2265  1, this->_internal_first_solution_strategy(), target);
2266  }
2267 
2268  // bool use_unfiltered_first_solution_strategy = 2;
2269  if (this->_internal_use_unfiltered_first_solution_strategy() != 0) {
2270  target = stream->EnsureSpace(target);
2271  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_use_unfiltered_first_solution_strategy(), target);
2272  }
2273 
2274  // .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
2275  if (this->_internal_has_local_search_operators()) {
2276  target = stream->EnsureSpace(target);
2277  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
2278  InternalWriteMessage(
2279  3, _Internal::local_search_operators(this), target, stream);
2280  }
2281 
2282  // .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
2283  if (this->_internal_local_search_metaheuristic() != 0) {
2284  target = stream->EnsureSpace(target);
2285  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
2286  4, this->_internal_local_search_metaheuristic(), target);
2287  }
2288 
2289  // double guided_local_search_lambda_coefficient = 5;
2290  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2291  double tmp_guided_local_search_lambda_coefficient = this->_internal_guided_local_search_lambda_coefficient();
2292  uint64_t raw_guided_local_search_lambda_coefficient;
2293  memcpy(&raw_guided_local_search_lambda_coefficient, &tmp_guided_local_search_lambda_coefficient, sizeof(tmp_guided_local_search_lambda_coefficient));
2294  if (raw_guided_local_search_lambda_coefficient != 0) {
2295  target = stream->EnsureSpace(target);
2296  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(5, this->_internal_guided_local_search_lambda_coefficient(), target);
2297  }
2298 
2299  // bool use_depth_first_search = 6;
2300  if (this->_internal_use_depth_first_search() != 0) {
2301  target = stream->EnsureSpace(target);
2302  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(6, this->_internal_use_depth_first_search(), target);
2303  }
2304 
2305  // double optimization_step = 7;
2306  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2307  double tmp_optimization_step = this->_internal_optimization_step();
2308  uint64_t raw_optimization_step;
2309  memcpy(&raw_optimization_step, &tmp_optimization_step, sizeof(tmp_optimization_step));
2310  if (raw_optimization_step != 0) {
2311  target = stream->EnsureSpace(target);
2312  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(7, this->_internal_optimization_step(), target);
2313  }
2314 
2315  // int64 solution_limit = 8;
2316  if (this->_internal_solution_limit() != 0) {
2317  target = stream->EnsureSpace(target);
2318  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64ToArray(8, this->_internal_solution_limit(), target);
2319  }
2320 
2321  // .google.protobuf.Duration time_limit = 9;
2322  if (this->_internal_has_time_limit()) {
2323  target = stream->EnsureSpace(target);
2324  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
2325  InternalWriteMessage(
2326  9, _Internal::time_limit(this), target, stream);
2327  }
2328 
2329  // .google.protobuf.Duration lns_time_limit = 10;
2330  if (this->_internal_has_lns_time_limit()) {
2331  target = stream->EnsureSpace(target);
2332  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
2333  InternalWriteMessage(
2334  10, _Internal::lns_time_limit(this), target, stream);
2335  }
2336 
2337  // bool use_full_propagation = 11;
2338  if (this->_internal_use_full_propagation() != 0) {
2339  target = stream->EnsureSpace(target);
2340  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(11, this->_internal_use_full_propagation(), target);
2341  }
2342 
2343  // bool log_search = 13;
2344  if (this->_internal_log_search() != 0) {
2345  target = stream->EnsureSpace(target);
2346  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(13, this->_internal_log_search(), target);
2347  }
2348 
2349  // double savings_neighbors_ratio = 14;
2350  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2351  double tmp_savings_neighbors_ratio = this->_internal_savings_neighbors_ratio();
2352  uint64_t raw_savings_neighbors_ratio;
2353  memcpy(&raw_savings_neighbors_ratio, &tmp_savings_neighbors_ratio, sizeof(tmp_savings_neighbors_ratio));
2354  if (raw_savings_neighbors_ratio != 0) {
2355  target = stream->EnsureSpace(target);
2356  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(14, this->_internal_savings_neighbors_ratio(), target);
2357  }
2358 
2359  // bool savings_add_reverse_arcs = 15;
2360  if (this->_internal_savings_add_reverse_arcs() != 0) {
2361  target = stream->EnsureSpace(target);
2362  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(15, this->_internal_savings_add_reverse_arcs(), target);
2363  }
2364 
2365  // double cheapest_insertion_farthest_seeds_ratio = 16;
2366  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2367  double tmp_cheapest_insertion_farthest_seeds_ratio = this->_internal_cheapest_insertion_farthest_seeds_ratio();
2368  uint64_t raw_cheapest_insertion_farthest_seeds_ratio;
2369  memcpy(&raw_cheapest_insertion_farthest_seeds_ratio, &tmp_cheapest_insertion_farthest_seeds_ratio, sizeof(tmp_cheapest_insertion_farthest_seeds_ratio));
2370  if (raw_cheapest_insertion_farthest_seeds_ratio != 0) {
2371  target = stream->EnsureSpace(target);
2372  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(16, this->_internal_cheapest_insertion_farthest_seeds_ratio(), target);
2373  }
2374 
2375  // int32 number_of_solutions_to_collect = 17;
2376  if (this->_internal_number_of_solutions_to_collect() != 0) {
2377  target = stream->EnsureSpace(target);
2378  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(17, this->_internal_number_of_solutions_to_collect(), target);
2379  }
2380 
2381  // double savings_arc_coefficient = 18;
2382  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2383  double tmp_savings_arc_coefficient = this->_internal_savings_arc_coefficient();
2384  uint64_t raw_savings_arc_coefficient;
2385  memcpy(&raw_savings_arc_coefficient, &tmp_savings_arc_coefficient, sizeof(tmp_savings_arc_coefficient));
2386  if (raw_savings_arc_coefficient != 0) {
2387  target = stream->EnsureSpace(target);
2388  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(18, this->_internal_savings_arc_coefficient(), target);
2389  }
2390 
2391  // bool savings_parallel_routes = 19;
2392  if (this->_internal_savings_parallel_routes() != 0) {
2393  target = stream->EnsureSpace(target);
2394  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(19, this->_internal_savings_parallel_routes(), target);
2395  }
2396 
2397  // int32 relocate_expensive_chain_num_arcs_to_consider = 20;
2398  if (this->_internal_relocate_expensive_chain_num_arcs_to_consider() != 0) {
2399  target = stream->EnsureSpace(target);
2400  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(20, this->_internal_relocate_expensive_chain_num_arcs_to_consider(), target);
2401  }
2402 
2403  // double cheapest_insertion_first_solution_neighbors_ratio = 21;
2404  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2405  double tmp_cheapest_insertion_first_solution_neighbors_ratio = this->_internal_cheapest_insertion_first_solution_neighbors_ratio();
2406  uint64_t raw_cheapest_insertion_first_solution_neighbors_ratio;
2407  memcpy(&raw_cheapest_insertion_first_solution_neighbors_ratio, &tmp_cheapest_insertion_first_solution_neighbors_ratio, sizeof(tmp_cheapest_insertion_first_solution_neighbors_ratio));
2408  if (raw_cheapest_insertion_first_solution_neighbors_ratio != 0) {
2409  target = stream->EnsureSpace(target);
2410  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(21, this->_internal_cheapest_insertion_first_solution_neighbors_ratio(), target);
2411  }
2412 
2413  // double log_cost_scaling_factor = 22;
2414  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2415  double tmp_log_cost_scaling_factor = this->_internal_log_cost_scaling_factor();
2416  uint64_t raw_log_cost_scaling_factor;
2417  memcpy(&raw_log_cost_scaling_factor, &tmp_log_cost_scaling_factor, sizeof(tmp_log_cost_scaling_factor));
2418  if (raw_log_cost_scaling_factor != 0) {
2419  target = stream->EnsureSpace(target);
2420  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(22, this->_internal_log_cost_scaling_factor(), target);
2421  }
2422 
2423  // double savings_max_memory_usage_bytes = 23;
2424  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2425  double tmp_savings_max_memory_usage_bytes = this->_internal_savings_max_memory_usage_bytes();
2426  uint64_t raw_savings_max_memory_usage_bytes;
2427  memcpy(&raw_savings_max_memory_usage_bytes, &tmp_savings_max_memory_usage_bytes, sizeof(tmp_savings_max_memory_usage_bytes));
2428  if (raw_savings_max_memory_usage_bytes != 0) {
2429  target = stream->EnsureSpace(target);
2430  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(23, this->_internal_savings_max_memory_usage_bytes(), target);
2431  }
2432 
2433  // .operations_research.OptionalBoolean use_cp_sat = 27;
2434  if (this->_internal_use_cp_sat() != 0) {
2435  target = stream->EnsureSpace(target);
2436  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
2437  27, this->_internal_use_cp_sat(), target);
2438  }
2439 
2440  // .operations_research.OptionalBoolean use_cp = 28;
2441  if (this->_internal_use_cp() != 0) {
2442  target = stream->EnsureSpace(target);
2443  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
2444  28, this->_internal_use_cp(), target);
2445  }
2446 
2447  // double log_cost_offset = 29;
2448  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2449  double tmp_log_cost_offset = this->_internal_log_cost_offset();
2450  uint64_t raw_log_cost_offset;
2451  memcpy(&raw_log_cost_offset, &tmp_log_cost_offset, sizeof(tmp_log_cost_offset));
2452  if (raw_log_cost_offset != 0) {
2453  target = stream->EnsureSpace(target);
2454  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(29, this->_internal_log_cost_offset(), target);
2455  }
2456 
2457  // bool christofides_use_minimum_matching = 30;
2458  if (this->_internal_christofides_use_minimum_matching() != 0) {
2459  target = stream->EnsureSpace(target);
2460  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(30, this->_internal_christofides_use_minimum_matching(), target);
2461  }
2462 
2463  // double cheapest_insertion_ls_operator_neighbors_ratio = 31;
2464  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2465  double tmp_cheapest_insertion_ls_operator_neighbors_ratio = this->_internal_cheapest_insertion_ls_operator_neighbors_ratio();
2466  uint64_t raw_cheapest_insertion_ls_operator_neighbors_ratio;
2467  memcpy(&raw_cheapest_insertion_ls_operator_neighbors_ratio, &tmp_cheapest_insertion_ls_operator_neighbors_ratio, sizeof(tmp_cheapest_insertion_ls_operator_neighbors_ratio));
2468  if (raw_cheapest_insertion_ls_operator_neighbors_ratio != 0) {
2469  target = stream->EnsureSpace(target);
2470  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(31, this->_internal_cheapest_insertion_ls_operator_neighbors_ratio(), target);
2471  }
2472 
2473  // int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
2474  if (this->_internal_heuristic_expensive_chain_lns_num_arcs_to_consider() != 0) {
2475  target = stream->EnsureSpace(target);
2476  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(32, this->_internal_heuristic_expensive_chain_lns_num_arcs_to_consider(), target);
2477  }
2478 
2479  // .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
2480  if (this->_internal_continuous_scheduling_solver() != 0) {
2481  target = stream->EnsureSpace(target);
2482  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
2483  33, this->_internal_continuous_scheduling_solver(), target);
2484  }
2485 
2486  // .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
2487  if (this->_internal_mixed_integer_scheduling_solver() != 0) {
2488  target = stream->EnsureSpace(target);
2489  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
2490  34, this->_internal_mixed_integer_scheduling_solver(), target);
2491  }
2492 
2493  // int32 heuristic_close_nodes_lns_num_nodes = 35;
2494  if (this->_internal_heuristic_close_nodes_lns_num_nodes() != 0) {
2495  target = stream->EnsureSpace(target);
2496  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(35, this->_internal_heuristic_close_nodes_lns_num_nodes(), target);
2497  }
2498 
2499  // string log_tag = 36;
2500  if (!this->_internal_log_tag().empty()) {
2501  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
2502  this->_internal_log_tag().data(), static_cast<int>(this->_internal_log_tag().length()),
2503  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
2504  "operations_research.RoutingSearchParameters.log_tag");
2505  target = stream->WriteStringMaybeAliased(
2506  36, this->_internal_log_tag(), target);
2507  }
2508 
2509  // .operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters improvement_limit_parameters = 37;
2510  if (this->_internal_has_improvement_limit_parameters()) {
2511  target = stream->EnsureSpace(target);
2512  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
2513  InternalWriteMessage(
2514  37, _Internal::improvement_limit_parameters(this), target, stream);
2515  }
2516 
2517  // bool cheapest_insertion_add_unperformed_entries = 40;
2518  if (this->_internal_cheapest_insertion_add_unperformed_entries() != 0) {
2519  target = stream->EnsureSpace(target);
2520  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(40, this->_internal_cheapest_insertion_add_unperformed_entries(), target);
2521  }
2522 
2523  // bool use_multi_armed_bandit_concatenate_operators = 41;
2524  if (this->_internal_use_multi_armed_bandit_concatenate_operators() != 0) {
2525  target = stream->EnsureSpace(target);
2526  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(41, this->_internal_use_multi_armed_bandit_concatenate_operators(), target);
2527  }
2528 
2529  // double multi_armed_bandit_compound_operator_memory_coefficient = 42;
2530  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2531  double tmp_multi_armed_bandit_compound_operator_memory_coefficient = this->_internal_multi_armed_bandit_compound_operator_memory_coefficient();
2532  uint64_t raw_multi_armed_bandit_compound_operator_memory_coefficient;
2533  memcpy(&raw_multi_armed_bandit_compound_operator_memory_coefficient, &tmp_multi_armed_bandit_compound_operator_memory_coefficient, sizeof(tmp_multi_armed_bandit_compound_operator_memory_coefficient));
2534  if (raw_multi_armed_bandit_compound_operator_memory_coefficient != 0) {
2535  target = stream->EnsureSpace(target);
2536  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(42, this->_internal_multi_armed_bandit_compound_operator_memory_coefficient(), target);
2537  }
2538 
2539  // double multi_armed_bandit_compound_operator_exploration_coefficient = 43;
2540  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2541  double tmp_multi_armed_bandit_compound_operator_exploration_coefficient = this->_internal_multi_armed_bandit_compound_operator_exploration_coefficient();
2542  uint64_t raw_multi_armed_bandit_compound_operator_exploration_coefficient;
2543  memcpy(&raw_multi_armed_bandit_compound_operator_exploration_coefficient, &tmp_multi_armed_bandit_compound_operator_exploration_coefficient, sizeof(tmp_multi_armed_bandit_compound_operator_exploration_coefficient));
2544  if (raw_multi_armed_bandit_compound_operator_exploration_coefficient != 0) {
2545  target = stream->EnsureSpace(target);
2546  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteDoubleToArray(43, this->_internal_multi_armed_bandit_compound_operator_exploration_coefficient(), target);
2547  }
2548 
2549  // int32 cheapest_insertion_first_solution_min_neighbors = 44;
2550  if (this->_internal_cheapest_insertion_first_solution_min_neighbors() != 0) {
2551  target = stream->EnsureSpace(target);
2552  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(44, this->_internal_cheapest_insertion_first_solution_min_neighbors(), target);
2553  }
2554 
2555  // int32 cheapest_insertion_ls_operator_min_neighbors = 45;
2556  if (this->_internal_cheapest_insertion_ls_operator_min_neighbors() != 0) {
2557  target = stream->EnsureSpace(target);
2558  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(45, this->_internal_cheapest_insertion_ls_operator_min_neighbors(), target);
2559  }
2560 
2561  // bool cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization = 46;
2562  if (this->_internal_cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization() != 0) {
2563  target = stream->EnsureSpace(target);
2564  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(46, this->_internal_cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization(), target);
2565  }
2566 
2567  // .operations_research.OptionalBoolean use_generalized_cp_sat = 47;
2568  if (this->_internal_use_generalized_cp_sat() != 0) {
2569  target = stream->EnsureSpace(target);
2570  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
2571  47, this->_internal_use_generalized_cp_sat(), target);
2572  }
2573 
2574  // .operations_research.sat.SatParameters sat_parameters = 48;
2575  if (this->_internal_has_sat_parameters()) {
2576  target = stream->EnsureSpace(target);
2577  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
2578  InternalWriteMessage(
2579  48, _Internal::sat_parameters(this), target, stream);
2580  }
2581 
2582  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
2583  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
2584  _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
2585  }
2586  // @@protoc_insertion_point(serialize_to_array_end:operations_research.RoutingSearchParameters)
2587  return target;
2588 }
2589 
2591 // @@protoc_insertion_point(message_byte_size_start:operations_research.RoutingSearchParameters)
2592  size_t total_size = 0;
2593 
2594  uint32_t cached_has_bits = 0;
2595  // Prevent compiler warnings about cached_has_bits being unused
2596  (void) cached_has_bits;
2597 
2598  // string log_tag = 36;
2599  if (!this->_internal_log_tag().empty()) {
2600  total_size += 2 +
2601  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
2602  this->_internal_log_tag());
2603  }
2604 
2605  // .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
2606  if (this->_internal_has_local_search_operators()) {
2607  total_size += 1 +
2608  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
2609  *local_search_operators_);
2610  }
2611 
2612  // .google.protobuf.Duration time_limit = 9;
2613  if (this->_internal_has_time_limit()) {
2614  total_size += 1 +
2615  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
2616  *time_limit_);
2617  }
2618 
2619  // .google.protobuf.Duration lns_time_limit = 10;
2620  if (this->_internal_has_lns_time_limit()) {
2621  total_size += 1 +
2622  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
2623  *lns_time_limit_);
2624  }
2625 
2626  // .operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters improvement_limit_parameters = 37;
2627  if (this->_internal_has_improvement_limit_parameters()) {
2628  total_size += 2 +
2629  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
2630  *improvement_limit_parameters_);
2631  }
2632 
2633  // .operations_research.sat.SatParameters sat_parameters = 48;
2634  if (this->_internal_has_sat_parameters()) {
2635  total_size += 2 +
2636  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
2637  *sat_parameters_);
2638  }
2639 
2640  // .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
2641  if (this->_internal_first_solution_strategy() != 0) {
2642  total_size += 1 +
2643  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_first_solution_strategy());
2644  }
2645 
2646  // .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
2647  if (this->_internal_local_search_metaheuristic() != 0) {
2648  total_size += 1 +
2649  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_local_search_metaheuristic());
2650  }
2651 
2652  // double guided_local_search_lambda_coefficient = 5;
2653  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2654  double tmp_guided_local_search_lambda_coefficient = this->_internal_guided_local_search_lambda_coefficient();
2655  uint64_t raw_guided_local_search_lambda_coefficient;
2656  memcpy(&raw_guided_local_search_lambda_coefficient, &tmp_guided_local_search_lambda_coefficient, sizeof(tmp_guided_local_search_lambda_coefficient));
2657  if (raw_guided_local_search_lambda_coefficient != 0) {
2658  total_size += 1 + 8;
2659  }
2660 
2661  // double optimization_step = 7;
2662  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2663  double tmp_optimization_step = this->_internal_optimization_step();
2664  uint64_t raw_optimization_step;
2665  memcpy(&raw_optimization_step, &tmp_optimization_step, sizeof(tmp_optimization_step));
2666  if (raw_optimization_step != 0) {
2667  total_size += 1 + 8;
2668  }
2669 
2670  // int64 solution_limit = 8;
2671  if (this->_internal_solution_limit() != 0) {
2672  total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64SizePlusOne(this->_internal_solution_limit());
2673  }
2674 
2675  // bool use_full_propagation = 11;
2676  if (this->_internal_use_full_propagation() != 0) {
2677  total_size += 1 + 1;
2678  }
2679 
2680  // bool log_search = 13;
2681  if (this->_internal_log_search() != 0) {
2682  total_size += 1 + 1;
2683  }
2684 
2685  // int32 number_of_solutions_to_collect = 17;
2686  if (this->_internal_number_of_solutions_to_collect() != 0) {
2687  total_size += 2 +
2688  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
2689  this->_internal_number_of_solutions_to_collect());
2690  }
2691 
2692  // double savings_neighbors_ratio = 14;
2693  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2694  double tmp_savings_neighbors_ratio = this->_internal_savings_neighbors_ratio();
2695  uint64_t raw_savings_neighbors_ratio;
2696  memcpy(&raw_savings_neighbors_ratio, &tmp_savings_neighbors_ratio, sizeof(tmp_savings_neighbors_ratio));
2697  if (raw_savings_neighbors_ratio != 0) {
2698  total_size += 1 + 8;
2699  }
2700 
2701  // double cheapest_insertion_farthest_seeds_ratio = 16;
2702  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2703  double tmp_cheapest_insertion_farthest_seeds_ratio = this->_internal_cheapest_insertion_farthest_seeds_ratio();
2704  uint64_t raw_cheapest_insertion_farthest_seeds_ratio;
2705  memcpy(&raw_cheapest_insertion_farthest_seeds_ratio, &tmp_cheapest_insertion_farthest_seeds_ratio, sizeof(tmp_cheapest_insertion_farthest_seeds_ratio));
2706  if (raw_cheapest_insertion_farthest_seeds_ratio != 0) {
2707  total_size += 2 + 8;
2708  }
2709 
2710  // double savings_arc_coefficient = 18;
2711  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2712  double tmp_savings_arc_coefficient = this->_internal_savings_arc_coefficient();
2713  uint64_t raw_savings_arc_coefficient;
2714  memcpy(&raw_savings_arc_coefficient, &tmp_savings_arc_coefficient, sizeof(tmp_savings_arc_coefficient));
2715  if (raw_savings_arc_coefficient != 0) {
2716  total_size += 2 + 8;
2717  }
2718 
2719  // int32 relocate_expensive_chain_num_arcs_to_consider = 20;
2720  if (this->_internal_relocate_expensive_chain_num_arcs_to_consider() != 0) {
2721  total_size += 2 +
2722  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
2723  this->_internal_relocate_expensive_chain_num_arcs_to_consider());
2724  }
2725 
2726  // bool use_unfiltered_first_solution_strategy = 2;
2727  if (this->_internal_use_unfiltered_first_solution_strategy() != 0) {
2728  total_size += 1 + 1;
2729  }
2730 
2731  // bool savings_add_reverse_arcs = 15;
2732  if (this->_internal_savings_add_reverse_arcs() != 0) {
2733  total_size += 1 + 1;
2734  }
2735 
2736  // bool savings_parallel_routes = 19;
2737  if (this->_internal_savings_parallel_routes() != 0) {
2738  total_size += 2 + 1;
2739  }
2740 
2741  // bool cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization = 46;
2742  if (this->_internal_cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization() != 0) {
2743  total_size += 2 + 1;
2744  }
2745 
2746  // double cheapest_insertion_first_solution_neighbors_ratio = 21;
2747  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2748  double tmp_cheapest_insertion_first_solution_neighbors_ratio = this->_internal_cheapest_insertion_first_solution_neighbors_ratio();
2749  uint64_t raw_cheapest_insertion_first_solution_neighbors_ratio;
2750  memcpy(&raw_cheapest_insertion_first_solution_neighbors_ratio, &tmp_cheapest_insertion_first_solution_neighbors_ratio, sizeof(tmp_cheapest_insertion_first_solution_neighbors_ratio));
2751  if (raw_cheapest_insertion_first_solution_neighbors_ratio != 0) {
2752  total_size += 2 + 8;
2753  }
2754 
2755  // double log_cost_scaling_factor = 22;
2756  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2757  double tmp_log_cost_scaling_factor = this->_internal_log_cost_scaling_factor();
2758  uint64_t raw_log_cost_scaling_factor;
2759  memcpy(&raw_log_cost_scaling_factor, &tmp_log_cost_scaling_factor, sizeof(tmp_log_cost_scaling_factor));
2760  if (raw_log_cost_scaling_factor != 0) {
2761  total_size += 2 + 8;
2762  }
2763 
2764  // double savings_max_memory_usage_bytes = 23;
2765  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2766  double tmp_savings_max_memory_usage_bytes = this->_internal_savings_max_memory_usage_bytes();
2767  uint64_t raw_savings_max_memory_usage_bytes;
2768  memcpy(&raw_savings_max_memory_usage_bytes, &tmp_savings_max_memory_usage_bytes, sizeof(tmp_savings_max_memory_usage_bytes));
2769  if (raw_savings_max_memory_usage_bytes != 0) {
2770  total_size += 2 + 8;
2771  }
2772 
2773  // .operations_research.OptionalBoolean use_cp_sat = 27;
2774  if (this->_internal_use_cp_sat() != 0) {
2775  total_size += 2 +
2776  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_cp_sat());
2777  }
2778 
2779  // .operations_research.OptionalBoolean use_cp = 28;
2780  if (this->_internal_use_cp() != 0) {
2781  total_size += 2 +
2782  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_cp());
2783  }
2784 
2785  // double log_cost_offset = 29;
2786  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2787  double tmp_log_cost_offset = this->_internal_log_cost_offset();
2788  uint64_t raw_log_cost_offset;
2789  memcpy(&raw_log_cost_offset, &tmp_log_cost_offset, sizeof(tmp_log_cost_offset));
2790  if (raw_log_cost_offset != 0) {
2791  total_size += 2 + 8;
2792  }
2793 
2794  // bool cheapest_insertion_add_unperformed_entries = 40;
2795  if (this->_internal_cheapest_insertion_add_unperformed_entries() != 0) {
2796  total_size += 2 + 1;
2797  }
2798 
2799  // bool christofides_use_minimum_matching = 30;
2800  if (this->_internal_christofides_use_minimum_matching() != 0) {
2801  total_size += 2 + 1;
2802  }
2803 
2804  // bool use_multi_armed_bandit_concatenate_operators = 41;
2805  if (this->_internal_use_multi_armed_bandit_concatenate_operators() != 0) {
2806  total_size += 2 + 1;
2807  }
2808 
2809  // bool use_depth_first_search = 6;
2810  if (this->_internal_use_depth_first_search() != 0) {
2811  total_size += 1 + 1;
2812  }
2813 
2814  // int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
2815  if (this->_internal_heuristic_expensive_chain_lns_num_arcs_to_consider() != 0) {
2816  total_size += 2 +
2817  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
2818  this->_internal_heuristic_expensive_chain_lns_num_arcs_to_consider());
2819  }
2820 
2821  // double cheapest_insertion_ls_operator_neighbors_ratio = 31;
2822  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2823  double tmp_cheapest_insertion_ls_operator_neighbors_ratio = this->_internal_cheapest_insertion_ls_operator_neighbors_ratio();
2824  uint64_t raw_cheapest_insertion_ls_operator_neighbors_ratio;
2825  memcpy(&raw_cheapest_insertion_ls_operator_neighbors_ratio, &tmp_cheapest_insertion_ls_operator_neighbors_ratio, sizeof(tmp_cheapest_insertion_ls_operator_neighbors_ratio));
2826  if (raw_cheapest_insertion_ls_operator_neighbors_ratio != 0) {
2827  total_size += 2 + 8;
2828  }
2829 
2830  // .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
2831  if (this->_internal_continuous_scheduling_solver() != 0) {
2832  total_size += 2 +
2833  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_continuous_scheduling_solver());
2834  }
2835 
2836  // .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
2837  if (this->_internal_mixed_integer_scheduling_solver() != 0) {
2838  total_size += 2 +
2839  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_mixed_integer_scheduling_solver());
2840  }
2841 
2842  // int32 heuristic_close_nodes_lns_num_nodes = 35;
2843  if (this->_internal_heuristic_close_nodes_lns_num_nodes() != 0) {
2844  total_size += 2 +
2845  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
2846  this->_internal_heuristic_close_nodes_lns_num_nodes());
2847  }
2848 
2849  // int32 cheapest_insertion_first_solution_min_neighbors = 44;
2850  if (this->_internal_cheapest_insertion_first_solution_min_neighbors() != 0) {
2851  total_size += 2 +
2852  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
2853  this->_internal_cheapest_insertion_first_solution_min_neighbors());
2854  }
2855 
2856  // double multi_armed_bandit_compound_operator_memory_coefficient = 42;
2857  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2858  double tmp_multi_armed_bandit_compound_operator_memory_coefficient = this->_internal_multi_armed_bandit_compound_operator_memory_coefficient();
2859  uint64_t raw_multi_armed_bandit_compound_operator_memory_coefficient;
2860  memcpy(&raw_multi_armed_bandit_compound_operator_memory_coefficient, &tmp_multi_armed_bandit_compound_operator_memory_coefficient, sizeof(tmp_multi_armed_bandit_compound_operator_memory_coefficient));
2861  if (raw_multi_armed_bandit_compound_operator_memory_coefficient != 0) {
2862  total_size += 2 + 8;
2863  }
2864 
2865  // double multi_armed_bandit_compound_operator_exploration_coefficient = 43;
2866  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2867  double tmp_multi_armed_bandit_compound_operator_exploration_coefficient = this->_internal_multi_armed_bandit_compound_operator_exploration_coefficient();
2868  uint64_t raw_multi_armed_bandit_compound_operator_exploration_coefficient;
2869  memcpy(&raw_multi_armed_bandit_compound_operator_exploration_coefficient, &tmp_multi_armed_bandit_compound_operator_exploration_coefficient, sizeof(tmp_multi_armed_bandit_compound_operator_exploration_coefficient));
2870  if (raw_multi_armed_bandit_compound_operator_exploration_coefficient != 0) {
2871  total_size += 2 + 8;
2872  }
2873 
2874  // int32 cheapest_insertion_ls_operator_min_neighbors = 45;
2875  if (this->_internal_cheapest_insertion_ls_operator_min_neighbors() != 0) {
2876  total_size += 2 +
2877  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
2878  this->_internal_cheapest_insertion_ls_operator_min_neighbors());
2879  }
2880 
2881  // .operations_research.OptionalBoolean use_generalized_cp_sat = 47;
2882  if (this->_internal_use_generalized_cp_sat() != 0) {
2883  total_size += 2 +
2884  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_use_generalized_cp_sat());
2885  }
2886 
2887  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
2888 }
2889 
2890 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RoutingSearchParameters::_class_data_ = {
2891  ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
2892  RoutingSearchParameters::MergeImpl
2893 };
2894 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RoutingSearchParameters::GetClassData() const { return &_class_data_; }
2895 
2896 void RoutingSearchParameters::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
2897  const ::PROTOBUF_NAMESPACE_ID::Message& from) {
2898  static_cast<RoutingSearchParameters *>(to)->MergeFrom(
2899  static_cast<const RoutingSearchParameters &>(from));
2900 }
2901 
2902 
2904 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.RoutingSearchParameters)
2905  GOOGLE_DCHECK_NE(&from, this);
2906  uint32_t cached_has_bits = 0;
2907  (void) cached_has_bits;
2908 
2909  if (!from._internal_log_tag().empty()) {
2910  _internal_set_log_tag(from._internal_log_tag());
2911  }
2912  if (from._internal_has_local_search_operators()) {
2913  _internal_mutable_local_search_operators()->::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators::MergeFrom(from._internal_local_search_operators());
2914  }
2915  if (from._internal_has_time_limit()) {
2916  _internal_mutable_time_limit()->::PROTOBUF_NAMESPACE_ID::Duration::MergeFrom(from._internal_time_limit());
2917  }
2918  if (from._internal_has_lns_time_limit()) {
2919  _internal_mutable_lns_time_limit()->::PROTOBUF_NAMESPACE_ID::Duration::MergeFrom(from._internal_lns_time_limit());
2920  }
2921  if (from._internal_has_improvement_limit_parameters()) {
2922  _internal_mutable_improvement_limit_parameters()->::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters::MergeFrom(from._internal_improvement_limit_parameters());
2923  }
2924  if (from._internal_has_sat_parameters()) {
2925  _internal_mutable_sat_parameters()->::operations_research::sat::SatParameters::MergeFrom(from._internal_sat_parameters());
2926  }
2927  if (from._internal_first_solution_strategy() != 0) {
2928  _internal_set_first_solution_strategy(from._internal_first_solution_strategy());
2929  }
2930  if (from._internal_local_search_metaheuristic() != 0) {
2931  _internal_set_local_search_metaheuristic(from._internal_local_search_metaheuristic());
2932  }
2933  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2934  double tmp_guided_local_search_lambda_coefficient = from._internal_guided_local_search_lambda_coefficient();
2935  uint64_t raw_guided_local_search_lambda_coefficient;
2936  memcpy(&raw_guided_local_search_lambda_coefficient, &tmp_guided_local_search_lambda_coefficient, sizeof(tmp_guided_local_search_lambda_coefficient));
2937  if (raw_guided_local_search_lambda_coefficient != 0) {
2938  _internal_set_guided_local_search_lambda_coefficient(from._internal_guided_local_search_lambda_coefficient());
2939  }
2940  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2941  double tmp_optimization_step = from._internal_optimization_step();
2942  uint64_t raw_optimization_step;
2943  memcpy(&raw_optimization_step, &tmp_optimization_step, sizeof(tmp_optimization_step));
2944  if (raw_optimization_step != 0) {
2945  _internal_set_optimization_step(from._internal_optimization_step());
2946  }
2947  if (from._internal_solution_limit() != 0) {
2948  _internal_set_solution_limit(from._internal_solution_limit());
2949  }
2950  if (from._internal_use_full_propagation() != 0) {
2951  _internal_set_use_full_propagation(from._internal_use_full_propagation());
2952  }
2953  if (from._internal_log_search() != 0) {
2954  _internal_set_log_search(from._internal_log_search());
2955  }
2956  if (from._internal_number_of_solutions_to_collect() != 0) {
2957  _internal_set_number_of_solutions_to_collect(from._internal_number_of_solutions_to_collect());
2958  }
2959  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2960  double tmp_savings_neighbors_ratio = from._internal_savings_neighbors_ratio();
2961  uint64_t raw_savings_neighbors_ratio;
2962  memcpy(&raw_savings_neighbors_ratio, &tmp_savings_neighbors_ratio, sizeof(tmp_savings_neighbors_ratio));
2963  if (raw_savings_neighbors_ratio != 0) {
2964  _internal_set_savings_neighbors_ratio(from._internal_savings_neighbors_ratio());
2965  }
2966  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2967  double tmp_cheapest_insertion_farthest_seeds_ratio = from._internal_cheapest_insertion_farthest_seeds_ratio();
2968  uint64_t raw_cheapest_insertion_farthest_seeds_ratio;
2969  memcpy(&raw_cheapest_insertion_farthest_seeds_ratio, &tmp_cheapest_insertion_farthest_seeds_ratio, sizeof(tmp_cheapest_insertion_farthest_seeds_ratio));
2970  if (raw_cheapest_insertion_farthest_seeds_ratio != 0) {
2971  _internal_set_cheapest_insertion_farthest_seeds_ratio(from._internal_cheapest_insertion_farthest_seeds_ratio());
2972  }
2973  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2974  double tmp_savings_arc_coefficient = from._internal_savings_arc_coefficient();
2975  uint64_t raw_savings_arc_coefficient;
2976  memcpy(&raw_savings_arc_coefficient, &tmp_savings_arc_coefficient, sizeof(tmp_savings_arc_coefficient));
2977  if (raw_savings_arc_coefficient != 0) {
2978  _internal_set_savings_arc_coefficient(from._internal_savings_arc_coefficient());
2979  }
2980  if (from._internal_relocate_expensive_chain_num_arcs_to_consider() != 0) {
2981  _internal_set_relocate_expensive_chain_num_arcs_to_consider(from._internal_relocate_expensive_chain_num_arcs_to_consider());
2982  }
2983  if (from._internal_use_unfiltered_first_solution_strategy() != 0) {
2984  _internal_set_use_unfiltered_first_solution_strategy(from._internal_use_unfiltered_first_solution_strategy());
2985  }
2986  if (from._internal_savings_add_reverse_arcs() != 0) {
2987  _internal_set_savings_add_reverse_arcs(from._internal_savings_add_reverse_arcs());
2988  }
2989  if (from._internal_savings_parallel_routes() != 0) {
2990  _internal_set_savings_parallel_routes(from._internal_savings_parallel_routes());
2991  }
2992  if (from._internal_cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization() != 0) {
2993  _internal_set_cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization(from._internal_cheapest_insertion_first_solution_use_neighbors_ratio_for_initialization());
2994  }
2995  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
2996  double tmp_cheapest_insertion_first_solution_neighbors_ratio = from._internal_cheapest_insertion_first_solution_neighbors_ratio();
2997  uint64_t raw_cheapest_insertion_first_solution_neighbors_ratio;
2998  memcpy(&raw_cheapest_insertion_first_solution_neighbors_ratio, &tmp_cheapest_insertion_first_solution_neighbors_ratio, sizeof(tmp_cheapest_insertion_first_solution_neighbors_ratio));
2999  if (raw_cheapest_insertion_first_solution_neighbors_ratio != 0) {
3000  _internal_set_cheapest_insertion_first_solution_neighbors_ratio(from._internal_cheapest_insertion_first_solution_neighbors_ratio());
3001  }
3002  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
3003  double tmp_log_cost_scaling_factor = from._internal_log_cost_scaling_factor();
3004  uint64_t raw_log_cost_scaling_factor;
3005  memcpy(&raw_log_cost_scaling_factor, &tmp_log_cost_scaling_factor, sizeof(tmp_log_cost_scaling_factor));
3006  if (raw_log_cost_scaling_factor != 0) {
3007  _internal_set_log_cost_scaling_factor(from._internal_log_cost_scaling_factor());
3008  }
3009  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
3010  double tmp_savings_max_memory_usage_bytes = from._internal_savings_max_memory_usage_bytes();
3011  uint64_t raw_savings_max_memory_usage_bytes;
3012  memcpy(&raw_savings_max_memory_usage_bytes, &tmp_savings_max_memory_usage_bytes, sizeof(tmp_savings_max_memory_usage_bytes));
3013  if (raw_savings_max_memory_usage_bytes != 0) {
3014  _internal_set_savings_max_memory_usage_bytes(from._internal_savings_max_memory_usage_bytes());
3015  }
3016  if (from._internal_use_cp_sat() != 0) {
3017  _internal_set_use_cp_sat(from._internal_use_cp_sat());
3018  }
3019  if (from._internal_use_cp() != 0) {
3020  _internal_set_use_cp(from._internal_use_cp());
3021  }
3022  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
3023  double tmp_log_cost_offset = from._internal_log_cost_offset();
3024  uint64_t raw_log_cost_offset;
3025  memcpy(&raw_log_cost_offset, &tmp_log_cost_offset, sizeof(tmp_log_cost_offset));
3026  if (raw_log_cost_offset != 0) {
3027  _internal_set_log_cost_offset(from._internal_log_cost_offset());
3028  }
3029  if (from._internal_cheapest_insertion_add_unperformed_entries() != 0) {
3030  _internal_set_cheapest_insertion_add_unperformed_entries(from._internal_cheapest_insertion_add_unperformed_entries());
3031  }
3032  if (from._internal_christofides_use_minimum_matching() != 0) {
3033  _internal_set_christofides_use_minimum_matching(from._internal_christofides_use_minimum_matching());
3034  }
3035  if (from._internal_use_multi_armed_bandit_concatenate_operators() != 0) {
3036  _internal_set_use_multi_armed_bandit_concatenate_operators(from._internal_use_multi_armed_bandit_concatenate_operators());
3037  }
3038  if (from._internal_use_depth_first_search() != 0) {
3039  _internal_set_use_depth_first_search(from._internal_use_depth_first_search());
3040  }
3041  if (from._internal_heuristic_expensive_chain_lns_num_arcs_to_consider() != 0) {
3042  _internal_set_heuristic_expensive_chain_lns_num_arcs_to_consider(from._internal_heuristic_expensive_chain_lns_num_arcs_to_consider());
3043  }
3044  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
3045  double tmp_cheapest_insertion_ls_operator_neighbors_ratio = from._internal_cheapest_insertion_ls_operator_neighbors_ratio();
3046  uint64_t raw_cheapest_insertion_ls_operator_neighbors_ratio;
3047  memcpy(&raw_cheapest_insertion_ls_operator_neighbors_ratio, &tmp_cheapest_insertion_ls_operator_neighbors_ratio, sizeof(tmp_cheapest_insertion_ls_operator_neighbors_ratio));
3048  if (raw_cheapest_insertion_ls_operator_neighbors_ratio != 0) {
3049  _internal_set_cheapest_insertion_ls_operator_neighbors_ratio(from._internal_cheapest_insertion_ls_operator_neighbors_ratio());
3050  }
3051  if (from._internal_continuous_scheduling_solver() != 0) {
3052  _internal_set_continuous_scheduling_solver(from._internal_continuous_scheduling_solver());
3053  }
3054  if (from._internal_mixed_integer_scheduling_solver() != 0) {
3055  _internal_set_mixed_integer_scheduling_solver(from._internal_mixed_integer_scheduling_solver());
3056  }
3057  if (from._internal_heuristic_close_nodes_lns_num_nodes() != 0) {
3058  _internal_set_heuristic_close_nodes_lns_num_nodes(from._internal_heuristic_close_nodes_lns_num_nodes());
3059  }
3060  if (from._internal_cheapest_insertion_first_solution_min_neighbors() != 0) {
3061  _internal_set_cheapest_insertion_first_solution_min_neighbors(from._internal_cheapest_insertion_first_solution_min_neighbors());
3062  }
3063  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
3064  double tmp_multi_armed_bandit_compound_operator_memory_coefficient = from._internal_multi_armed_bandit_compound_operator_memory_coefficient();
3065  uint64_t raw_multi_armed_bandit_compound_operator_memory_coefficient;
3066  memcpy(&raw_multi_armed_bandit_compound_operator_memory_coefficient, &tmp_multi_armed_bandit_compound_operator_memory_coefficient, sizeof(tmp_multi_armed_bandit_compound_operator_memory_coefficient));
3067  if (raw_multi_armed_bandit_compound_operator_memory_coefficient != 0) {
3068  _internal_set_multi_armed_bandit_compound_operator_memory_coefficient(from._internal_multi_armed_bandit_compound_operator_memory_coefficient());
3069  }
3070  static_assert(sizeof(uint64_t) == sizeof(double), "Code assumes uint64_t and double are the same size.");
3071  double tmp_multi_armed_bandit_compound_operator_exploration_coefficient = from._internal_multi_armed_bandit_compound_operator_exploration_coefficient();
3072  uint64_t raw_multi_armed_bandit_compound_operator_exploration_coefficient;
3073  memcpy(&raw_multi_armed_bandit_compound_operator_exploration_coefficient, &tmp_multi_armed_bandit_compound_operator_exploration_coefficient, sizeof(tmp_multi_armed_bandit_compound_operator_exploration_coefficient));
3074  if (raw_multi_armed_bandit_compound_operator_exploration_coefficient != 0) {
3075  _internal_set_multi_armed_bandit_compound_operator_exploration_coefficient(from._internal_multi_armed_bandit_compound_operator_exploration_coefficient());
3076  }
3077  if (from._internal_cheapest_insertion_ls_operator_min_neighbors() != 0) {
3078  _internal_set_cheapest_insertion_ls_operator_min_neighbors(from._internal_cheapest_insertion_ls_operator_min_neighbors());
3079  }
3080  if (from._internal_use_generalized_cp_sat() != 0) {
3081  _internal_set_use_generalized_cp_sat(from._internal_use_generalized_cp_sat());
3082  }
3083  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
3084 }
3085 
3087 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.RoutingSearchParameters)
3088  if (&from == this) return;
3089  Clear();
3090  MergeFrom(from);
3091 }
3092 
3094  return true;
3095 }
3096 
3097 void RoutingSearchParameters::InternalSwap(RoutingSearchParameters* other) {
3098  using std::swap;
3099  auto* lhs_arena = GetArenaForAllocation();
3100  auto* rhs_arena = other->GetArenaForAllocation();
3101  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
3102  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
3103  &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
3104  &log_tag_, lhs_arena,
3105  &other->log_tag_, rhs_arena
3106  );
3107  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
3108  PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, use_generalized_cp_sat_)
3109  + sizeof(RoutingSearchParameters::use_generalized_cp_sat_)
3110  - PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, local_search_operators_)>(
3111  reinterpret_cast<char*>(&local_search_operators_),
3112  reinterpret_cast<char*>(&other->local_search_operators_));
3113 }
3114 
3115 ::PROTOBUF_NAMESPACE_ID::Metadata RoutingSearchParameters::GetMetadata() const {
3116  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
3119 }
3120 
3121 // ===================================================================
3122 
3124  public:
3125  static const ::operations_research::ConstraintSolverParameters& solver_parameters(const RoutingModelParameters* msg);
3126 };
3127 
3128 const ::operations_research::ConstraintSolverParameters&
3130  return *msg->solver_parameters_;
3131 }
3133  if (GetArenaForAllocation() == nullptr && solver_parameters_ != nullptr) {
3134  delete solver_parameters_;
3135  }
3136  solver_parameters_ = nullptr;
3137 }
3138 RoutingModelParameters::RoutingModelParameters(::PROTOBUF_NAMESPACE_ID::Arena* arena,
3139  bool is_message_owned)
3140  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
3141  SharedCtor();
3142  if (!is_message_owned) {
3143  RegisterArenaDtor(arena);
3144  }
3145  // @@protoc_insertion_point(arena_constructor:operations_research.RoutingModelParameters)
3146 }
3148  : ::PROTOBUF_NAMESPACE_ID::Message() {
3149  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
3150  if (from._internal_has_solver_parameters()) {
3151  solver_parameters_ = new ::operations_research::ConstraintSolverParameters(*from.solver_parameters_);
3152  } else {
3153  solver_parameters_ = nullptr;
3154  }
3155  ::memcpy(&reduce_vehicle_cost_model_, &from.reduce_vehicle_cost_model_,
3156  static_cast<size_t>(reinterpret_cast<char*>(&max_callback_cache_size_) -
3157  reinterpret_cast<char*>(&reduce_vehicle_cost_model_)) + sizeof(max_callback_cache_size_));
3158  // @@protoc_insertion_point(copy_constructor:operations_research.RoutingModelParameters)
3159 }
3160 
3161 inline void RoutingModelParameters::SharedCtor() {
3162 ::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
3163  reinterpret_cast<char*>(&solver_parameters_) - reinterpret_cast<char*>(this)),
3164  0, static_cast<size_t>(reinterpret_cast<char*>(&max_callback_cache_size_) -
3165  reinterpret_cast<char*>(&solver_parameters_)) + sizeof(max_callback_cache_size_));
3166 }
3167 
3169  // @@protoc_insertion_point(destructor:operations_research.RoutingModelParameters)
3170  if (GetArenaForAllocation() != nullptr) return;
3171  SharedDtor();
3172  _internal_metadata_.Delete<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
3173 }
3174 
3175 inline void RoutingModelParameters::SharedDtor() {
3176  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
3177  if (this != internal_default_instance()) delete solver_parameters_;
3178 }
3179 
3180 void RoutingModelParameters::ArenaDtor(void* object) {
3181  RoutingModelParameters* _this = reinterpret_cast< RoutingModelParameters* >(object);
3182  (void)_this;
3183 }
3184 void RoutingModelParameters::RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena*) {
3185 }
3186 void RoutingModelParameters::SetCachedSize(int size) const {
3187  _cached_size_.Set(size);
3188 }
3189 
3191 // @@protoc_insertion_point(message_clear_start:operations_research.RoutingModelParameters)
3192  uint32_t cached_has_bits = 0;
3193  // Prevent compiler warnings about cached_has_bits being unused
3194  (void) cached_has_bits;
3195 
3196  if (GetArenaForAllocation() == nullptr && solver_parameters_ != nullptr) {
3197  delete solver_parameters_;
3198  }
3199  solver_parameters_ = nullptr;
3200  ::memset(&reduce_vehicle_cost_model_, 0, static_cast<size_t>(
3201  reinterpret_cast<char*>(&max_callback_cache_size_) -
3202  reinterpret_cast<char*>(&reduce_vehicle_cost_model_)) + sizeof(max_callback_cache_size_));
3203  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
3204 }
3205 
3206 const char* RoutingModelParameters::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
3207 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
3208  while (!ctx->Done(&ptr)) {
3209  uint32_t tag;
3210  ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
3211  switch (tag >> 3) {
3212  // .operations_research.ConstraintSolverParameters solver_parameters = 1;
3213  case 1:
3214  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
3215  ptr = ctx->ParseMessage(_internal_mutable_solver_parameters(), ptr);
3216  CHK_(ptr);
3217  } else
3218  goto handle_unusual;
3219  continue;
3220  // bool reduce_vehicle_cost_model = 2;
3221  case 2:
3222  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
3223  reduce_vehicle_cost_model_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
3224  CHK_(ptr);
3225  } else
3226  goto handle_unusual;
3227  continue;
3228  // int32 max_callback_cache_size = 3;
3229  case 3:
3230  if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
3231  max_callback_cache_size_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
3232  CHK_(ptr);
3233  } else
3234  goto handle_unusual;
3235  continue;
3236  default:
3237  goto handle_unusual;
3238  } // switch
3239  handle_unusual:
3240  if ((tag == 0) || ((tag & 7) == 4)) {
3241  CHK_(ptr);
3242  ctx->SetLastTag(tag);
3243  goto message_done;
3244  }
3245  ptr = UnknownFieldParse(
3246  tag,
3247  _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
3248  ptr, ctx);
3249  CHK_(ptr != nullptr);
3250  } // while
3251 message_done:
3252  return ptr;
3253 failure:
3254  ptr = nullptr;
3255  goto message_done;
3256 #undef CHK_
3257 }
3258 
3260  uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
3261  // @@protoc_insertion_point(serialize_to_array_start:operations_research.RoutingModelParameters)
3262  uint32_t cached_has_bits = 0;
3263  (void) cached_has_bits;
3264 
3265  // .operations_research.ConstraintSolverParameters solver_parameters = 1;
3266  if (this->_internal_has_solver_parameters()) {
3267  target = stream->EnsureSpace(target);
3268  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
3269  InternalWriteMessage(
3270  1, _Internal::solver_parameters(this), target, stream);
3271  }
3272 
3273  // bool reduce_vehicle_cost_model = 2;
3274  if (this->_internal_reduce_vehicle_cost_model() != 0) {
3275  target = stream->EnsureSpace(target);
3276  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBoolToArray(2, this->_internal_reduce_vehicle_cost_model(), target);
3277  }
3278 
3279  // int32 max_callback_cache_size = 3;
3280  if (this->_internal_max_callback_cache_size() != 0) {
3281  target = stream->EnsureSpace(target);
3282  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(3, this->_internal_max_callback_cache_size(), target);
3283  }
3284 
3285  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
3286  target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
3287  _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
3288  }
3289  // @@protoc_insertion_point(serialize_to_array_end:operations_research.RoutingModelParameters)
3290  return target;
3291 }
3292 
3294 // @@protoc_insertion_point(message_byte_size_start:operations_research.RoutingModelParameters)
3295  size_t total_size = 0;
3296 
3297  uint32_t cached_has_bits = 0;
3298  // Prevent compiler warnings about cached_has_bits being unused
3299  (void) cached_has_bits;
3300 
3301  // .operations_research.ConstraintSolverParameters solver_parameters = 1;
3302  if (this->_internal_has_solver_parameters()) {
3303  total_size += 1 +
3304  ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
3305  *solver_parameters_);
3306  }
3307 
3308  // bool reduce_vehicle_cost_model = 2;
3309  if (this->_internal_reduce_vehicle_cost_model() != 0) {
3310  total_size += 1 + 1;
3311  }
3312 
3313  // int32 max_callback_cache_size = 3;
3314  if (this->_internal_max_callback_cache_size() != 0) {
3315  total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_max_callback_cache_size());
3316  }
3317 
3318  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
3319 }
3320 
3321 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData RoutingModelParameters::_class_data_ = {
3322  ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSizeCheck,
3323  RoutingModelParameters::MergeImpl
3324 };
3325 const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*RoutingModelParameters::GetClassData() const { return &_class_data_; }
3326 
3327 void RoutingModelParameters::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message* to,
3328  const ::PROTOBUF_NAMESPACE_ID::Message& from) {
3329  static_cast<RoutingModelParameters *>(to)->MergeFrom(
3330  static_cast<const RoutingModelParameters &>(from));
3331 }
3332 
3333 
3335 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.RoutingModelParameters)
3336  GOOGLE_DCHECK_NE(&from, this);
3337  uint32_t cached_has_bits = 0;
3338  (void) cached_has_bits;
3339 
3340  if (from._internal_has_solver_parameters()) {
3341  _internal_mutable_solver_parameters()->::operations_research::ConstraintSolverParameters::MergeFrom(from._internal_solver_parameters());
3342  }
3343  if (from._internal_reduce_vehicle_cost_model() != 0) {
3344  _internal_set_reduce_vehicle_cost_model(from._internal_reduce_vehicle_cost_model());
3345  }
3346  if (from._internal_max_callback_cache_size() != 0) {
3347  _internal_set_max_callback_cache_size(from._internal_max_callback_cache_size());
3348  }
3349  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
3350 }
3351 
3353 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.RoutingModelParameters)
3354  if (&from == this) return;
3355  Clear();
3356  MergeFrom(from);
3357 }
3358 
3360  return true;
3361 }
3362 
3363 void RoutingModelParameters::InternalSwap(RoutingModelParameters* other) {
3364  using std::swap;
3365  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
3366  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
3367  PROTOBUF_FIELD_OFFSET(RoutingModelParameters, max_callback_cache_size_)
3368  + sizeof(RoutingModelParameters::max_callback_cache_size_)
3369  - PROTOBUF_FIELD_OFFSET(RoutingModelParameters, solver_parameters_)>(
3370  reinterpret_cast<char*>(&solver_parameters_),
3371  reinterpret_cast<char*>(&other->solver_parameters_));
3372 }
3373 
3374 ::PROTOBUF_NAMESPACE_ID::Metadata RoutingModelParameters::GetMetadata() const {
3375  return ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(
3378 }
3379 
3380 // @@protoc_insertion_point(namespace_scope)
3381 } // namespace operations_research
3382 PROTOBUF_NAMESPACE_OPEN
3383 template<> PROTOBUF_NOINLINE ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators* Arena::CreateMaybeMessage< ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators >(Arena* arena) {
3384  return Arena::CreateMessageInternal< ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators >(arena);
3385 }
3386 template<> PROTOBUF_NOINLINE ::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters* Arena::CreateMaybeMessage< ::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters >(Arena* arena) {
3387  return Arena::CreateMessageInternal< ::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters >(arena);
3388 }
3389 template<> PROTOBUF_NOINLINE ::operations_research::RoutingSearchParameters* Arena::CreateMaybeMessage< ::operations_research::RoutingSearchParameters >(Arena* arena) {
3390  return Arena::CreateMessageInternal< ::operations_research::RoutingSearchParameters >(arena);
3391 }
3392 template<> PROTOBUF_NOINLINE ::operations_research::RoutingModelParameters* Arena::CreateMaybeMessage< ::operations_research::RoutingModelParameters >(Arena* arena) {
3393  return Arena::CreateMessageInternal< ::operations_research::RoutingModelParameters >(arena);
3394 }
3395 PROTOBUF_NAMESPACE_CLOSE
3396 
3397 // @@protoc_insertion_point(global_scope)
3398 #include <google/protobuf/port_undef.inc>
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData * GetClassData() const final
void CopyFrom(const RoutingSearchParameters_LocalSearchNeighborhoodOperators &from)
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData * GetClassData() const final
::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto[4]
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT RoutingSearchParameters_ImprovementSearchLimitParametersDefaultTypeInternal _RoutingSearchParameters_ImprovementSearchLimitParameters_default_instance_
PROTOBUF_NOINLINE ::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters * Arena::CreateMaybeMessage< ::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters >(Arena *arena)
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_ortools_2futil_2foptional_5fboolean_2eproto
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT RoutingModelParametersDefaultTypeInternal _RoutingModelParameters_default_instance_
static const ::PROTOBUF_NAMESPACE_ID::Duration & lns_time_limit(const RoutingSearchParameters *msg)
void swap(IdMap< K, V > &a, IdMap< K, V > &b)
Definition: id_map.h:263
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_ortools_2fconstraint_5fsolver_2fsolver_5fparameters_2eproto
void CopyFrom(const RoutingSearchParameters_ImprovementSearchLimitParameters &from)
static const ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators & local_search_operators(const RoutingSearchParameters *msg)
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData * GetClassData() const final
::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final
void MergeFrom(const RoutingSearchParameters_LocalSearchNeighborhoodOperators &from)
static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor * file_level_enum_descriptors_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto[1]
PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final
PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final
const char * _InternalParse(const char *ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext *ctx) final
void MergeFrom(const RoutingModelParameters &from)
static const ::PROTOBUF_NAMESPACE_ID::Duration & time_limit(const RoutingSearchParameters *msg)
const ::PROTOBUF_NAMESPACE_ID::Message::ClassData * GetClassData() const final
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT RoutingSearchParametersDefaultTypeInternal _RoutingSearchParameters_default_instance_
void MergeFrom(const RoutingSearchParameters &from)
PROTOBUF_NOINLINE ::operations_research::RoutingModelParameters * Arena::CreateMaybeMessage< ::operations_research::RoutingModelParameters >(Arena *arena)
::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final
bool RoutingSearchParameters_SchedulingSolver_IsValid(int value)
void CopyFrom(const RoutingModelParameters &from)
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto
void MergeFrom(const RoutingSearchParameters_ImprovementSearchLimitParameters &from)
PROTOBUF_NAMESPACE_OPEN PROTOBUF_NOINLINE ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators * Arena::CreateMaybeMessage< ::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators >(Arena *arena)
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fenums_2eproto
const char * _InternalParse(const char *ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext *ctx) final
static constexpr SchedulingSolver SchedulingSolver_MIN
const uint32_t TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto::offsets [] PROTOBUF_SECTION_VARIABLE(protodesc_cold)
static const RoutingSearchParameters * internal_default_instance()
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable *const descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto_deps[5]
::PROTOBUF_NAMESPACE_ID::Message const *const file_default_instances[]
void CopyFrom(const RoutingSearchParameters &from)
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_ortools_2fsat_2fsat_5fparameters_2eproto
uint8_t * _InternalSerialize(uint8_t *target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream *stream) const final
uint8_t * _InternalSerialize(uint8_t *target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream *stream) const final
static const RoutingModelParameters * internal_default_instance()
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const ** file_level_service_descriptors_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto
static const ::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters & improvement_limit_parameters(const RoutingSearchParameters *msg)
#define CHK_(x)
uint8_t * _InternalSerialize(uint8_t *target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream *stream) const final
static const ::operations_research::sat::SatParameters & sat_parameters(const RoutingSearchParameters *msg)
static const ::operations_research::ConstraintSolverParameters & solver_parameters(const RoutingModelParameters *msg)
PROTOBUF_ATTRIBUTE_WEAKconst ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable * descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto_getter()
Collection of objects used to extend the Constraint Solver library.
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor * RoutingSearchParameters_SchedulingSolver_descriptor()
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT RoutingSearchParameters_LocalSearchNeighborhoodOperatorsDefaultTypeInternal _RoutingSearchParameters_LocalSearchNeighborhoodOperators_default_instance_
PROTOBUF_NOINLINE ::operations_research::RoutingSearchParameters * Arena::CreateMaybeMessage< ::operations_research::RoutingSearchParameters >(Arena *arena)
static constexpr SchedulingSolver SchedulingSolver_MAX
static constexpr ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema * schemas
uint8_t * _InternalSerialize(uint8_t *target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream *stream) const final
const char * _InternalParse(const char *ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext *ctx) final
const char * _InternalParse(const char *ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext *ctx) final
int64_t value
::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto_once