Google OR-Tools v9.15
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
routing_parameters.pb.cc
Go to the documentation of this file.
1// Generated by the protocol buffer compiler. DO NOT EDIT!
2// NO CHECKED-IN PROTOBUF GENCODE
3// source: ortools/constraint_solver/routing_parameters.proto
4// Protobuf C++ Version: 6.33.1
5
7
8#include <algorithm>
9#include <type_traits>
10#include "google/protobuf/io/coded_stream.h"
11#include "google/protobuf/generated_message_tctable_impl.h"
12#include "google/protobuf/extension_set.h"
13#include "google/protobuf/generated_message_util.h"
14#include "google/protobuf/wire_format_lite.h"
15#include "google/protobuf/descriptor.h"
16#include "google/protobuf/generated_message_reflection.h"
17#include "google/protobuf/reflection_ops.h"
18#include "google/protobuf/wire_format.h"
19// @@protoc_insertion_point(includes)
20
21// Must be included last.
22#include "google/protobuf/port_def.inc"
23PROTOBUF_PRAGMA_INIT_SEG
24namespace _pb = ::google::protobuf;
26namespace _fl = ::google::protobuf::internal::field_layout;
27namespace operations_research {
28
29inline constexpr RoutingSearchParameters_LocalSearchNeighborhoodOperators::Impl_::Impl_(
30 ::_pbi::ConstantInitialized) noexcept
31 : _cached_size_{0},
32 use_relocate_{static_cast< ::operations_research::OptionalBoolean >(0)},
33 use_relocate_pair_{static_cast< ::operations_research::OptionalBoolean >(0)},
34 use_relocate_neighbors_{static_cast< ::operations_research::OptionalBoolean >(0)},
35 use_exchange_{static_cast< ::operations_research::OptionalBoolean >(0)},
36 use_cross_{static_cast< ::operations_research::OptionalBoolean >(0)},
37 use_cross_exchange_{static_cast< ::operations_research::OptionalBoolean >(0)},
38 use_two_opt_{static_cast< ::operations_research::OptionalBoolean >(0)},
39 use_or_opt_{static_cast< ::operations_research::OptionalBoolean >(0)},
40 use_lin_kernighan_{static_cast< ::operations_research::OptionalBoolean >(0)},
41 use_tsp_opt_{static_cast< ::operations_research::OptionalBoolean >(0)},
42 use_make_active_{static_cast< ::operations_research::OptionalBoolean >(0)},
43 use_make_inactive_{static_cast< ::operations_research::OptionalBoolean >(0)},
44 use_make_chain_inactive_{static_cast< ::operations_research::OptionalBoolean >(0)},
45 use_swap_active_{static_cast< ::operations_research::OptionalBoolean >(0)},
46 use_extended_swap_active_{static_cast< ::operations_research::OptionalBoolean >(0)},
47 use_path_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
48 use_full_path_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
49 use_tsp_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
50 use_inactive_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
51 use_node_pair_swap_active_{static_cast< ::operations_research::OptionalBoolean >(0)},
52 use_relocate_and_make_active_{static_cast< ::operations_research::OptionalBoolean >(0)},
53 use_exchange_pair_{static_cast< ::operations_research::OptionalBoolean >(0)},
54 use_relocate_expensive_chain_{static_cast< ::operations_research::OptionalBoolean >(0)},
55 use_light_relocate_pair_{static_cast< ::operations_research::OptionalBoolean >(0)},
56 use_relocate_subtrip_{static_cast< ::operations_research::OptionalBoolean >(0)},
57 use_exchange_subtrip_{static_cast< ::operations_research::OptionalBoolean >(0)},
58 use_global_cheapest_insertion_path_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
59 use_local_cheapest_insertion_path_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
60 use_global_cheapest_insertion_expensive_chain_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
61 use_local_cheapest_insertion_expensive_chain_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
62 use_global_cheapest_insertion_close_nodes_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
63 use_local_cheapest_insertion_visit_types_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
64 use_local_cheapest_insertion_close_nodes_lns_{static_cast< ::operations_research::OptionalBoolean >(0)},
65 use_relocate_path_global_cheapest_insertion_insert_unperformed_{static_cast< ::operations_research::OptionalBoolean >(0)},
66 use_shortest_path_swap_active_{static_cast< ::operations_research::OptionalBoolean >(0)},
67 use_swap_active_chain_{static_cast< ::operations_research::OptionalBoolean >(0)},
68 use_shortest_path_two_opt_{static_cast< ::operations_research::OptionalBoolean >(0)},
69 use_exchange_and_make_active_{static_cast< ::operations_research::OptionalBoolean >(0)},
70 use_exchange_path_start_ends_and_make_active_{static_cast< ::operations_research::OptionalBoolean >(0)},
71 use_global_cheapest_insertion_visit_types_lns_{static_cast< ::operations_research::OptionalBoolean >(0)} {}
72
73template <typename>
75#if defined(PROTOBUF_CUSTOM_VTABLE)
77#else // PROTOBUF_CUSTOM_VTABLE
78 : ::google::protobuf::Message(),
79#endif // PROTOBUF_CUSTOM_VTABLE
80 _impl_(::_pbi::ConstantInitialized()) {
81}
89
90PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
92
93inline constexpr RoutingSearchParameters_ImprovementSearchLimitParameters::Impl_::Impl_(
94 ::_pbi::ConstantInitialized) noexcept
95 : _cached_size_{0},
96 improvement_rate_coefficient_{0},
97 improvement_rate_solutions_distance_{0} {}
98
99template <typename>
101#if defined(PROTOBUF_CUSTOM_VTABLE)
103#else // PROTOBUF_CUSTOM_VTABLE
104 : ::google::protobuf::Message(),
105#endif // PROTOBUF_CUSTOM_VTABLE
106 _impl_(::_pbi::ConstantInitialized()) {
107}
115
116PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
118
119inline constexpr RoutingModelParameters::Impl_::Impl_(
120 ::_pbi::ConstantInitialized) noexcept
121 : _cached_size_{0},
122 solver_parameters_{nullptr},
123 reduce_vehicle_cost_model_{false},
124 max_callback_cache_size_{0} {}
125
126template <typename>
127PROTOBUF_CONSTEXPR RoutingModelParameters::RoutingModelParameters(::_pbi::ConstantInitialized)
128#if defined(PROTOBUF_CUSTOM_VTABLE)
129 : ::google::protobuf::Message(RoutingModelParameters_class_data_.base()),
130#else // PROTOBUF_CUSTOM_VTABLE
131 : ::google::protobuf::Message(),
132#endif // PROTOBUF_CUSTOM_VTABLE
133 _impl_(::_pbi::ConstantInitialized()) {
134}
142
143PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
145
146inline constexpr RoutingSearchParameters::Impl_::Impl_(
147 ::_pbi::ConstantInitialized) noexcept
148 : _cached_size_{0},
149 local_search_operators_{nullptr},
150 time_limit_{nullptr},
151 lns_time_limit_{nullptr},
152 improvement_limit_parameters_{nullptr},
153 global_cheapest_insertion_first_solution_parameters_{nullptr},
154 first_solution_strategy_{static_cast< ::operations_research::FirstSolutionStrategy_Value >(0)},
155 local_search_metaheuristic_{static_cast< ::operations_research::LocalSearchMetaheuristic_Value >(0)},
156 guided_local_search_lambda_coefficient_{0},
157 optimization_step_{0},
158 solution_limit_{::int64_t{0}},
159 use_unfiltered_first_solution_strategy_{false},
160 use_depth_first_search_{false},
161 use_full_propagation_{false},
162 log_search_{false},
163 number_of_solutions_to_collect_{0},
164 log_cost_scaling_factor_{0},
165 relocate_expensive_chain_num_arcs_to_consider_{0},
166 use_cp_sat_{static_cast< ::operations_research::OptionalBoolean >(0)},
167 log_cost_offset_{0},
168 use_cp_{static_cast< ::operations_research::OptionalBoolean >(0)},
169 heuristic_expensive_chain_lns_num_arcs_to_consider_{0},
170 mixed_integer_scheduling_solver_{static_cast< ::operations_research::RoutingSearchParameters_SchedulingSolver >(0)},
171 heuristic_close_nodes_lns_num_nodes_{0},
172 multi_armed_bandit_compound_operator_memory_coefficient_{0},
173 christofides_use_minimum_matching_{false},
174 use_multi_armed_bandit_concatenate_operators_{false},
175 report_intermediate_cp_sat_solutions_{false},
176 use_generalized_cp_sat_{static_cast< ::operations_research::OptionalBoolean >(0)},
177 local_search_metaheuristics_{},
178 _local_search_metaheuristics_cached_byte_size_{0},
179 log_tag_(
180 &::google::protobuf::internal::fixed_address_empty_string,
181 ::_pbi::ConstantInitialized()),
182 sat_parameters_{nullptr},
183 iterated_local_search_parameters_{nullptr},
184 local_cheapest_insertion_parameters_{nullptr},
185 local_cheapest_cost_insertion_parameters_{nullptr},
186 savings_parameters_{nullptr},
187 global_cheapest_insertion_ls_operator_parameters_{nullptr},
188 continuous_scheduling_solver_{static_cast< ::operations_research::RoutingSearchParameters_SchedulingSolver >(0)},
189 fallback_to_cp_sat_size_threshold_{0},
190 multi_armed_bandit_compound_operator_exploration_coefficient_{0},
191 ls_operator_neighbors_ratio_{0},
192 ls_operator_min_neighbors_{0},
193 disable_scheduling_beware_this_may_degrade_performance_{false},
194 guided_local_search_reset_penalties_on_new_best_solution_{false},
195 use_iterated_local_search_{false},
196 guided_local_search_penalize_with_vehicle_classes_{false},
197 secondary_ls_time_limit_ratio_{0},
198 first_solution_optimization_period_{0},
199 use_guided_local_search_penalties_in_local_search_operators_{false},
200 num_max_local_optima_before_metaheuristic_switch_{0},
201 max_swap_active_chain_size_{0} {}
202
203template <typename>
204PROTOBUF_CONSTEXPR RoutingSearchParameters::RoutingSearchParameters(::_pbi::ConstantInitialized)
205#if defined(PROTOBUF_CUSTOM_VTABLE)
206 : ::google::protobuf::Message(RoutingSearchParameters_class_data_.base()),
207#else // PROTOBUF_CUSTOM_VTABLE
208 : ::google::protobuf::Message(),
209#endif // PROTOBUF_CUSTOM_VTABLE
210 _impl_(::_pbi::ConstantInitialized()) {
211}
219
220PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
222} // namespace operations_research
223static const ::_pb::EnumDescriptor* PROTOBUF_NONNULL
225static constexpr const ::_pb::ServiceDescriptor* PROTOBUF_NONNULL* PROTOBUF_NULLABLE
227const ::uint32_t
229 protodesc_cold) = {
230 0x081, // bitmap
232 43, // hasbit index offset
234 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_pair_),
235 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_light_relocate_pair_),
236 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_neighbors_),
237 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_subtrip_),
239 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_pair_),
240 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_subtrip_),
242 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_cross_exchange_),
243 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_expensive_chain_),
246 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_lin_kernighan_),
248 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_active_),
249 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_and_make_active_),
250 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_and_make_active_),
251 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_path_start_ends_and_make_active_),
252 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_inactive_),
253 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_chain_inactive_),
254 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_swap_active_),
255 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_swap_active_chain_),
256 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_extended_swap_active_),
257 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_shortest_path_swap_active_),
258 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_shortest_path_two_opt_),
259 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_node_pair_swap_active_),
261 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_full_path_lns_),
263 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_inactive_lns_),
264 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_path_lns_),
265 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_local_cheapest_insertion_path_lns_),
266 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_path_global_cheapest_insertion_insert_unperformed_),
267 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_expensive_chain_lns_),
268 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_local_cheapest_insertion_expensive_chain_lns_),
269 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_close_nodes_lns_),
270 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_local_cheapest_insertion_close_nodes_lns_),
271 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_visit_types_lns_),
272 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_local_cheapest_insertion_visit_types_lns_),
273 0,
274 1,
275 23,
276 2,
277 24,
278 3,
279 21,
280 25,
281 4,
282 5,
283 22,
284 6,
285 7,
286 8,
287 9,
288 10,
289 20,
290 37,
291 38,
292 11,
293 12,
294 13,
295 35,
296 14,
297 34,
298 36,
299 19,
300 15,
301 16,
302 17,
303 18,
304 26,
305 27,
306 33,
307 28,
308 29,
309 30,
310 32,
311 39,
312 31,
313 0x081, // bitmap
315 5, // hasbit index offset
316 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_.improvement_rate_coefficient_),
317 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_.improvement_rate_solutions_distance_),
318 0,
319 1,
320 0x081, // bitmap
321 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_._has_bits_),
322 53, // hasbit index offset
323 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.first_solution_strategy_),
324 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.use_unfiltered_first_solution_strategy_),
325 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.savings_parameters_),
326 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.global_cheapest_insertion_first_solution_parameters_),
327 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.global_cheapest_insertion_ls_operator_parameters_),
328 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.local_cheapest_insertion_parameters_),
329 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.local_cheapest_cost_insertion_parameters_),
330 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.christofides_use_minimum_matching_),
331 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.first_solution_optimization_period_),
332 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.local_search_operators_),
333 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.ls_operator_neighbors_ratio_),
334 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.ls_operator_min_neighbors_),
335 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.use_multi_armed_bandit_concatenate_operators_),
336 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.multi_armed_bandit_compound_operator_memory_coefficient_),
337 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.multi_armed_bandit_compound_operator_exploration_coefficient_),
338 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.max_swap_active_chain_size_),
339 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.relocate_expensive_chain_num_arcs_to_consider_),
340 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.heuristic_expensive_chain_lns_num_arcs_to_consider_),
341 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.heuristic_close_nodes_lns_num_nodes_),
342 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.local_search_metaheuristic_),
343 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.local_search_metaheuristics_),
344 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.num_max_local_optima_before_metaheuristic_switch_),
345 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.guided_local_search_lambda_coefficient_),
346 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.guided_local_search_reset_penalties_on_new_best_solution_),
347 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.guided_local_search_penalize_with_vehicle_classes_),
348 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.use_guided_local_search_penalties_in_local_search_operators_),
349 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.use_depth_first_search_),
350 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.use_cp_),
351 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.use_cp_sat_),
352 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.use_generalized_cp_sat_),
353 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.sat_parameters_),
354 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.report_intermediate_cp_sat_solutions_),
355 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.fallback_to_cp_sat_size_threshold_),
356 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.continuous_scheduling_solver_),
357 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.mixed_integer_scheduling_solver_),
358 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.disable_scheduling_beware_this_may_degrade_performance_),
359 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.optimization_step_),
360 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.number_of_solutions_to_collect_),
361 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.solution_limit_),
362 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.time_limit_),
363 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.lns_time_limit_),
364 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.secondary_ls_time_limit_ratio_),
365 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.improvement_limit_parameters_),
366 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.use_full_propagation_),
367 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.log_search_),
368 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.log_cost_scaling_factor_),
369 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.log_cost_offset_),
370 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.log_tag_),
371 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.use_iterated_local_search_),
372 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingSearchParameters, _impl_.iterated_local_search_parameters_),
373 5,
374 10,
375 34,
376 4,
377 35,
378 32,
379 33,
380 24,
381 46,
382 0,
383 39,
384 40,
385 25,
386 23,
387 38,
388 49,
389 16,
390 20,
391 22,
392 6,
393 28,
394 48,
395 7,
396 42,
397 44,
398 47,
399 11,
400 19,
401 17,
402 27,
403 30,
404 26,
405 37,
406 36,
407 21,
408 41,
409 8,
410 14,
411 9,
412 1,
413 2,
414 45,
415 3,
416 12,
417 13,
418 15,
419 18,
420 29,
421 43,
422 31,
423 0x081, // bitmap
424 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingModelParameters, _impl_._has_bits_),
425 6, // hasbit index offset
426 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingModelParameters, _impl_.solver_parameters_),
427 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingModelParameters, _impl_.reduce_vehicle_cost_model_),
428 PROTOBUF_FIELD_OFFSET(::operations_research::RoutingModelParameters, _impl_.max_callback_cache_size_),
429 0,
430 1,
431 2,
432};
433
434static const ::_pbi::MigrationSchema
435 schemas[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
440};
447const char descriptor_table_protodef_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
448 protodesc_cold) = {
449 "\n2ortools/constraint_solver/routing_para"
450 "meters.proto\022\023operations_research\032\036googl"
451 "e/protobuf/duration.proto\032-ortools/const"
452 "raint_solver/routing_enums.proto\032<ortool"
453 "s/constraint_solver/routing_heuristic_pa"
454 "rameters.proto\032+ortools/constraint_solve"
455 "r/routing_ils.proto\0321ortools/constraint_"
456 "solver/solver_parameters.proto\032 ortools/"
457 "sat/sat_parameters.proto\032#ortools/util/o"
458 "ptional_boolean.proto\"\3301\n\027RoutingSearchP"
459 "arameters\022Q\n\027first_solution_strategy\030\001 \001"
460 "(\01620.operations_research.FirstSolutionSt"
461 "rategy.Value\022.\n&use_unfiltered_first_sol"
462 "ution_strategy\030\002 \001(\010\022B\n\022savings_paramete"
463 "rs\030F \001(\0132&.operations_research.SavingsPa"
464 "rameters\022s\n3global_cheapest_insertion_fi"
465 "rst_solution_parameters\030G \001(\01326.operatio"
466 "ns_research.GlobalCheapestInsertionParam"
467 "eters\022p\n0global_cheapest_insertion_ls_op"
468 "erator_parameters\030H \001(\01326.operations_res"
469 "earch.GlobalCheapestInsertionParameters\022"
470 "b\n#local_cheapest_insertion_parameters\030D"
471 " \001(\01325.operations_research.LocalCheapest"
472 "InsertionParameters\022g\n(local_cheapest_co"
473 "st_insertion_parameters\030E \001(\01325.operatio"
474 "ns_research.LocalCheapestInsertionParame"
475 "ters\022)\n!christofides_use_minimum_matchin"
476 "g\030\036 \001(\010\022*\n\"first_solution_optimization_p"
477 "eriod\030; \001(\005\022m\n\026local_search_operators\030\003 "
478 "\001(\0132M.operations_research.RoutingSearchP"
479 "arameters.LocalSearchNeighborhoodOperato"
480 "rs\022#\n\033ls_operator_neighbors_ratio\0305 \001(\001\022"
481 "!\n\031ls_operator_min_neighbors\0306 \001(\005\0224\n,us"
482 "e_multi_armed_bandit_concatenate_operato"
483 "rs\030) \001(\010\022\?\n7multi_armed_bandit_compound_"
484 "operator_memory_coefficient\030* \001(\001\022D\n<mul"
485 "ti_armed_bandit_compound_operator_explor"
486 "ation_coefficient\030+ \001(\001\022\"\n\032max_swap_acti"
487 "ve_chain_size\030B \001(\005\0225\n-relocate_expensiv"
488 "e_chain_num_arcs_to_consider\030\024 \001(\005\022:\n2he"
489 "uristic_expensive_chain_lns_num_arcs_to_"
490 "consider\030 \001(\005\022+\n#heuristic_close_nodes_"
491 "lns_num_nodes\030# \001(\005\022W\n\032local_search_meta"
492 "heuristic\030\004 \001(\01623.operations_research.Lo"
493 "calSearchMetaheuristic.Value\022X\n\033local_se"
494 "arch_metaheuristics\030\? \003(\01623.operations_r"
495 "esearch.LocalSearchMetaheuristic.Value\0228"
496 "\n0num_max_local_optima_before_metaheuris"
497 "tic_switch\030@ \001(\005\022.\n&guided_local_search_"
498 "lambda_coefficient\030\005 \001(\001\022@\n8guided_local"
499 "_search_reset_penalties_on_new_best_solu"
500 "tion\0303 \001(\010\0229\n1guided_local_search_penali"
501 "ze_with_vehicle_classes\030= \001(\010\022C\n;use_gui"
502 "ded_local_search_penalties_in_local_sear"
503 "ch_operators\030> \001(\010\022\036\n\026use_depth_first_se"
504 "arch\030\006 \001(\010\0224\n\006use_cp\030\034 \001(\0162$.operations_"
505 "research.OptionalBoolean\0228\n\nuse_cp_sat\030\033"
506 " \001(\0162$.operations_research.OptionalBoole"
507 "an\022D\n\026use_generalized_cp_sat\030/ \001(\0162$.ope"
508 "rations_research.OptionalBoolean\022>\n\016sat_"
509 "parameters\0300 \001(\0132&.operations_research.s"
510 "at.SatParameters\022,\n$report_intermediate_"
511 "cp_sat_solutions\0308 \001(\010\022)\n!fallback_to_cp"
512 "_sat_size_threshold\0304 \001(\005\022c\n\034continuous_"
513 "scheduling_solver\030! \001(\0162=.operations_res"
514 "earch.RoutingSearchParameters.Scheduling"
515 "Solver\022f\n\037mixed_integer_scheduling_solve"
516 "r\030\" \001(\0162=.operations_research.RoutingSea"
517 "rchParameters.SchedulingSolver\022C\n6disabl"
518 "e_scheduling_beware_this_may_degrade_per"
519 "formance\0302 \001(\010H\000\210\001\001\022\031\n\021optimization_step"
520 "\030\007 \001(\001\022&\n\036number_of_solutions_to_collect"
521 "\030\021 \001(\005\022\026\n\016solution_limit\030\010 \001(\003\022-\n\ntime_l"
522 "imit\030\t \001(\0132\031.google.protobuf.Duration\0221\n"
523 "\016lns_time_limit\030\n \001(\0132\031.google.protobuf."
524 "Duration\022%\n\035secondary_ls_time_limit_rati"
525 "o\0309 \001(\001\022s\n\034improvement_limit_parameters\030"
526 "% \001(\0132M.operations_research.RoutingSearc"
527 "hParameters.ImprovementSearchLimitParame"
528 "ters\022\034\n\024use_full_propagation\030\013 \001(\010\022\022\n\nlo"
529 "g_search\030\r \001(\010\022\037\n\027log_cost_scaling_facto"
530 "r\030\026 \001(\001\022\027\n\017log_cost_offset\030\035 \001(\001\022\017\n\007log_"
531 "tag\030$ \001(\t\022!\n\031use_iterated_local_search\030:"
532 " \001(\010\022\\\n iterated_local_search_parameters"
533 "\030< \001(\01322.operations_research.IteratedLoc"
534 "alSearchParameters\032\223\027\n LocalSearchNeighb"
535 "orhoodOperators\022:\n\014use_relocate\030\001 \001(\0162$."
536 "operations_research.OptionalBoolean\022\?\n\021u"
537 "se_relocate_pair\030\002 \001(\0162$.operations_rese"
538 "arch.OptionalBoolean\022E\n\027use_light_reloca"
539 "te_pair\030\030 \001(\0162$.operations_research.Opti"
540 "onalBoolean\022D\n\026use_relocate_neighbors\030\003 "
541 "\001(\0162$.operations_research.OptionalBoolea"
542 "n\022B\n\024use_relocate_subtrip\030\031 \001(\0162$.operat"
543 "ions_research.OptionalBoolean\022:\n\014use_exc"
544 "hange\030\004 \001(\0162$.operations_research.Option"
545 "alBoolean\022\?\n\021use_exchange_pair\030\026 \001(\0162$.o"
546 "perations_research.OptionalBoolean\022B\n\024us"
547 "e_exchange_subtrip\030\032 \001(\0162$.operations_re"
548 "search.OptionalBoolean\0227\n\tuse_cross\030\005 \001("
549 "\0162$.operations_research.OptionalBoolean\022"
550 "@\n\022use_cross_exchange\030\006 \001(\0162$.operations"
551 "_research.OptionalBoolean\022J\n\034use_relocat"
552 "e_expensive_chain\030\027 \001(\0162$.operations_res"
553 "earch.OptionalBoolean\0229\n\013use_two_opt\030\007 \001"
554 "(\0162$.operations_research.OptionalBoolean"
555 "\0228\n\nuse_or_opt\030\010 \001(\0162$.operations_resear"
556 "ch.OptionalBoolean\022\?\n\021use_lin_kernighan\030"
557 "\t \001(\0162$.operations_research.OptionalBool"
558 "ean\0229\n\013use_tsp_opt\030\n \001(\0162$.operations_re"
559 "search.OptionalBoolean\022=\n\017use_make_activ"
560 "e\030\013 \001(\0162$.operations_research.OptionalBo"
561 "olean\022J\n\034use_relocate_and_make_active\030\025 "
562 "\001(\0162$.operations_research.OptionalBoolea"
563 "n\022J\n\034use_exchange_and_make_active\030% \001(\0162"
564 "$.operations_research.OptionalBoolean\022Z\n"
565 ",use_exchange_path_start_ends_and_make_a"
566 "ctive\030& \001(\0162$.operations_research.Option"
567 "alBoolean\022\?\n\021use_make_inactive\030\014 \001(\0162$.o"
568 "perations_research.OptionalBoolean\022E\n\027us"
569 "e_make_chain_inactive\030\r \001(\0162$.operations"
570 "_research.OptionalBoolean\022=\n\017use_swap_ac"
571 "tive\030\016 \001(\0162$.operations_research.Optiona"
572 "lBoolean\022C\n\025use_swap_active_chain\030# \001(\0162"
573 "$.operations_research.OptionalBoolean\022F\n"
574 "\030use_extended_swap_active\030\017 \001(\0162$.operat"
575 "ions_research.OptionalBoolean\022K\n\035use_sho"
576 "rtest_path_swap_active\030\" \001(\0162$.operation"
577 "s_research.OptionalBoolean\022G\n\031use_shorte"
578 "st_path_two_opt\030$ \001(\0162$.operations_resea"
579 "rch.OptionalBoolean\022G\n\031use_node_pair_swa"
580 "p_active\030\024 \001(\0162$.operations_research.Opt"
581 "ionalBoolean\022:\n\014use_path_lns\030\020 \001(\0162$.ope"
582 "rations_research.OptionalBoolean\022\?\n\021use_"
583 "full_path_lns\030\021 \001(\0162$.operations_researc"
584 "h.OptionalBoolean\0229\n\013use_tsp_lns\030\022 \001(\0162$"
585 ".operations_research.OptionalBoolean\022>\n\020"
586 "use_inactive_lns\030\023 \001(\0162$.operations_rese"
587 "arch.OptionalBoolean\022T\n&use_global_cheap"
588 "est_insertion_path_lns\030\033 \001(\0162$.operation"
589 "s_research.OptionalBoolean\022S\n%use_local_"
590 "cheapest_insertion_path_lns\030\034 \001(\0162$.oper"
591 "ations_research.OptionalBoolean\022l\n>use_r"
592 "elocate_path_global_cheapest_insertion_i"
593 "nsert_unperformed\030! \001(\0162$.operations_res"
594 "earch.OptionalBoolean\022_\n1use_global_chea"
595 "pest_insertion_expensive_chain_lns\030\035 \001(\016"
596 "2$.operations_research.OptionalBoolean\022^"
597 "\n0use_local_cheapest_insertion_expensive"
598 "_chain_lns\030\036 \001(\0162$.operations_research.O"
599 "ptionalBoolean\022[\n-use_global_cheapest_in"
600 "sertion_close_nodes_lns\030\037 \001(\0162$.operatio"
601 "ns_research.OptionalBoolean\022Z\n,use_local"
602 "_cheapest_insertion_close_nodes_lns\030 \001("
603 "\0162$.operations_research.OptionalBoolean\022"
604 "[\n-use_global_cheapest_insertion_visit_t"
605 "ypes_lns\030\' \001(\0162$.operations_research.Opt"
606 "ionalBoolean\022Z\n,use_local_cheapest_inser"
607 "tion_visit_types_lns\030( \001(\0162$.operations_"
608 "research.OptionalBoolean\032u\n ImprovementS"
609 "earchLimitParameters\022$\n\034improvement_rate"
610 "_coefficient\030& \001(\001\022+\n#improvement_rate_s"
611 "olutions_distance\030\' \001(\005\"T\n\020SchedulingSol"
612 "ver\022\024\n\020SCHEDULING_UNSET\020\000\022\023\n\017SCHEDULING_"
613 "GLOP\020\001\022\025\n\021SCHEDULING_CP_SAT\020\002B9\n7_disabl"
614 "e_scheduling_beware_this_may_degrade_per"
615 "formanceJ\004\010\016\020\017J\004\010\017\020\020J\004\010\020\020\021J\004\010\022\020\023J\004\010\023\020\024J\004"
616 "\010\025\020\026J\004\010\027\020\030J\004\010\037\020 J\004\010(\020)J\004\010,\020-J\004\010-\020.J\004\010.\020/"
617 "J\004\0101\0202J\004\0107\0208J\004\010A\020BJ\004\010C\020D\"\250\001\n\026RoutingMode"
618 "lParameters\022J\n\021solver_parameters\030\001 \001(\0132/"
619 ".operations_research.ConstraintSolverPar"
620 "ameters\022!\n\031reduce_vehicle_cost_model\030\002 \001"
621 "(\010\022\037\n\027max_callback_cache_size\030\003 \001(\005BI\n#c"
622 "om.google.ortools.constraintsolverP\001\252\002\037G"
623 "oogle.OrTools.ConstraintSolverb\006proto3"
624};
625static const ::_pbi::DescriptorTable* PROTOBUF_NONNULL const
652namespace operations_research {
657PROTOBUF_CONSTINIT const uint32_t RoutingSearchParameters_SchedulingSolver_internal_data_[] = {
658 196608u, 0u, };
659// ===================================================================
660
661class RoutingSearchParameters_LocalSearchNeighborhoodOperators::_Internal {
662 public:
663 using HasBits =
664 decltype(::std::declval<RoutingSearchParameters_LocalSearchNeighborhoodOperators>()._impl_._has_bits_);
665 static constexpr ::int32_t kHasBitsOffset =
667};
668
670#if defined(PROTOBUF_CUSTOM_VTABLE)
671 : ::google::protobuf::Message(arena, RoutingSearchParameters_LocalSearchNeighborhoodOperators_class_data_.base()) {
672#else // PROTOBUF_CUSTOM_VTABLE
673 : ::google::protobuf::Message(arena) {
674#endif // PROTOBUF_CUSTOM_VTABLE
675 SharedCtor(arena);
676 // @@protoc_insertion_point(arena_constructor:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
677}
679 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RoutingSearchParameters_LocalSearchNeighborhoodOperators& from)
680#if defined(PROTOBUF_CUSTOM_VTABLE)
681 : ::google::protobuf::Message(arena, RoutingSearchParameters_LocalSearchNeighborhoodOperators_class_data_.base()),
682#else // PROTOBUF_CUSTOM_VTABLE
683 : ::google::protobuf::Message(arena),
684#endif // PROTOBUF_CUSTOM_VTABLE
685 _impl_(from._impl_) {
686 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
687 from._internal_metadata_);
688}
689PROTOBUF_NDEBUG_INLINE RoutingSearchParameters_LocalSearchNeighborhoodOperators::Impl_::Impl_(
690 [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
691 [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
692 : _cached_size_{0} {}
693
694inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
695 new (&_impl_) Impl_(internal_visibility(), arena);
696 ::memset(reinterpret_cast<char*>(&_impl_) +
697 offsetof(Impl_, use_relocate_),
698 0,
699 offsetof(Impl_, use_global_cheapest_insertion_visit_types_lns_) -
700 offsetof(Impl_, use_relocate_) +
701 sizeof(Impl_::use_global_cheapest_insertion_visit_types_lns_));
702}
704 // @@protoc_insertion_point(destructor:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
705 SharedDtor(*this);
706}
707inline void RoutingSearchParameters_LocalSearchNeighborhoodOperators::SharedDtor(MessageLite& self) {
709 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
710 this_.CheckHasBitConsistency();
711 }
712 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
713 ABSL_DCHECK(this_.GetArena() == nullptr);
714 this_._impl_.~Impl_();
715}
716
717inline void* PROTOBUF_NONNULL RoutingSearchParameters_LocalSearchNeighborhoodOperators::PlacementNew_(
718 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
719 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
721}
722constexpr auto RoutingSearchParameters_LocalSearchNeighborhoodOperators::InternalNewImpl_() {
723 return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(RoutingSearchParameters_LocalSearchNeighborhoodOperators),
725}
727 return ::google::protobuf::internal::ClassDataFull{
728 ::google::protobuf::internal::ClassData{
730 &_table_.header,
731 nullptr, // OnDemandRegisterArenaDtor
732 nullptr, // IsInitialized
733 &RoutingSearchParameters_LocalSearchNeighborhoodOperators::MergeImpl,
734 ::google::protobuf::Message::GetNewImpl<RoutingSearchParameters_LocalSearchNeighborhoodOperators>(),
735#if defined(PROTOBUF_CUSTOM_VTABLE)
736 &RoutingSearchParameters_LocalSearchNeighborhoodOperators::SharedDtor,
737 ::google::protobuf::Message::GetClearImpl<RoutingSearchParameters_LocalSearchNeighborhoodOperators>(), &RoutingSearchParameters_LocalSearchNeighborhoodOperators::ByteSizeLong,
739#endif // PROTOBUF_CUSTOM_VTABLE
740 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_._cached_size_),
741 false,
742 },
743 &RoutingSearchParameters_LocalSearchNeighborhoodOperators::kDescriptorMethods,
745 nullptr, // tracker
746 };
747}
748
749PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
750 ::google::protobuf::internal::ClassDataFull RoutingSearchParameters_LocalSearchNeighborhoodOperators_class_data_ =
752
753PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
754RoutingSearchParameters_LocalSearchNeighborhoodOperators::GetClassData() const {
755 ::google::protobuf::internal::PrefetchToLocalCache(&RoutingSearchParameters_LocalSearchNeighborhoodOperators_class_data_);
756 ::google::protobuf::internal::PrefetchToLocalCache(RoutingSearchParameters_LocalSearchNeighborhoodOperators_class_data_.tc_table);
758}
759PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
760const ::_pbi::TcParseTable<5, 40, 0, 0, 7>
761RoutingSearchParameters_LocalSearchNeighborhoodOperators::_table_ = {
762 {
763 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_._has_bits_),
764 0, // no _extensions_
765 40, 248, // max_field_number, fast_idx_mask
766 offsetof(decltype(_table_), field_lookup_table),
767 0, // skipmap
768 offsetof(decltype(_table_), field_entries),
769 40, // num_field_entries
770 0, // num_aux_entries
771 offsetof(decltype(_table_), field_names), // no aux_entries
773 nullptr, // post_loop_handler
774 ::_pbi::TcParser::GenericFallback, // fallback
775 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
776 ::_pbi::TcParser::GetTable<::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators>(), // to_prefetch
777 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
778 }, {{
779 {::_pbi::TcParser::MiniParse, {}},
780 // .operations_research.OptionalBoolean use_relocate = 1;
781 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_), 0>(),
782 {8, 0, 0,
783 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_)}},
784 // .operations_research.OptionalBoolean use_relocate_pair = 2;
785 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_pair_), 1>(),
786 {16, 1, 0,
787 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_pair_)}},
788 // .operations_research.OptionalBoolean use_relocate_neighbors = 3;
789 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_neighbors_), 2>(),
790 {24, 2, 0,
791 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_neighbors_)}},
792 // .operations_research.OptionalBoolean use_exchange = 4;
793 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_), 3>(),
794 {32, 3, 0,
795 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_)}},
796 // .operations_research.OptionalBoolean use_cross = 5;
797 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_cross_), 4>(),
798 {40, 4, 0,
799 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_cross_)}},
800 // .operations_research.OptionalBoolean use_cross_exchange = 6;
801 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_cross_exchange_), 5>(),
802 {48, 5, 0,
803 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_cross_exchange_)}},
804 // .operations_research.OptionalBoolean use_two_opt = 7;
805 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_two_opt_), 6>(),
806 {56, 6, 0,
807 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_two_opt_)}},
808 // .operations_research.OptionalBoolean use_or_opt = 8;
809 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_or_opt_), 7>(),
810 {64, 7, 0,
811 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_or_opt_)}},
812 // .operations_research.OptionalBoolean use_lin_kernighan = 9;
813 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_lin_kernighan_), 8>(),
814 {72, 8, 0,
815 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_lin_kernighan_)}},
816 // .operations_research.OptionalBoolean use_tsp_opt = 10;
817 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_tsp_opt_), 9>(),
818 {80, 9, 0,
819 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_tsp_opt_)}},
820 // .operations_research.OptionalBoolean use_make_active = 11;
821 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_active_), 10>(),
822 {88, 10, 0,
823 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_active_)}},
824 // .operations_research.OptionalBoolean use_make_inactive = 12;
825 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_inactive_), 11>(),
826 {96, 11, 0,
827 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_inactive_)}},
828 // .operations_research.OptionalBoolean use_make_chain_inactive = 13;
829 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_chain_inactive_), 12>(),
830 {104, 12, 0,
831 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_chain_inactive_)}},
832 // .operations_research.OptionalBoolean use_swap_active = 14;
833 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_swap_active_), 13>(),
834 {112, 13, 0,
835 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_swap_active_)}},
836 // .operations_research.OptionalBoolean use_extended_swap_active = 15;
837 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_extended_swap_active_), 14>(),
838 {120, 14, 0,
839 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_extended_swap_active_)}},
840 // .operations_research.OptionalBoolean use_path_lns = 16;
841 {::_pbi::TcParser::FastV32S2,
842 {384, 15, 0,
843 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_path_lns_)}},
844 // .operations_research.OptionalBoolean use_full_path_lns = 17;
845 {::_pbi::TcParser::FastV32S2,
846 {392, 16, 0,
847 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_full_path_lns_)}},
848 // .operations_research.OptionalBoolean use_tsp_lns = 18;
849 {::_pbi::TcParser::FastV32S2,
850 {400, 17, 0,
851 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_tsp_lns_)}},
852 // .operations_research.OptionalBoolean use_inactive_lns = 19;
853 {::_pbi::TcParser::FastV32S2,
854 {408, 18, 0,
855 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_inactive_lns_)}},
856 // .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
857 {::_pbi::TcParser::FastV32S2,
858 {416, 19, 0,
859 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_node_pair_swap_active_)}},
860 // .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
861 {::_pbi::TcParser::FastV32S2,
862 {424, 20, 0,
863 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_and_make_active_)}},
864 // .operations_research.OptionalBoolean use_exchange_pair = 22;
865 {::_pbi::TcParser::FastV32S2,
866 {432, 21, 0,
867 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_pair_)}},
868 // .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
869 {::_pbi::TcParser::FastV32S2,
870 {440, 22, 0,
871 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_expensive_chain_)}},
872 // .operations_research.OptionalBoolean use_light_relocate_pair = 24;
873 {::_pbi::TcParser::FastV32S2,
874 {448, 23, 0,
875 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_light_relocate_pair_)}},
876 // .operations_research.OptionalBoolean use_relocate_subtrip = 25;
877 {::_pbi::TcParser::FastV32S2,
878 {456, 24, 0,
879 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_subtrip_)}},
880 // .operations_research.OptionalBoolean use_exchange_subtrip = 26;
881 {::_pbi::TcParser::FastV32S2,
882 {464, 25, 0,
883 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_subtrip_)}},
884 // .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
885 {::_pbi::TcParser::FastV32S2,
886 {472, 26, 0,
887 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_path_lns_)}},
888 // .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
889 {::_pbi::TcParser::FastV32S2,
890 {480, 27, 0,
891 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_local_cheapest_insertion_path_lns_)}},
892 // .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
893 {::_pbi::TcParser::FastV32S2,
894 {488, 28, 0,
895 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_expensive_chain_lns_)}},
896 // .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
897 {::_pbi::TcParser::FastV32S2,
898 {496, 29, 0,
899 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_local_cheapest_insertion_expensive_chain_lns_)}},
900 // .operations_research.OptionalBoolean use_global_cheapest_insertion_close_nodes_lns = 31;
901 {::_pbi::TcParser::FastV32S2,
902 {504, 30, 0,
903 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_close_nodes_lns_)}},
904 }}, {{
905 33, 0, 1,
906 65280, 32,
907 65535, 65535
908 }}, {{
909 // .operations_research.OptionalBoolean use_relocate = 1;
910 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
911 // .operations_research.OptionalBoolean use_relocate_pair = 2;
912 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_pair_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
913 // .operations_research.OptionalBoolean use_relocate_neighbors = 3;
914 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_neighbors_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
915 // .operations_research.OptionalBoolean use_exchange = 4;
916 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
917 // .operations_research.OptionalBoolean use_cross = 5;
918 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_cross_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
919 // .operations_research.OptionalBoolean use_cross_exchange = 6;
920 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_cross_exchange_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
921 // .operations_research.OptionalBoolean use_two_opt = 7;
922 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_two_opt_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
923 // .operations_research.OptionalBoolean use_or_opt = 8;
924 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_or_opt_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
925 // .operations_research.OptionalBoolean use_lin_kernighan = 9;
926 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_lin_kernighan_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
927 // .operations_research.OptionalBoolean use_tsp_opt = 10;
928 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_tsp_opt_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
929 // .operations_research.OptionalBoolean use_make_active = 11;
930 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_active_), _Internal::kHasBitsOffset + 10, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
931 // .operations_research.OptionalBoolean use_make_inactive = 12;
932 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_inactive_), _Internal::kHasBitsOffset + 11, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
933 // .operations_research.OptionalBoolean use_make_chain_inactive = 13;
934 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_make_chain_inactive_), _Internal::kHasBitsOffset + 12, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
935 // .operations_research.OptionalBoolean use_swap_active = 14;
936 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_swap_active_), _Internal::kHasBitsOffset + 13, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
937 // .operations_research.OptionalBoolean use_extended_swap_active = 15;
938 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_extended_swap_active_), _Internal::kHasBitsOffset + 14, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
939 // .operations_research.OptionalBoolean use_path_lns = 16;
940 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_path_lns_), _Internal::kHasBitsOffset + 15, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
941 // .operations_research.OptionalBoolean use_full_path_lns = 17;
942 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_full_path_lns_), _Internal::kHasBitsOffset + 16, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
943 // .operations_research.OptionalBoolean use_tsp_lns = 18;
944 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_tsp_lns_), _Internal::kHasBitsOffset + 17, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
945 // .operations_research.OptionalBoolean use_inactive_lns = 19;
946 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_inactive_lns_), _Internal::kHasBitsOffset + 18, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
947 // .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
948 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_node_pair_swap_active_), _Internal::kHasBitsOffset + 19, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
949 // .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
950 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_and_make_active_), _Internal::kHasBitsOffset + 20, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
951 // .operations_research.OptionalBoolean use_exchange_pair = 22;
952 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_pair_), _Internal::kHasBitsOffset + 21, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
953 // .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
954 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_expensive_chain_), _Internal::kHasBitsOffset + 22, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
955 // .operations_research.OptionalBoolean use_light_relocate_pair = 24;
956 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_light_relocate_pair_), _Internal::kHasBitsOffset + 23, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
957 // .operations_research.OptionalBoolean use_relocate_subtrip = 25;
958 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_subtrip_), _Internal::kHasBitsOffset + 24, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
959 // .operations_research.OptionalBoolean use_exchange_subtrip = 26;
960 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_subtrip_), _Internal::kHasBitsOffset + 25, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
961 // .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
962 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_path_lns_), _Internal::kHasBitsOffset + 26, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
963 // .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
964 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_local_cheapest_insertion_path_lns_), _Internal::kHasBitsOffset + 27, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
965 // .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
966 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_expensive_chain_lns_), _Internal::kHasBitsOffset + 28, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
967 // .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
968 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_local_cheapest_insertion_expensive_chain_lns_), _Internal::kHasBitsOffset + 29, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
969 // .operations_research.OptionalBoolean use_global_cheapest_insertion_close_nodes_lns = 31;
970 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_close_nodes_lns_), _Internal::kHasBitsOffset + 30, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
971 // .operations_research.OptionalBoolean use_local_cheapest_insertion_close_nodes_lns = 32;
972 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_local_cheapest_insertion_close_nodes_lns_), _Internal::kHasBitsOffset + 32, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
973 // .operations_research.OptionalBoolean use_relocate_path_global_cheapest_insertion_insert_unperformed = 33;
974 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_path_global_cheapest_insertion_insert_unperformed_), _Internal::kHasBitsOffset + 33, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
975 // .operations_research.OptionalBoolean use_shortest_path_swap_active = 34;
976 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_shortest_path_swap_active_), _Internal::kHasBitsOffset + 34, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
977 // .operations_research.OptionalBoolean use_swap_active_chain = 35;
978 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_swap_active_chain_), _Internal::kHasBitsOffset + 35, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
979 // .operations_research.OptionalBoolean use_shortest_path_two_opt = 36;
980 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_shortest_path_two_opt_), _Internal::kHasBitsOffset + 36, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
981 // .operations_research.OptionalBoolean use_exchange_and_make_active = 37;
982 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_and_make_active_), _Internal::kHasBitsOffset + 37, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
983 // .operations_research.OptionalBoolean use_exchange_path_start_ends_and_make_active = 38;
984 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_exchange_path_start_ends_and_make_active_), _Internal::kHasBitsOffset + 38, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
985 // .operations_research.OptionalBoolean use_global_cheapest_insertion_visit_types_lns = 39;
986 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_visit_types_lns_), _Internal::kHasBitsOffset + 39, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
987 // .operations_research.OptionalBoolean use_local_cheapest_insertion_visit_types_lns = 40;
988 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_local_cheapest_insertion_visit_types_lns_), _Internal::kHasBitsOffset + 31, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
989 }},
990 // no aux_entries
991 {{
992 }},
993};
995// @@protoc_insertion_point(message_clear_start:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
996 ::google::protobuf::internal::TSanWrite(&_impl_);
997 ::uint32_t cached_has_bits = 0;
998 // Prevent compiler warnings about cached_has_bits being unused
999 (void) cached_has_bits;
1000
1001 cached_has_bits = _impl_._has_bits_[0];
1002 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
1003 ::memset(&_impl_.use_relocate_, 0, static_cast<::size_t>(
1004 reinterpret_cast<char*>(&_impl_.use_or_opt_) -
1005 reinterpret_cast<char*>(&_impl_.use_relocate_)) + sizeof(_impl_.use_or_opt_));
1006 }
1007 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
1008 ::memset(&_impl_.use_lin_kernighan_, 0, static_cast<::size_t>(
1009 reinterpret_cast<char*>(&_impl_.use_path_lns_) -
1010 reinterpret_cast<char*>(&_impl_.use_lin_kernighan_)) + sizeof(_impl_.use_path_lns_));
1011 }
1012 if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
1013 ::memset(&_impl_.use_full_path_lns_, 0, static_cast<::size_t>(
1014 reinterpret_cast<char*>(&_impl_.use_light_relocate_pair_) -
1015 reinterpret_cast<char*>(&_impl_.use_full_path_lns_)) + sizeof(_impl_.use_light_relocate_pair_));
1016 }
1017 if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
1018 ::memset(&_impl_.use_relocate_subtrip_, 0, static_cast<::size_t>(
1019 reinterpret_cast<char*>(&_impl_.use_local_cheapest_insertion_visit_types_lns_) -
1020 reinterpret_cast<char*>(&_impl_.use_relocate_subtrip_)) + sizeof(_impl_.use_local_cheapest_insertion_visit_types_lns_));
1021 }
1022 cached_has_bits = _impl_._has_bits_[1];
1023 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
1024 ::memset(&_impl_.use_local_cheapest_insertion_close_nodes_lns_, 0, static_cast<::size_t>(
1025 reinterpret_cast<char*>(&_impl_.use_global_cheapest_insertion_visit_types_lns_) -
1026 reinterpret_cast<char*>(&_impl_.use_local_cheapest_insertion_close_nodes_lns_)) + sizeof(_impl_.use_global_cheapest_insertion_visit_types_lns_));
1027 }
1028 _impl_._has_bits_.Clear();
1029 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
1030}
1031
1032#if defined(PROTOBUF_CUSTOM_VTABLE)
1034 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
1035 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
1037#else // PROTOBUF_CUSTOM_VTABLE
1039 ::uint8_t* PROTOBUF_NONNULL target,
1040 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
1042#endif // PROTOBUF_CUSTOM_VTABLE
1043 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
1044 this_.CheckHasBitConsistency();
1045 }
1046 // @@protoc_insertion_point(serialize_to_array_start:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
1047 ::uint32_t cached_has_bits = 0;
1048 (void)cached_has_bits;
1049
1050 cached_has_bits = this_._impl_._has_bits_[0];
1051 // .operations_research.OptionalBoolean use_relocate = 1;
1052 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1053 if (this_._internal_use_relocate() != 0) {
1054 target = stream->EnsureSpace(target);
1055 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1056 1, this_._internal_use_relocate(), target);
1057 }
1058 }
1059
1060 // .operations_research.OptionalBoolean use_relocate_pair = 2;
1061 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
1062 if (this_._internal_use_relocate_pair() != 0) {
1063 target = stream->EnsureSpace(target);
1064 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1065 2, this_._internal_use_relocate_pair(), target);
1066 }
1067 }
1068
1069 // .operations_research.OptionalBoolean use_relocate_neighbors = 3;
1070 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
1071 if (this_._internal_use_relocate_neighbors() != 0) {
1072 target = stream->EnsureSpace(target);
1073 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1074 3, this_._internal_use_relocate_neighbors(), target);
1075 }
1076 }
1077
1078 // .operations_research.OptionalBoolean use_exchange = 4;
1079 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
1080 if (this_._internal_use_exchange() != 0) {
1081 target = stream->EnsureSpace(target);
1082 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1083 4, this_._internal_use_exchange(), target);
1084 }
1085 }
1086
1087 // .operations_research.OptionalBoolean use_cross = 5;
1088 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
1089 if (this_._internal_use_cross() != 0) {
1090 target = stream->EnsureSpace(target);
1091 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1092 5, this_._internal_use_cross(), target);
1093 }
1094 }
1095
1096 // .operations_research.OptionalBoolean use_cross_exchange = 6;
1097 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
1098 if (this_._internal_use_cross_exchange() != 0) {
1099 target = stream->EnsureSpace(target);
1100 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1101 6, this_._internal_use_cross_exchange(), target);
1102 }
1103 }
1104
1105 // .operations_research.OptionalBoolean use_two_opt = 7;
1106 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
1107 if (this_._internal_use_two_opt() != 0) {
1108 target = stream->EnsureSpace(target);
1109 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1110 7, this_._internal_use_two_opt(), target);
1111 }
1112 }
1113
1114 // .operations_research.OptionalBoolean use_or_opt = 8;
1115 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
1116 if (this_._internal_use_or_opt() != 0) {
1117 target = stream->EnsureSpace(target);
1118 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1119 8, this_._internal_use_or_opt(), target);
1120 }
1121 }
1122
1123 // .operations_research.OptionalBoolean use_lin_kernighan = 9;
1124 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
1125 if (this_._internal_use_lin_kernighan() != 0) {
1126 target = stream->EnsureSpace(target);
1127 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1128 9, this_._internal_use_lin_kernighan(), target);
1129 }
1130 }
1131
1132 // .operations_research.OptionalBoolean use_tsp_opt = 10;
1133 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
1134 if (this_._internal_use_tsp_opt() != 0) {
1135 target = stream->EnsureSpace(target);
1136 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1137 10, this_._internal_use_tsp_opt(), target);
1138 }
1139 }
1140
1141 // .operations_research.OptionalBoolean use_make_active = 11;
1142 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
1143 if (this_._internal_use_make_active() != 0) {
1144 target = stream->EnsureSpace(target);
1145 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1146 11, this_._internal_use_make_active(), target);
1147 }
1148 }
1149
1150 // .operations_research.OptionalBoolean use_make_inactive = 12;
1151 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
1152 if (this_._internal_use_make_inactive() != 0) {
1153 target = stream->EnsureSpace(target);
1154 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1155 12, this_._internal_use_make_inactive(), target);
1156 }
1157 }
1158
1159 // .operations_research.OptionalBoolean use_make_chain_inactive = 13;
1160 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
1161 if (this_._internal_use_make_chain_inactive() != 0) {
1162 target = stream->EnsureSpace(target);
1163 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1164 13, this_._internal_use_make_chain_inactive(), target);
1165 }
1166 }
1167
1168 // .operations_research.OptionalBoolean use_swap_active = 14;
1169 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
1170 if (this_._internal_use_swap_active() != 0) {
1171 target = stream->EnsureSpace(target);
1172 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1173 14, this_._internal_use_swap_active(), target);
1174 }
1175 }
1176
1177 // .operations_research.OptionalBoolean use_extended_swap_active = 15;
1178 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
1179 if (this_._internal_use_extended_swap_active() != 0) {
1180 target = stream->EnsureSpace(target);
1181 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1182 15, this_._internal_use_extended_swap_active(), target);
1183 }
1184 }
1185
1186 // .operations_research.OptionalBoolean use_path_lns = 16;
1187 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
1188 if (this_._internal_use_path_lns() != 0) {
1189 target = stream->EnsureSpace(target);
1190 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1191 16, this_._internal_use_path_lns(), target);
1192 }
1193 }
1194
1195 // .operations_research.OptionalBoolean use_full_path_lns = 17;
1196 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
1197 if (this_._internal_use_full_path_lns() != 0) {
1198 target = stream->EnsureSpace(target);
1199 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1200 17, this_._internal_use_full_path_lns(), target);
1201 }
1202 }
1203
1204 // .operations_research.OptionalBoolean use_tsp_lns = 18;
1205 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
1206 if (this_._internal_use_tsp_lns() != 0) {
1207 target = stream->EnsureSpace(target);
1208 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1209 18, this_._internal_use_tsp_lns(), target);
1210 }
1211 }
1212
1213 // .operations_research.OptionalBoolean use_inactive_lns = 19;
1214 if (CheckHasBit(cached_has_bits, 0x00040000U)) {
1215 if (this_._internal_use_inactive_lns() != 0) {
1216 target = stream->EnsureSpace(target);
1217 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1218 19, this_._internal_use_inactive_lns(), target);
1219 }
1220 }
1221
1222 // .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
1223 if (CheckHasBit(cached_has_bits, 0x00080000U)) {
1224 if (this_._internal_use_node_pair_swap_active() != 0) {
1225 target = stream->EnsureSpace(target);
1226 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1227 20, this_._internal_use_node_pair_swap_active(), target);
1228 }
1229 }
1230
1231 // .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
1232 if (CheckHasBit(cached_has_bits, 0x00100000U)) {
1233 if (this_._internal_use_relocate_and_make_active() != 0) {
1234 target = stream->EnsureSpace(target);
1235 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1236 21, this_._internal_use_relocate_and_make_active(), target);
1237 }
1238 }
1239
1240 // .operations_research.OptionalBoolean use_exchange_pair = 22;
1241 if (CheckHasBit(cached_has_bits, 0x00200000U)) {
1242 if (this_._internal_use_exchange_pair() != 0) {
1243 target = stream->EnsureSpace(target);
1244 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1245 22, this_._internal_use_exchange_pair(), target);
1246 }
1247 }
1248
1249 // .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
1250 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
1251 if (this_._internal_use_relocate_expensive_chain() != 0) {
1252 target = stream->EnsureSpace(target);
1253 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1254 23, this_._internal_use_relocate_expensive_chain(), target);
1255 }
1256 }
1257
1258 // .operations_research.OptionalBoolean use_light_relocate_pair = 24;
1259 if (CheckHasBit(cached_has_bits, 0x00800000U)) {
1260 if (this_._internal_use_light_relocate_pair() != 0) {
1261 target = stream->EnsureSpace(target);
1262 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1263 24, this_._internal_use_light_relocate_pair(), target);
1264 }
1265 }
1266
1267 // .operations_research.OptionalBoolean use_relocate_subtrip = 25;
1268 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
1269 if (this_._internal_use_relocate_subtrip() != 0) {
1270 target = stream->EnsureSpace(target);
1271 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1272 25, this_._internal_use_relocate_subtrip(), target);
1273 }
1274 }
1275
1276 // .operations_research.OptionalBoolean use_exchange_subtrip = 26;
1277 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
1278 if (this_._internal_use_exchange_subtrip() != 0) {
1279 target = stream->EnsureSpace(target);
1280 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1281 26, this_._internal_use_exchange_subtrip(), target);
1282 }
1283 }
1284
1285 // .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
1286 if (CheckHasBit(cached_has_bits, 0x04000000U)) {
1287 if (this_._internal_use_global_cheapest_insertion_path_lns() != 0) {
1288 target = stream->EnsureSpace(target);
1289 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1290 27, this_._internal_use_global_cheapest_insertion_path_lns(), target);
1291 }
1292 }
1293
1294 // .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
1295 if (CheckHasBit(cached_has_bits, 0x08000000U)) {
1296 if (this_._internal_use_local_cheapest_insertion_path_lns() != 0) {
1297 target = stream->EnsureSpace(target);
1298 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1299 28, this_._internal_use_local_cheapest_insertion_path_lns(), target);
1300 }
1301 }
1302
1303 // .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
1304 if (CheckHasBit(cached_has_bits, 0x10000000U)) {
1305 if (this_._internal_use_global_cheapest_insertion_expensive_chain_lns() != 0) {
1306 target = stream->EnsureSpace(target);
1307 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1308 29, this_._internal_use_global_cheapest_insertion_expensive_chain_lns(), target);
1309 }
1310 }
1311
1312 // .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
1313 if (CheckHasBit(cached_has_bits, 0x20000000U)) {
1314 if (this_._internal_use_local_cheapest_insertion_expensive_chain_lns() != 0) {
1315 target = stream->EnsureSpace(target);
1316 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1317 30, this_._internal_use_local_cheapest_insertion_expensive_chain_lns(), target);
1318 }
1319 }
1320
1321 // .operations_research.OptionalBoolean use_global_cheapest_insertion_close_nodes_lns = 31;
1322 if (CheckHasBit(cached_has_bits, 0x40000000U)) {
1323 if (this_._internal_use_global_cheapest_insertion_close_nodes_lns() != 0) {
1324 target = stream->EnsureSpace(target);
1325 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1326 31, this_._internal_use_global_cheapest_insertion_close_nodes_lns(), target);
1327 }
1328 }
1329
1330 cached_has_bits = this_._impl_._has_bits_[1];
1331 // .operations_research.OptionalBoolean use_local_cheapest_insertion_close_nodes_lns = 32;
1332 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1333 if (this_._internal_use_local_cheapest_insertion_close_nodes_lns() != 0) {
1334 target = stream->EnsureSpace(target);
1335 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1336 32, this_._internal_use_local_cheapest_insertion_close_nodes_lns(), target);
1337 }
1338 }
1339
1340 // .operations_research.OptionalBoolean use_relocate_path_global_cheapest_insertion_insert_unperformed = 33;
1341 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
1342 if (this_._internal_use_relocate_path_global_cheapest_insertion_insert_unperformed() != 0) {
1343 target = stream->EnsureSpace(target);
1344 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1345 33, this_._internal_use_relocate_path_global_cheapest_insertion_insert_unperformed(), target);
1346 }
1347 }
1348
1349 // .operations_research.OptionalBoolean use_shortest_path_swap_active = 34;
1350 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
1351 if (this_._internal_use_shortest_path_swap_active() != 0) {
1352 target = stream->EnsureSpace(target);
1353 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1354 34, this_._internal_use_shortest_path_swap_active(), target);
1355 }
1356 }
1357
1358 // .operations_research.OptionalBoolean use_swap_active_chain = 35;
1359 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
1360 if (this_._internal_use_swap_active_chain() != 0) {
1361 target = stream->EnsureSpace(target);
1362 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1363 35, this_._internal_use_swap_active_chain(), target);
1364 }
1365 }
1366
1367 // .operations_research.OptionalBoolean use_shortest_path_two_opt = 36;
1368 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
1369 if (this_._internal_use_shortest_path_two_opt() != 0) {
1370 target = stream->EnsureSpace(target);
1371 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1372 36, this_._internal_use_shortest_path_two_opt(), target);
1373 }
1374 }
1375
1376 // .operations_research.OptionalBoolean use_exchange_and_make_active = 37;
1377 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
1378 if (this_._internal_use_exchange_and_make_active() != 0) {
1379 target = stream->EnsureSpace(target);
1380 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1381 37, this_._internal_use_exchange_and_make_active(), target);
1382 }
1383 }
1384
1385 // .operations_research.OptionalBoolean use_exchange_path_start_ends_and_make_active = 38;
1386 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
1387 if (this_._internal_use_exchange_path_start_ends_and_make_active() != 0) {
1388 target = stream->EnsureSpace(target);
1389 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1390 38, this_._internal_use_exchange_path_start_ends_and_make_active(), target);
1391 }
1392 }
1393
1394 // .operations_research.OptionalBoolean use_global_cheapest_insertion_visit_types_lns = 39;
1395 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
1396 if (this_._internal_use_global_cheapest_insertion_visit_types_lns() != 0) {
1397 target = stream->EnsureSpace(target);
1398 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1399 39, this_._internal_use_global_cheapest_insertion_visit_types_lns(), target);
1400 }
1401 }
1402
1403 cached_has_bits = this_._impl_._has_bits_[0];
1404 // .operations_research.OptionalBoolean use_local_cheapest_insertion_visit_types_lns = 40;
1405 if (CheckHasBit(cached_has_bits, 0x80000000U)) {
1406 if (this_._internal_use_local_cheapest_insertion_visit_types_lns() != 0) {
1407 target = stream->EnsureSpace(target);
1408 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1409 40, this_._internal_use_local_cheapest_insertion_visit_types_lns(), target);
1410 }
1411 }
1412
1413 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
1414 target =
1415 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
1416 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
1417 }
1418 // @@protoc_insertion_point(serialize_to_array_end:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
1419 return target;
1420}
1421
1422#if defined(PROTOBUF_CUSTOM_VTABLE)
1425#else // PROTOBUF_CUSTOM_VTABLE
1428#endif // PROTOBUF_CUSTOM_VTABLE
1429 // @@protoc_insertion_point(message_byte_size_start:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
1430 ::size_t total_size = 0;
1431
1432 ::uint32_t cached_has_bits = 0;
1433 // Prevent compiler warnings about cached_has_bits being unused
1434 (void)cached_has_bits;
1435
1436 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
1437 cached_has_bits = this_._impl_._has_bits_[0];
1438 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
1439 // .operations_research.OptionalBoolean use_relocate = 1;
1440 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1441 if (this_._internal_use_relocate() != 0) {
1442 total_size += 1 +
1443 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_relocate());
1444 }
1445 }
1446 // .operations_research.OptionalBoolean use_relocate_pair = 2;
1447 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
1448 if (this_._internal_use_relocate_pair() != 0) {
1449 total_size += 1 +
1450 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_relocate_pair());
1451 }
1452 }
1453 // .operations_research.OptionalBoolean use_relocate_neighbors = 3;
1454 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
1455 if (this_._internal_use_relocate_neighbors() != 0) {
1456 total_size += 1 +
1457 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_relocate_neighbors());
1458 }
1459 }
1460 // .operations_research.OptionalBoolean use_exchange = 4;
1461 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
1462 if (this_._internal_use_exchange() != 0) {
1463 total_size += 1 +
1464 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_exchange());
1465 }
1466 }
1467 // .operations_research.OptionalBoolean use_cross = 5;
1468 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
1469 if (this_._internal_use_cross() != 0) {
1470 total_size += 1 +
1471 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_cross());
1472 }
1473 }
1474 // .operations_research.OptionalBoolean use_cross_exchange = 6;
1475 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
1476 if (this_._internal_use_cross_exchange() != 0) {
1477 total_size += 1 +
1478 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_cross_exchange());
1479 }
1480 }
1481 // .operations_research.OptionalBoolean use_two_opt = 7;
1482 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
1483 if (this_._internal_use_two_opt() != 0) {
1484 total_size += 1 +
1485 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_two_opt());
1486 }
1487 }
1488 // .operations_research.OptionalBoolean use_or_opt = 8;
1489 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
1490 if (this_._internal_use_or_opt() != 0) {
1491 total_size += 1 +
1492 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_or_opt());
1493 }
1494 }
1495 }
1496 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
1497 // .operations_research.OptionalBoolean use_lin_kernighan = 9;
1498 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
1499 if (this_._internal_use_lin_kernighan() != 0) {
1500 total_size += 1 +
1501 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_lin_kernighan());
1502 }
1503 }
1504 // .operations_research.OptionalBoolean use_tsp_opt = 10;
1505 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
1506 if (this_._internal_use_tsp_opt() != 0) {
1507 total_size += 1 +
1508 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_tsp_opt());
1509 }
1510 }
1511 // .operations_research.OptionalBoolean use_make_active = 11;
1512 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
1513 if (this_._internal_use_make_active() != 0) {
1514 total_size += 1 +
1515 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_make_active());
1516 }
1517 }
1518 // .operations_research.OptionalBoolean use_make_inactive = 12;
1519 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
1520 if (this_._internal_use_make_inactive() != 0) {
1521 total_size += 1 +
1522 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_make_inactive());
1523 }
1524 }
1525 // .operations_research.OptionalBoolean use_make_chain_inactive = 13;
1526 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
1527 if (this_._internal_use_make_chain_inactive() != 0) {
1528 total_size += 1 +
1529 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_make_chain_inactive());
1530 }
1531 }
1532 // .operations_research.OptionalBoolean use_swap_active = 14;
1533 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
1534 if (this_._internal_use_swap_active() != 0) {
1535 total_size += 1 +
1536 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_swap_active());
1537 }
1538 }
1539 // .operations_research.OptionalBoolean use_extended_swap_active = 15;
1540 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
1541 if (this_._internal_use_extended_swap_active() != 0) {
1542 total_size += 1 +
1543 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_extended_swap_active());
1544 }
1545 }
1546 // .operations_research.OptionalBoolean use_path_lns = 16;
1547 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
1548 if (this_._internal_use_path_lns() != 0) {
1549 total_size += 2 +
1550 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_path_lns());
1551 }
1552 }
1553 }
1554 if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
1555 // .operations_research.OptionalBoolean use_full_path_lns = 17;
1556 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
1557 if (this_._internal_use_full_path_lns() != 0) {
1558 total_size += 2 +
1559 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_full_path_lns());
1560 }
1561 }
1562 // .operations_research.OptionalBoolean use_tsp_lns = 18;
1563 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
1564 if (this_._internal_use_tsp_lns() != 0) {
1565 total_size += 2 +
1566 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_tsp_lns());
1567 }
1568 }
1569 // .operations_research.OptionalBoolean use_inactive_lns = 19;
1570 if (CheckHasBit(cached_has_bits, 0x00040000U)) {
1571 if (this_._internal_use_inactive_lns() != 0) {
1572 total_size += 2 +
1573 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_inactive_lns());
1574 }
1575 }
1576 // .operations_research.OptionalBoolean use_node_pair_swap_active = 20;
1577 if (CheckHasBit(cached_has_bits, 0x00080000U)) {
1578 if (this_._internal_use_node_pair_swap_active() != 0) {
1579 total_size += 2 +
1580 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_node_pair_swap_active());
1581 }
1582 }
1583 // .operations_research.OptionalBoolean use_relocate_and_make_active = 21;
1584 if (CheckHasBit(cached_has_bits, 0x00100000U)) {
1585 if (this_._internal_use_relocate_and_make_active() != 0) {
1586 total_size += 2 +
1587 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_relocate_and_make_active());
1588 }
1589 }
1590 // .operations_research.OptionalBoolean use_exchange_pair = 22;
1591 if (CheckHasBit(cached_has_bits, 0x00200000U)) {
1592 if (this_._internal_use_exchange_pair() != 0) {
1593 total_size += 2 +
1594 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_exchange_pair());
1595 }
1596 }
1597 // .operations_research.OptionalBoolean use_relocate_expensive_chain = 23;
1598 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
1599 if (this_._internal_use_relocate_expensive_chain() != 0) {
1600 total_size += 2 +
1601 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_relocate_expensive_chain());
1602 }
1603 }
1604 // .operations_research.OptionalBoolean use_light_relocate_pair = 24;
1605 if (CheckHasBit(cached_has_bits, 0x00800000U)) {
1606 if (this_._internal_use_light_relocate_pair() != 0) {
1607 total_size += 2 +
1608 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_light_relocate_pair());
1609 }
1610 }
1611 }
1612 if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
1613 // .operations_research.OptionalBoolean use_relocate_subtrip = 25;
1614 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
1615 if (this_._internal_use_relocate_subtrip() != 0) {
1616 total_size += 2 +
1617 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_relocate_subtrip());
1618 }
1619 }
1620 // .operations_research.OptionalBoolean use_exchange_subtrip = 26;
1621 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
1622 if (this_._internal_use_exchange_subtrip() != 0) {
1623 total_size += 2 +
1624 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_exchange_subtrip());
1625 }
1626 }
1627 // .operations_research.OptionalBoolean use_global_cheapest_insertion_path_lns = 27;
1628 if (CheckHasBit(cached_has_bits, 0x04000000U)) {
1629 if (this_._internal_use_global_cheapest_insertion_path_lns() != 0) {
1630 total_size += 2 +
1631 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_global_cheapest_insertion_path_lns());
1632 }
1633 }
1634 // .operations_research.OptionalBoolean use_local_cheapest_insertion_path_lns = 28;
1635 if (CheckHasBit(cached_has_bits, 0x08000000U)) {
1636 if (this_._internal_use_local_cheapest_insertion_path_lns() != 0) {
1637 total_size += 2 +
1638 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_local_cheapest_insertion_path_lns());
1639 }
1640 }
1641 // .operations_research.OptionalBoolean use_global_cheapest_insertion_expensive_chain_lns = 29;
1642 if (CheckHasBit(cached_has_bits, 0x10000000U)) {
1643 if (this_._internal_use_global_cheapest_insertion_expensive_chain_lns() != 0) {
1644 total_size += 2 +
1645 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_global_cheapest_insertion_expensive_chain_lns());
1646 }
1647 }
1648 // .operations_research.OptionalBoolean use_local_cheapest_insertion_expensive_chain_lns = 30;
1649 if (CheckHasBit(cached_has_bits, 0x20000000U)) {
1650 if (this_._internal_use_local_cheapest_insertion_expensive_chain_lns() != 0) {
1651 total_size += 2 +
1652 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_local_cheapest_insertion_expensive_chain_lns());
1653 }
1654 }
1655 // .operations_research.OptionalBoolean use_global_cheapest_insertion_close_nodes_lns = 31;
1656 if (CheckHasBit(cached_has_bits, 0x40000000U)) {
1657 if (this_._internal_use_global_cheapest_insertion_close_nodes_lns() != 0) {
1658 total_size += 2 +
1659 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_global_cheapest_insertion_close_nodes_lns());
1660 }
1661 }
1662 // .operations_research.OptionalBoolean use_local_cheapest_insertion_visit_types_lns = 40;
1663 if (CheckHasBit(cached_has_bits, 0x80000000U)) {
1664 if (this_._internal_use_local_cheapest_insertion_visit_types_lns() != 0) {
1665 total_size += 2 +
1666 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_local_cheapest_insertion_visit_types_lns());
1667 }
1668 }
1669 }
1670 cached_has_bits = this_._impl_._has_bits_[1];
1671 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
1672 // .operations_research.OptionalBoolean use_local_cheapest_insertion_close_nodes_lns = 32;
1673 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1674 if (this_._internal_use_local_cheapest_insertion_close_nodes_lns() != 0) {
1675 total_size += 2 +
1676 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_local_cheapest_insertion_close_nodes_lns());
1677 }
1678 }
1679 // .operations_research.OptionalBoolean use_relocate_path_global_cheapest_insertion_insert_unperformed = 33;
1680 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
1681 if (this_._internal_use_relocate_path_global_cheapest_insertion_insert_unperformed() != 0) {
1682 total_size += 2 +
1683 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_relocate_path_global_cheapest_insertion_insert_unperformed());
1684 }
1685 }
1686 // .operations_research.OptionalBoolean use_shortest_path_swap_active = 34;
1687 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
1688 if (this_._internal_use_shortest_path_swap_active() != 0) {
1689 total_size += 2 +
1690 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_shortest_path_swap_active());
1691 }
1692 }
1693 // .operations_research.OptionalBoolean use_swap_active_chain = 35;
1694 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
1695 if (this_._internal_use_swap_active_chain() != 0) {
1696 total_size += 2 +
1697 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_swap_active_chain());
1698 }
1699 }
1700 // .operations_research.OptionalBoolean use_shortest_path_two_opt = 36;
1701 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
1702 if (this_._internal_use_shortest_path_two_opt() != 0) {
1703 total_size += 2 +
1704 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_shortest_path_two_opt());
1705 }
1706 }
1707 // .operations_research.OptionalBoolean use_exchange_and_make_active = 37;
1708 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
1709 if (this_._internal_use_exchange_and_make_active() != 0) {
1710 total_size += 2 +
1711 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_exchange_and_make_active());
1712 }
1713 }
1714 // .operations_research.OptionalBoolean use_exchange_path_start_ends_and_make_active = 38;
1715 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
1716 if (this_._internal_use_exchange_path_start_ends_and_make_active() != 0) {
1717 total_size += 2 +
1718 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_exchange_path_start_ends_and_make_active());
1719 }
1720 }
1721 // .operations_research.OptionalBoolean use_global_cheapest_insertion_visit_types_lns = 39;
1722 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
1723 if (this_._internal_use_global_cheapest_insertion_visit_types_lns() != 0) {
1724 total_size += 2 +
1725 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_global_cheapest_insertion_visit_types_lns());
1726 }
1727 }
1728 }
1729 return this_.MaybeComputeUnknownFieldsSize(total_size,
1730 &this_._impl_._cached_size_);
1731}
1732
1733void RoutingSearchParameters_LocalSearchNeighborhoodOperators::MergeImpl(::google::protobuf::MessageLite& to_msg,
1734 const ::google::protobuf::MessageLite& from_msg) {
1735 auto* const _this =
1737 auto& from = static_cast<const RoutingSearchParameters_LocalSearchNeighborhoodOperators&>(from_msg);
1738 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
1739 from.CheckHasBitConsistency();
1740 }
1741 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
1742 ABSL_DCHECK_NE(&from, _this);
1743 ::uint32_t cached_has_bits = 0;
1744 (void)cached_has_bits;
1745
1746 cached_has_bits = from._impl_._has_bits_[0];
1747 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
1748 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1749 if (from._internal_use_relocate() != 0) {
1750 _this->_impl_.use_relocate_ = from._impl_.use_relocate_;
1751 }
1752 }
1753 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
1754 if (from._internal_use_relocate_pair() != 0) {
1755 _this->_impl_.use_relocate_pair_ = from._impl_.use_relocate_pair_;
1756 }
1757 }
1758 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
1759 if (from._internal_use_relocate_neighbors() != 0) {
1760 _this->_impl_.use_relocate_neighbors_ = from._impl_.use_relocate_neighbors_;
1761 }
1762 }
1763 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
1764 if (from._internal_use_exchange() != 0) {
1765 _this->_impl_.use_exchange_ = from._impl_.use_exchange_;
1766 }
1767 }
1768 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
1769 if (from._internal_use_cross() != 0) {
1770 _this->_impl_.use_cross_ = from._impl_.use_cross_;
1771 }
1772 }
1773 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
1774 if (from._internal_use_cross_exchange() != 0) {
1775 _this->_impl_.use_cross_exchange_ = from._impl_.use_cross_exchange_;
1776 }
1777 }
1778 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
1779 if (from._internal_use_two_opt() != 0) {
1780 _this->_impl_.use_two_opt_ = from._impl_.use_two_opt_;
1781 }
1782 }
1783 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
1784 if (from._internal_use_or_opt() != 0) {
1785 _this->_impl_.use_or_opt_ = from._impl_.use_or_opt_;
1786 }
1787 }
1788 }
1789 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
1790 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
1791 if (from._internal_use_lin_kernighan() != 0) {
1792 _this->_impl_.use_lin_kernighan_ = from._impl_.use_lin_kernighan_;
1793 }
1794 }
1795 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
1796 if (from._internal_use_tsp_opt() != 0) {
1797 _this->_impl_.use_tsp_opt_ = from._impl_.use_tsp_opt_;
1798 }
1799 }
1800 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
1801 if (from._internal_use_make_active() != 0) {
1802 _this->_impl_.use_make_active_ = from._impl_.use_make_active_;
1803 }
1804 }
1805 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
1806 if (from._internal_use_make_inactive() != 0) {
1807 _this->_impl_.use_make_inactive_ = from._impl_.use_make_inactive_;
1808 }
1809 }
1810 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
1811 if (from._internal_use_make_chain_inactive() != 0) {
1812 _this->_impl_.use_make_chain_inactive_ = from._impl_.use_make_chain_inactive_;
1813 }
1814 }
1815 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
1816 if (from._internal_use_swap_active() != 0) {
1817 _this->_impl_.use_swap_active_ = from._impl_.use_swap_active_;
1818 }
1819 }
1820 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
1821 if (from._internal_use_extended_swap_active() != 0) {
1822 _this->_impl_.use_extended_swap_active_ = from._impl_.use_extended_swap_active_;
1823 }
1824 }
1825 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
1826 if (from._internal_use_path_lns() != 0) {
1827 _this->_impl_.use_path_lns_ = from._impl_.use_path_lns_;
1828 }
1829 }
1830 }
1831 if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
1832 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
1833 if (from._internal_use_full_path_lns() != 0) {
1834 _this->_impl_.use_full_path_lns_ = from._impl_.use_full_path_lns_;
1835 }
1836 }
1837 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
1838 if (from._internal_use_tsp_lns() != 0) {
1839 _this->_impl_.use_tsp_lns_ = from._impl_.use_tsp_lns_;
1840 }
1841 }
1842 if (CheckHasBit(cached_has_bits, 0x00040000U)) {
1843 if (from._internal_use_inactive_lns() != 0) {
1844 _this->_impl_.use_inactive_lns_ = from._impl_.use_inactive_lns_;
1845 }
1846 }
1847 if (CheckHasBit(cached_has_bits, 0x00080000U)) {
1848 if (from._internal_use_node_pair_swap_active() != 0) {
1849 _this->_impl_.use_node_pair_swap_active_ = from._impl_.use_node_pair_swap_active_;
1850 }
1851 }
1852 if (CheckHasBit(cached_has_bits, 0x00100000U)) {
1853 if (from._internal_use_relocate_and_make_active() != 0) {
1854 _this->_impl_.use_relocate_and_make_active_ = from._impl_.use_relocate_and_make_active_;
1855 }
1856 }
1857 if (CheckHasBit(cached_has_bits, 0x00200000U)) {
1858 if (from._internal_use_exchange_pair() != 0) {
1859 _this->_impl_.use_exchange_pair_ = from._impl_.use_exchange_pair_;
1860 }
1861 }
1862 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
1863 if (from._internal_use_relocate_expensive_chain() != 0) {
1864 _this->_impl_.use_relocate_expensive_chain_ = from._impl_.use_relocate_expensive_chain_;
1865 }
1866 }
1867 if (CheckHasBit(cached_has_bits, 0x00800000U)) {
1868 if (from._internal_use_light_relocate_pair() != 0) {
1869 _this->_impl_.use_light_relocate_pair_ = from._impl_.use_light_relocate_pair_;
1870 }
1871 }
1872 }
1873 if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
1874 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
1875 if (from._internal_use_relocate_subtrip() != 0) {
1876 _this->_impl_.use_relocate_subtrip_ = from._impl_.use_relocate_subtrip_;
1877 }
1878 }
1879 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
1880 if (from._internal_use_exchange_subtrip() != 0) {
1881 _this->_impl_.use_exchange_subtrip_ = from._impl_.use_exchange_subtrip_;
1882 }
1883 }
1884 if (CheckHasBit(cached_has_bits, 0x04000000U)) {
1885 if (from._internal_use_global_cheapest_insertion_path_lns() != 0) {
1886 _this->_impl_.use_global_cheapest_insertion_path_lns_ = from._impl_.use_global_cheapest_insertion_path_lns_;
1887 }
1888 }
1889 if (CheckHasBit(cached_has_bits, 0x08000000U)) {
1890 if (from._internal_use_local_cheapest_insertion_path_lns() != 0) {
1891 _this->_impl_.use_local_cheapest_insertion_path_lns_ = from._impl_.use_local_cheapest_insertion_path_lns_;
1892 }
1893 }
1894 if (CheckHasBit(cached_has_bits, 0x10000000U)) {
1895 if (from._internal_use_global_cheapest_insertion_expensive_chain_lns() != 0) {
1896 _this->_impl_.use_global_cheapest_insertion_expensive_chain_lns_ = from._impl_.use_global_cheapest_insertion_expensive_chain_lns_;
1897 }
1898 }
1899 if (CheckHasBit(cached_has_bits, 0x20000000U)) {
1900 if (from._internal_use_local_cheapest_insertion_expensive_chain_lns() != 0) {
1901 _this->_impl_.use_local_cheapest_insertion_expensive_chain_lns_ = from._impl_.use_local_cheapest_insertion_expensive_chain_lns_;
1902 }
1903 }
1904 if (CheckHasBit(cached_has_bits, 0x40000000U)) {
1905 if (from._internal_use_global_cheapest_insertion_close_nodes_lns() != 0) {
1906 _this->_impl_.use_global_cheapest_insertion_close_nodes_lns_ = from._impl_.use_global_cheapest_insertion_close_nodes_lns_;
1907 }
1908 }
1909 if (CheckHasBit(cached_has_bits, 0x80000000U)) {
1910 if (from._internal_use_local_cheapest_insertion_visit_types_lns() != 0) {
1911 _this->_impl_.use_local_cheapest_insertion_visit_types_lns_ = from._impl_.use_local_cheapest_insertion_visit_types_lns_;
1912 }
1913 }
1914 }
1915 cached_has_bits = from._impl_._has_bits_[1];
1916 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
1917 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1918 if (from._internal_use_local_cheapest_insertion_close_nodes_lns() != 0) {
1919 _this->_impl_.use_local_cheapest_insertion_close_nodes_lns_ = from._impl_.use_local_cheapest_insertion_close_nodes_lns_;
1920 }
1921 }
1922 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
1923 if (from._internal_use_relocate_path_global_cheapest_insertion_insert_unperformed() != 0) {
1924 _this->_impl_.use_relocate_path_global_cheapest_insertion_insert_unperformed_ = from._impl_.use_relocate_path_global_cheapest_insertion_insert_unperformed_;
1925 }
1926 }
1927 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
1928 if (from._internal_use_shortest_path_swap_active() != 0) {
1929 _this->_impl_.use_shortest_path_swap_active_ = from._impl_.use_shortest_path_swap_active_;
1930 }
1931 }
1932 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
1933 if (from._internal_use_swap_active_chain() != 0) {
1934 _this->_impl_.use_swap_active_chain_ = from._impl_.use_swap_active_chain_;
1935 }
1936 }
1937 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
1938 if (from._internal_use_shortest_path_two_opt() != 0) {
1939 _this->_impl_.use_shortest_path_two_opt_ = from._impl_.use_shortest_path_two_opt_;
1940 }
1941 }
1942 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
1943 if (from._internal_use_exchange_and_make_active() != 0) {
1944 _this->_impl_.use_exchange_and_make_active_ = from._impl_.use_exchange_and_make_active_;
1945 }
1946 }
1947 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
1948 if (from._internal_use_exchange_path_start_ends_and_make_active() != 0) {
1949 _this->_impl_.use_exchange_path_start_ends_and_make_active_ = from._impl_.use_exchange_path_start_ends_and_make_active_;
1950 }
1951 }
1952 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
1953 if (from._internal_use_global_cheapest_insertion_visit_types_lns() != 0) {
1954 _this->_impl_.use_global_cheapest_insertion_visit_types_lns_ = from._impl_.use_global_cheapest_insertion_visit_types_lns_;
1955 }
1956 }
1957 }
1958 _this->_impl_._has_bits_.Or(from._impl_._has_bits_);
1959 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
1960 from._internal_metadata_);
1961}
1962
1964 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators)
1965 if (&from == this) return;
1966 Clear();
1967 MergeFrom(from);
1968}
1969
1970
1971void RoutingSearchParameters_LocalSearchNeighborhoodOperators::InternalSwap(RoutingSearchParameters_LocalSearchNeighborhoodOperators* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
1972 using ::std::swap;
1973 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
1974 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
1975 swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]);
1976 ::google::protobuf::internal::memswap<
1977 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_global_cheapest_insertion_visit_types_lns_)
1978 + sizeof(RoutingSearchParameters_LocalSearchNeighborhoodOperators::_impl_.use_global_cheapest_insertion_visit_types_lns_)
1979 - PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_LocalSearchNeighborhoodOperators, _impl_.use_relocate_)>(
1980 reinterpret_cast<char*>(&_impl_.use_relocate_),
1981 reinterpret_cast<char*>(&other->_impl_.use_relocate_));
1982}
1983
1985 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
1986}
1987// ===================================================================
1988
1990 public:
1991 using HasBits =
1992 decltype(::std::declval<RoutingSearchParameters_ImprovementSearchLimitParameters>()._impl_._has_bits_);
1993 static constexpr ::int32_t kHasBitsOffset =
1994 8 * PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_._has_bits_);
1996
1998#if defined(PROTOBUF_CUSTOM_VTABLE)
1999 : ::google::protobuf::Message(arena, RoutingSearchParameters_ImprovementSearchLimitParameters_class_data_.base()) {
2000#else // PROTOBUF_CUSTOM_VTABLE
2001 : ::google::protobuf::Message(arena) {
2002#endif // PROTOBUF_CUSTOM_VTABLE
2003 SharedCtor(arena);
2004 // @@protoc_insertion_point(arena_constructor:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
2005}
2007 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const RoutingSearchParameters_ImprovementSearchLimitParameters& from)
2008#if defined(PROTOBUF_CUSTOM_VTABLE)
2009 : ::google::protobuf::Message(arena, RoutingSearchParameters_ImprovementSearchLimitParameters_class_data_.base()),
2010#else // PROTOBUF_CUSTOM_VTABLE
2011 : ::google::protobuf::Message(arena),
2012#endif // PROTOBUF_CUSTOM_VTABLE
2013 _impl_(from._impl_) {
2014 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
2015 from._internal_metadata_);
2016}
2017PROTOBUF_NDEBUG_INLINE RoutingSearchParameters_ImprovementSearchLimitParameters::Impl_::Impl_(
2018 [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
2019 [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
2020 : _cached_size_{0} {}
2021
2022inline void RoutingSearchParameters_ImprovementSearchLimitParameters::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
2023 new (&_impl_) Impl_(internal_visibility(), arena);
2024 ::memset(reinterpret_cast<char*>(&_impl_) +
2025 offsetof(Impl_, improvement_rate_coefficient_),
2026 0,
2027 offsetof(Impl_, improvement_rate_solutions_distance_) -
2028 offsetof(Impl_, improvement_rate_coefficient_) +
2029 sizeof(Impl_::improvement_rate_solutions_distance_));
2030}
2032 // @@protoc_insertion_point(destructor:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
2033 SharedDtor(*this);
2034}
2035inline void RoutingSearchParameters_ImprovementSearchLimitParameters::SharedDtor(MessageLite& self) {
2037 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
2038 this_.CheckHasBitConsistency();
2039 }
2040 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
2041 ABSL_DCHECK(this_.GetArena() == nullptr);
2042 this_._impl_.~Impl_();
2043}
2044
2045inline void* PROTOBUF_NONNULL RoutingSearchParameters_ImprovementSearchLimitParameters::PlacementNew_(
2046 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
2047 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
2049}
2050constexpr auto RoutingSearchParameters_ImprovementSearchLimitParameters::InternalNewImpl_() {
2051 return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(RoutingSearchParameters_ImprovementSearchLimitParameters),
2053}
2055 return ::google::protobuf::internal::ClassDataFull{
2056 ::google::protobuf::internal::ClassData{
2058 &_table_.header,
2059 nullptr, // OnDemandRegisterArenaDtor
2060 nullptr, // IsInitialized
2061 &RoutingSearchParameters_ImprovementSearchLimitParameters::MergeImpl,
2062 ::google::protobuf::Message::GetNewImpl<RoutingSearchParameters_ImprovementSearchLimitParameters>(),
2063#if defined(PROTOBUF_CUSTOM_VTABLE)
2064 &RoutingSearchParameters_ImprovementSearchLimitParameters::SharedDtor,
2065 ::google::protobuf::Message::GetClearImpl<RoutingSearchParameters_ImprovementSearchLimitParameters>(), &RoutingSearchParameters_ImprovementSearchLimitParameters::ByteSizeLong,
2067#endif // PROTOBUF_CUSTOM_VTABLE
2068 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_._cached_size_),
2069 false,
2070 },
2071 &RoutingSearchParameters_ImprovementSearchLimitParameters::kDescriptorMethods,
2073 nullptr, // tracker
2074 };
2075}
2076
2077PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
2078 ::google::protobuf::internal::ClassDataFull RoutingSearchParameters_ImprovementSearchLimitParameters_class_data_ =
2081PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
2082RoutingSearchParameters_ImprovementSearchLimitParameters::GetClassData() const {
2083 ::google::protobuf::internal::PrefetchToLocalCache(&RoutingSearchParameters_ImprovementSearchLimitParameters_class_data_);
2084 ::google::protobuf::internal::PrefetchToLocalCache(RoutingSearchParameters_ImprovementSearchLimitParameters_class_data_.tc_table);
2086}
2087PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
2088const ::_pbi::TcParseTable<1, 2, 0, 0, 7>
2089RoutingSearchParameters_ImprovementSearchLimitParameters::_table_ = {
2090 {
2091 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_._has_bits_),
2092 0, // no _extensions_
2093 39, 8, // max_field_number, fast_idx_mask
2094 offsetof(decltype(_table_), field_lookup_table),
2095 4294967295, // skipmap
2096 offsetof(decltype(_table_), field_entries),
2097 2, // num_field_entries
2098 0, // num_aux_entries
2099 offsetof(decltype(_table_), field_names), // no aux_entries
2101 nullptr, // post_loop_handler
2102 ::_pbi::TcParser::GenericFallback, // fallback
2103 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
2104 ::_pbi::TcParser::GetTable<::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters>(), // to_prefetch
2105 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
2106 }, {{
2107 // double improvement_rate_coefficient = 38;
2108 {::_pbi::TcParser::FastF64S2,
2109 {689, 0, 0,
2110 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_.improvement_rate_coefficient_)}},
2111 // int32 improvement_rate_solutions_distance = 39;
2112 {::_pbi::TcParser::FastV32S2,
2113 {696, 1, 0,
2114 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_.improvement_rate_solutions_distance_)}},
2115 }}, {{
2116 38, 0, 1,
2117 65532, 0,
2118 65535, 65535
2119 }}, {{
2120 // double improvement_rate_coefficient = 38;
2121 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_.improvement_rate_coefficient_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2122 // int32 improvement_rate_solutions_distance = 39;
2123 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_.improvement_rate_solutions_distance_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2124 }},
2125 // no aux_entries
2126 {{
2127 }},
2128};
2130// @@protoc_insertion_point(message_clear_start:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
2131 ::google::protobuf::internal::TSanWrite(&_impl_);
2132 ::uint32_t cached_has_bits = 0;
2133 // Prevent compiler warnings about cached_has_bits being unused
2134 (void) cached_has_bits;
2135
2136 cached_has_bits = _impl_._has_bits_[0];
2137 if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
2138 ::memset(&_impl_.improvement_rate_coefficient_, 0, static_cast<::size_t>(
2139 reinterpret_cast<char*>(&_impl_.improvement_rate_solutions_distance_) -
2140 reinterpret_cast<char*>(&_impl_.improvement_rate_coefficient_)) + sizeof(_impl_.improvement_rate_solutions_distance_));
2141 }
2142 _impl_._has_bits_.Clear();
2143 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
2144}
2145
2146#if defined(PROTOBUF_CUSTOM_VTABLE)
2148 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
2149 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
2151#else // PROTOBUF_CUSTOM_VTABLE
2153 ::uint8_t* PROTOBUF_NONNULL target,
2154 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
2156#endif // PROTOBUF_CUSTOM_VTABLE
2157 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
2158 this_.CheckHasBitConsistency();
2159 }
2160 // @@protoc_insertion_point(serialize_to_array_start:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
2161 ::uint32_t cached_has_bits = 0;
2162 (void)cached_has_bits;
2163
2164 cached_has_bits = this_._impl_._has_bits_[0];
2165 // double improvement_rate_coefficient = 38;
2166 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
2167 if (::absl::bit_cast<::uint64_t>(this_._internal_improvement_rate_coefficient()) != 0) {
2168 target = stream->EnsureSpace(target);
2169 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
2170 38, this_._internal_improvement_rate_coefficient(), target);
2171 }
2172 }
2173
2174 // int32 improvement_rate_solutions_distance = 39;
2175 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
2176 if (this_._internal_improvement_rate_solutions_distance() != 0) {
2177 target = stream->EnsureSpace(target);
2178 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
2179 39, this_._internal_improvement_rate_solutions_distance(), target);
2180 }
2181 }
2182
2183 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
2184 target =
2185 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
2186 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
2187 }
2188 // @@protoc_insertion_point(serialize_to_array_end:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
2189 return target;
2190}
2191
2192#if defined(PROTOBUF_CUSTOM_VTABLE)
2195#else // PROTOBUF_CUSTOM_VTABLE
2198#endif // PROTOBUF_CUSTOM_VTABLE
2199 // @@protoc_insertion_point(message_byte_size_start:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
2200 ::size_t total_size = 0;
2201
2202 ::uint32_t cached_has_bits = 0;
2203 // Prevent compiler warnings about cached_has_bits being unused
2204 (void)cached_has_bits;
2205
2206 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
2207 cached_has_bits = this_._impl_._has_bits_[0];
2208 if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
2209 // double improvement_rate_coefficient = 38;
2210 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
2211 if (::absl::bit_cast<::uint64_t>(this_._internal_improvement_rate_coefficient()) != 0) {
2212 total_size += 10;
2213 }
2214 }
2215 // int32 improvement_rate_solutions_distance = 39;
2216 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
2217 if (this_._internal_improvement_rate_solutions_distance() != 0) {
2218 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
2219 this_._internal_improvement_rate_solutions_distance());
2220 }
2221 }
2222 }
2223 return this_.MaybeComputeUnknownFieldsSize(total_size,
2224 &this_._impl_._cached_size_);
2225}
2226
2227void RoutingSearchParameters_ImprovementSearchLimitParameters::MergeImpl(::google::protobuf::MessageLite& to_msg,
2228 const ::google::protobuf::MessageLite& from_msg) {
2229 auto* const _this =
2231 auto& from = static_cast<const RoutingSearchParameters_ImprovementSearchLimitParameters&>(from_msg);
2232 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
2233 from.CheckHasBitConsistency();
2234 }
2235 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
2236 ABSL_DCHECK_NE(&from, _this);
2237 ::uint32_t cached_has_bits = 0;
2238 (void)cached_has_bits;
2239
2240 cached_has_bits = from._impl_._has_bits_[0];
2241 if (BatchCheckHasBit(cached_has_bits, 0x00000003U)) {
2242 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
2243 if (::absl::bit_cast<::uint64_t>(from._internal_improvement_rate_coefficient()) != 0) {
2244 _this->_impl_.improvement_rate_coefficient_ = from._impl_.improvement_rate_coefficient_;
2245 }
2246 }
2247 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
2248 if (from._internal_improvement_rate_solutions_distance() != 0) {
2249 _this->_impl_.improvement_rate_solutions_distance_ = from._impl_.improvement_rate_solutions_distance_;
2250 }
2251 }
2252 }
2253 _this->_impl_._has_bits_[0] |= cached_has_bits;
2254 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
2255 from._internal_metadata_);
2256}
2257
2259 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters)
2260 if (&from == this) return;
2261 Clear();
2262 MergeFrom(from);
2263}
2264
2265
2266void RoutingSearchParameters_ImprovementSearchLimitParameters::InternalSwap(RoutingSearchParameters_ImprovementSearchLimitParameters* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
2267 using ::std::swap;
2268 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
2269 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
2270 ::google::protobuf::internal::memswap<
2271 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_.improvement_rate_solutions_distance_)
2272 + sizeof(RoutingSearchParameters_ImprovementSearchLimitParameters::_impl_.improvement_rate_solutions_distance_)
2273 - PROTOBUF_FIELD_OFFSET(RoutingSearchParameters_ImprovementSearchLimitParameters, _impl_.improvement_rate_coefficient_)>(
2274 reinterpret_cast<char*>(&_impl_.improvement_rate_coefficient_),
2275 reinterpret_cast<char*>(&other->_impl_.improvement_rate_coefficient_));
2276}
2277
2279 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
2281// ===================================================================
2282
2284 public:
2285 using HasBits =
2286 decltype(::std::declval<RoutingSearchParameters>()._impl_._has_bits_);
2287 static constexpr ::int32_t kHasBitsOffset =
2288 8 * PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_._has_bits_);
2289};
2292 ::google::protobuf::internal::TSanWrite(&_impl_);
2293 if (_impl_.savings_parameters_ != nullptr) _impl_.savings_parameters_->Clear();
2294 ClearHasBit(_impl_._has_bits_[1],
2295 0x00000004U);
2296}
2298 ::google::protobuf::internal::TSanWrite(&_impl_);
2299 if (_impl_.global_cheapest_insertion_first_solution_parameters_ != nullptr) _impl_.global_cheapest_insertion_first_solution_parameters_->Clear();
2300 ClearHasBit(_impl_._has_bits_[0],
2301 0x00000010U);
2302}
2304 ::google::protobuf::internal::TSanWrite(&_impl_);
2305 if (_impl_.global_cheapest_insertion_ls_operator_parameters_ != nullptr) _impl_.global_cheapest_insertion_ls_operator_parameters_->Clear();
2306 ClearHasBit(_impl_._has_bits_[1],
2307 0x00000008U);
2308}
2310 ::google::protobuf::internal::TSanWrite(&_impl_);
2311 if (_impl_.local_cheapest_insertion_parameters_ != nullptr) _impl_.local_cheapest_insertion_parameters_->Clear();
2312 ClearHasBit(_impl_._has_bits_[1],
2313 0x00000001U);
2314}
2316 ::google::protobuf::internal::TSanWrite(&_impl_);
2317 if (_impl_.local_cheapest_cost_insertion_parameters_ != nullptr) _impl_.local_cheapest_cost_insertion_parameters_->Clear();
2318 ClearHasBit(_impl_._has_bits_[1],
2319 0x00000002U);
2320}
2322 ::google::protobuf::internal::TSanWrite(&_impl_);
2323 if (_impl_.sat_parameters_ != nullptr) _impl_.sat_parameters_->Clear();
2324 ClearHasBit(_impl_._has_bits_[0],
2325 0x40000000U);
2326}
2328 ::google::protobuf::internal::TSanWrite(&_impl_);
2329 if (_impl_.time_limit_ != nullptr) _impl_.time_limit_->Clear();
2330 ClearHasBit(_impl_._has_bits_[0],
2331 0x00000002U);
2332}
2334 ::google::protobuf::internal::TSanWrite(&_impl_);
2335 if (_impl_.lns_time_limit_ != nullptr) _impl_.lns_time_limit_->Clear();
2336 ClearHasBit(_impl_._has_bits_[0],
2337 0x00000004U);
2338}
2340 ::google::protobuf::internal::TSanWrite(&_impl_);
2341 if (_impl_.iterated_local_search_parameters_ != nullptr) _impl_.iterated_local_search_parameters_->Clear();
2342 ClearHasBit(_impl_._has_bits_[0],
2343 0x80000000U);
2344}
2345RoutingSearchParameters::RoutingSearchParameters(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
2346#if defined(PROTOBUF_CUSTOM_VTABLE)
2347 : ::google::protobuf::Message(arena, RoutingSearchParameters_class_data_.base()) {
2348#else // PROTOBUF_CUSTOM_VTABLE
2349 : ::google::protobuf::Message(arena) {
2350#endif // PROTOBUF_CUSTOM_VTABLE
2351 SharedCtor(arena);
2352 // @@protoc_insertion_point(arena_constructor:operations_research.RoutingSearchParameters)
2353}
2354PROTOBUF_NDEBUG_INLINE RoutingSearchParameters::Impl_::Impl_(
2355 [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
2356 [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
2357 [[maybe_unused]] const ::operations_research::RoutingSearchParameters& from_msg)
2358 : _has_bits_{from._has_bits_},
2359 _cached_size_{0},
2360 local_search_metaheuristics_{visibility, arena, from.local_search_metaheuristics_},
2361 _local_search_metaheuristics_cached_byte_size_{0},
2362 log_tag_(arena, from.log_tag_) {}
2363
2365 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
2366 const RoutingSearchParameters& from)
2367#if defined(PROTOBUF_CUSTOM_VTABLE)
2368 : ::google::protobuf::Message(arena, RoutingSearchParameters_class_data_.base()) {
2369#else // PROTOBUF_CUSTOM_VTABLE
2370 : ::google::protobuf::Message(arena) {
2371#endif // PROTOBUF_CUSTOM_VTABLE
2372 RoutingSearchParameters* const _this = this;
2373 (void)_this;
2374 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
2375 from._internal_metadata_);
2376 new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
2377 ::uint32_t cached_has_bits = _impl_._has_bits_[0];
2378 _impl_.local_search_operators_ = (CheckHasBit(cached_has_bits, 0x00000001U))
2379 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.local_search_operators_)
2380 : nullptr;
2381 _impl_.time_limit_ = (CheckHasBit(cached_has_bits, 0x00000002U))
2382 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.time_limit_)
2383 : nullptr;
2384 _impl_.lns_time_limit_ = (CheckHasBit(cached_has_bits, 0x00000004U))
2385 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.lns_time_limit_)
2386 : nullptr;
2387 _impl_.improvement_limit_parameters_ = (CheckHasBit(cached_has_bits, 0x00000008U))
2388 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.improvement_limit_parameters_)
2389 : nullptr;
2390 _impl_.global_cheapest_insertion_first_solution_parameters_ = (CheckHasBit(cached_has_bits, 0x00000010U))
2391 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.global_cheapest_insertion_first_solution_parameters_)
2392 : nullptr;
2393 ::memcpy(reinterpret_cast<char*>(&_impl_) +
2394 offsetof(Impl_, first_solution_strategy_),
2395 reinterpret_cast<const char*>(&from._impl_) +
2396 offsetof(Impl_, first_solution_strategy_),
2397 offsetof(Impl_, use_generalized_cp_sat_) -
2398 offsetof(Impl_, first_solution_strategy_) +
2399 sizeof(Impl_::use_generalized_cp_sat_));
2400 _impl_.sat_parameters_ = (CheckHasBit(cached_has_bits, 0x40000000U))
2401 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.sat_parameters_)
2402 : nullptr;
2403 _impl_.iterated_local_search_parameters_ = (CheckHasBit(cached_has_bits, 0x80000000U))
2404 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.iterated_local_search_parameters_)
2405 : nullptr;
2406 cached_has_bits = _impl_._has_bits_[1];
2407 _impl_.local_cheapest_insertion_parameters_ = (CheckHasBit(cached_has_bits, 0x00000001U))
2408 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.local_cheapest_insertion_parameters_)
2409 : nullptr;
2410 _impl_.local_cheapest_cost_insertion_parameters_ = (CheckHasBit(cached_has_bits, 0x00000002U))
2411 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.local_cheapest_cost_insertion_parameters_)
2412 : nullptr;
2413 _impl_.savings_parameters_ = (CheckHasBit(cached_has_bits, 0x00000004U))
2414 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.savings_parameters_)
2415 : nullptr;
2416 _impl_.global_cheapest_insertion_ls_operator_parameters_ = (CheckHasBit(cached_has_bits, 0x00000008U))
2417 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.global_cheapest_insertion_ls_operator_parameters_)
2418 : nullptr;
2419 ::memcpy(reinterpret_cast<char*>(&_impl_) +
2420 offsetof(Impl_, continuous_scheduling_solver_),
2421 reinterpret_cast<const char*>(&from._impl_) +
2422 offsetof(Impl_, continuous_scheduling_solver_),
2423 offsetof(Impl_, max_swap_active_chain_size_) -
2424 offsetof(Impl_, continuous_scheduling_solver_) +
2425 sizeof(Impl_::max_swap_active_chain_size_));
2426
2427 // @@protoc_insertion_point(copy_constructor:operations_research.RoutingSearchParameters)
2428}
2429PROTOBUF_NDEBUG_INLINE RoutingSearchParameters::Impl_::Impl_(
2430 [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
2431 [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
2432 : _cached_size_{0},
2433 local_search_metaheuristics_{visibility, arena},
2434 _local_search_metaheuristics_cached_byte_size_{0},
2435 log_tag_(arena) {}
2436
2437inline void RoutingSearchParameters::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
2438 new (&_impl_) Impl_(internal_visibility(), arena);
2439 ::memset(reinterpret_cast<char*>(&_impl_) +
2440 offsetof(Impl_, local_search_operators_),
2441 0,
2442 offsetof(Impl_, use_generalized_cp_sat_) -
2443 offsetof(Impl_, local_search_operators_) +
2444 sizeof(Impl_::use_generalized_cp_sat_));
2445 ::memset(reinterpret_cast<char*>(&_impl_) +
2446 offsetof(Impl_, sat_parameters_),
2447 0,
2448 offsetof(Impl_, max_swap_active_chain_size_) -
2449 offsetof(Impl_, sat_parameters_) +
2450 sizeof(Impl_::max_swap_active_chain_size_));
2451}
2453 // @@protoc_insertion_point(destructor:operations_research.RoutingSearchParameters)
2454 SharedDtor(*this);
2456inline void RoutingSearchParameters::SharedDtor(MessageLite& self) {
2457 RoutingSearchParameters& this_ = static_cast<RoutingSearchParameters&>(self);
2458 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
2459 this_.CheckHasBitConsistency();
2460 }
2461 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
2462 ABSL_DCHECK(this_.GetArena() == nullptr);
2463 delete this_._impl_.local_search_operators_;
2464 delete this_._impl_.time_limit_;
2465 delete this_._impl_.lns_time_limit_;
2466 delete this_._impl_.improvement_limit_parameters_;
2467 delete this_._impl_.global_cheapest_insertion_first_solution_parameters_;
2468 this_._impl_.log_tag_.Destroy();
2469 delete this_._impl_.sat_parameters_;
2470 delete this_._impl_.iterated_local_search_parameters_;
2471 delete this_._impl_.local_cheapest_insertion_parameters_;
2472 delete this_._impl_.local_cheapest_cost_insertion_parameters_;
2473 delete this_._impl_.savings_parameters_;
2474 delete this_._impl_.global_cheapest_insertion_ls_operator_parameters_;
2475 this_._impl_.~Impl_();
2476}
2477
2478inline void* PROTOBUF_NONNULL RoutingSearchParameters::PlacementNew_(
2479 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
2480 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
2481 return ::new (mem) RoutingSearchParameters(arena);
2482}
2483constexpr auto RoutingSearchParameters::InternalNewImpl_() {
2484 constexpr auto arena_bits = ::google::protobuf::internal::EncodePlacementArenaOffsets({
2485 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.local_search_metaheuristics_) +
2486 decltype(RoutingSearchParameters::_impl_.local_search_metaheuristics_)::
2487 InternalGetArenaOffset(
2488 ::google::protobuf::Message::internal_visibility()),
2489 });
2490 if (arena_bits.has_value()) {
2491 return ::google::protobuf::internal::MessageCreator::CopyInit(
2492 sizeof(RoutingSearchParameters), alignof(RoutingSearchParameters), *arena_bits);
2493 } else {
2494 return ::google::protobuf::internal::MessageCreator(&RoutingSearchParameters::PlacementNew_,
2495 sizeof(RoutingSearchParameters),
2496 alignof(RoutingSearchParameters));
2497 }
2498}
2500 return ::google::protobuf::internal::ClassDataFull{
2501 ::google::protobuf::internal::ClassData{
2503 &_table_.header,
2504 nullptr, // OnDemandRegisterArenaDtor
2505 nullptr, // IsInitialized
2506 &RoutingSearchParameters::MergeImpl,
2507 ::google::protobuf::Message::GetNewImpl<RoutingSearchParameters>(),
2508#if defined(PROTOBUF_CUSTOM_VTABLE)
2509 &RoutingSearchParameters::SharedDtor,
2510 ::google::protobuf::Message::GetClearImpl<RoutingSearchParameters>(), &RoutingSearchParameters::ByteSizeLong,
2512#endif // PROTOBUF_CUSTOM_VTABLE
2513 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_._cached_size_),
2514 false,
2515 },
2516 &RoutingSearchParameters::kDescriptorMethods,
2518 nullptr, // tracker
2519 };
2520}
2521
2522PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
2523 ::google::protobuf::internal::ClassDataFull RoutingSearchParameters_class_data_ =
2525
2526PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
2527RoutingSearchParameters::GetClassData() const {
2528 ::google::protobuf::internal::PrefetchToLocalCache(&RoutingSearchParameters_class_data_);
2529 ::google::protobuf::internal::PrefetchToLocalCache(RoutingSearchParameters_class_data_.tc_table);
2531}
2532PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
2533const ::_pbi::TcParseTable<5, 50, 11, 107, 11>
2534RoutingSearchParameters::_table_ = {
2535 {
2536 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_._has_bits_),
2537 0, // no _extensions_
2538 72, 248, // max_field_number, fast_idx_mask
2539 offsetof(decltype(_table_), field_lookup_table),
2540 1138157568, // skipmap
2541 offsetof(decltype(_table_), field_entries),
2542 50, // num_field_entries
2543 11, // num_aux_entries
2544 offsetof(decltype(_table_), aux_entries),
2546 nullptr, // post_loop_handler
2547 ::_pbi::TcParser::GenericFallback, // fallback
2548 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
2549 ::_pbi::TcParser::GetTable<::operations_research::RoutingSearchParameters>(), // to_prefetch
2550 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
2551 }, {{
2552 {::_pbi::TcParser::MiniParse, {}},
2553 // .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
2554 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters, _impl_.first_solution_strategy_), 5>(),
2555 {8, 5, 0,
2556 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.first_solution_strategy_)}},
2557 // bool use_unfiltered_first_solution_strategy = 2;
2558 {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(RoutingSearchParameters, _impl_.use_unfiltered_first_solution_strategy_), 10>(),
2559 {16, 10, 0,
2560 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_unfiltered_first_solution_strategy_)}},
2561 // .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
2562 {::_pbi::TcParser::FastMtS1,
2563 {26, 0, 0,
2564 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.local_search_operators_)}},
2565 // .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
2566 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingSearchParameters, _impl_.local_search_metaheuristic_), 6>(),
2567 {32, 6, 0,
2568 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.local_search_metaheuristic_)}},
2569 // double guided_local_search_lambda_coefficient = 5;
2570 {::_pbi::TcParser::FastF64S1,
2571 {41, 7, 0,
2572 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.guided_local_search_lambda_coefficient_)}},
2573 // bool use_depth_first_search = 6;
2574 {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(RoutingSearchParameters, _impl_.use_depth_first_search_), 11>(),
2575 {48, 11, 0,
2576 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_depth_first_search_)}},
2577 // double optimization_step = 7;
2578 {::_pbi::TcParser::FastF64S1,
2579 {57, 8, 0,
2580 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.optimization_step_)}},
2581 // int64 solution_limit = 8;
2582 {::_pbi::TcParser::SingularVarintNoZag1<::uint64_t, offsetof(RoutingSearchParameters, _impl_.solution_limit_), 9>(),
2583 {64, 9, 0,
2584 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.solution_limit_)}},
2585 // .google.protobuf.Duration time_limit = 9;
2586 {::_pbi::TcParser::FastMtS1,
2587 {74, 1, 1,
2588 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.time_limit_)}},
2589 // .google.protobuf.Duration lns_time_limit = 10;
2590 {::_pbi::TcParser::FastMtS1,
2591 {82, 2, 2,
2592 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.lns_time_limit_)}},
2593 // bool use_full_propagation = 11;
2594 {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(RoutingSearchParameters, _impl_.use_full_propagation_), 12>(),
2595 {88, 12, 0,
2596 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_full_propagation_)}},
2597 {::_pbi::TcParser::MiniParse, {}},
2598 // bool log_search = 13;
2599 {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(RoutingSearchParameters, _impl_.log_search_), 13>(),
2600 {104, 13, 0,
2601 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.log_search_)}},
2602 {::_pbi::TcParser::MiniParse, {}},
2603 {::_pbi::TcParser::MiniParse, {}},
2604 // int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
2605 {::_pbi::TcParser::FastV32S2,
2606 {640, 20, 0,
2607 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.heuristic_expensive_chain_lns_num_arcs_to_consider_)}},
2608 // int32 number_of_solutions_to_collect = 17;
2609 {::_pbi::TcParser::FastV32S2,
2610 {392, 14, 0,
2611 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.number_of_solutions_to_collect_)}},
2612 // .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
2613 {::_pbi::TcParser::FastV32S2,
2614 {656, 21, 0,
2615 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.mixed_integer_scheduling_solver_)}},
2616 // int32 heuristic_close_nodes_lns_num_nodes = 35;
2617 {::_pbi::TcParser::FastV32S2,
2618 {664, 22, 0,
2619 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.heuristic_close_nodes_lns_num_nodes_)}},
2620 // int32 relocate_expensive_chain_num_arcs_to_consider = 20;
2621 {::_pbi::TcParser::FastV32S2,
2622 {416, 16, 0,
2623 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.relocate_expensive_chain_num_arcs_to_consider_)}},
2624 // .operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters improvement_limit_parameters = 37;
2625 {::_pbi::TcParser::FastMtS2,
2626 {682, 3, 3,
2627 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.improvement_limit_parameters_)}},
2628 // double log_cost_scaling_factor = 22;
2629 {::_pbi::TcParser::FastF64S2,
2630 {433, 15, 0,
2631 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.log_cost_scaling_factor_)}},
2632 // .operations_research.GlobalCheapestInsertionParameters global_cheapest_insertion_first_solution_parameters = 71;
2633 {::_pbi::TcParser::FastMtS2,
2634 {1210, 4, 9,
2635 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.global_cheapest_insertion_first_solution_parameters_)}},
2636 // bool report_intermediate_cp_sat_solutions = 56;
2637 {::_pbi::TcParser::FastV8S2,
2638 {960, 26, 0,
2639 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.report_intermediate_cp_sat_solutions_)}},
2640 // bool use_multi_armed_bandit_concatenate_operators = 41;
2641 {::_pbi::TcParser::FastV8S2,
2642 {712, 25, 0,
2643 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_multi_armed_bandit_concatenate_operators_)}},
2644 // double multi_armed_bandit_compound_operator_memory_coefficient = 42;
2645 {::_pbi::TcParser::FastF64S2,
2646 {721, 23, 0,
2647 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.multi_armed_bandit_compound_operator_memory_coefficient_)}},
2648 // .operations_research.OptionalBoolean use_cp_sat = 27;
2649 {::_pbi::TcParser::FastV32S2,
2650 {472, 17, 0,
2651 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_cp_sat_)}},
2652 // .operations_research.OptionalBoolean use_cp = 28;
2653 {::_pbi::TcParser::FastV32S2,
2654 {480, 19, 0,
2655 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_cp_)}},
2656 // double log_cost_offset = 29;
2657 {::_pbi::TcParser::FastF64S2,
2658 {489, 18, 0,
2659 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.log_cost_offset_)}},
2660 // bool christofides_use_minimum_matching = 30;
2661 {::_pbi::TcParser::FastV8S2,
2662 {496, 24, 0,
2663 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.christofides_use_minimum_matching_)}},
2664 // .operations_research.OptionalBoolean use_generalized_cp_sat = 47;
2665 {::_pbi::TcParser::FastV32S2,
2666 {760, 27, 0,
2667 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_generalized_cp_sat_)}},
2668 }}, {{
2669 33, 0, 3,
2670 14560, 20,
2671 65, 30,
2672 65285, 44,
2673 65535, 65535
2674 }}, {{
2675 // .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
2676 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.first_solution_strategy_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
2677 // bool use_unfiltered_first_solution_strategy = 2;
2678 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_unfiltered_first_solution_strategy_), _Internal::kHasBitsOffset + 10, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2679 // .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
2680 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.local_search_operators_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2681 // .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
2682 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.local_search_metaheuristic_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
2683 // double guided_local_search_lambda_coefficient = 5;
2684 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.guided_local_search_lambda_coefficient_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2685 // bool use_depth_first_search = 6;
2686 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_depth_first_search_), _Internal::kHasBitsOffset + 11, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2687 // double optimization_step = 7;
2688 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.optimization_step_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2689 // int64 solution_limit = 8;
2690 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.solution_limit_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt64)},
2691 // .google.protobuf.Duration time_limit = 9;
2692 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.time_limit_), _Internal::kHasBitsOffset + 1, 1, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2693 // .google.protobuf.Duration lns_time_limit = 10;
2694 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.lns_time_limit_), _Internal::kHasBitsOffset + 2, 2, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2695 // bool use_full_propagation = 11;
2696 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_full_propagation_), _Internal::kHasBitsOffset + 12, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2697 // bool log_search = 13;
2698 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.log_search_), _Internal::kHasBitsOffset + 13, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2699 // int32 number_of_solutions_to_collect = 17;
2700 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.number_of_solutions_to_collect_), _Internal::kHasBitsOffset + 14, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2701 // int32 relocate_expensive_chain_num_arcs_to_consider = 20;
2702 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.relocate_expensive_chain_num_arcs_to_consider_), _Internal::kHasBitsOffset + 16, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2703 // double log_cost_scaling_factor = 22;
2704 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.log_cost_scaling_factor_), _Internal::kHasBitsOffset + 15, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2705 // .operations_research.OptionalBoolean use_cp_sat = 27;
2706 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_cp_sat_), _Internal::kHasBitsOffset + 17, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
2707 // .operations_research.OptionalBoolean use_cp = 28;
2708 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_cp_), _Internal::kHasBitsOffset + 19, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
2709 // double log_cost_offset = 29;
2710 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.log_cost_offset_), _Internal::kHasBitsOffset + 18, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2711 // bool christofides_use_minimum_matching = 30;
2712 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.christofides_use_minimum_matching_), _Internal::kHasBitsOffset + 24, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2713 // int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
2714 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.heuristic_expensive_chain_lns_num_arcs_to_consider_), _Internal::kHasBitsOffset + 20, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2715 // .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
2716 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.continuous_scheduling_solver_), _Internal::kHasBitsOffset + 36, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
2717 // .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
2718 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.mixed_integer_scheduling_solver_), _Internal::kHasBitsOffset + 21, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
2719 // int32 heuristic_close_nodes_lns_num_nodes = 35;
2720 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.heuristic_close_nodes_lns_num_nodes_), _Internal::kHasBitsOffset + 22, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2721 // string log_tag = 36;
2722 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.log_tag_), _Internal::kHasBitsOffset + 29, 0, (0 | ::_fl::kFcOptional | ::_fl::kUtf8String | ::_fl::kRepAString)},
2723 // .operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters improvement_limit_parameters = 37;
2724 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.improvement_limit_parameters_), _Internal::kHasBitsOffset + 3, 3, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2725 // bool use_multi_armed_bandit_concatenate_operators = 41;
2726 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_multi_armed_bandit_concatenate_operators_), _Internal::kHasBitsOffset + 25, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2727 // double multi_armed_bandit_compound_operator_memory_coefficient = 42;
2728 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.multi_armed_bandit_compound_operator_memory_coefficient_), _Internal::kHasBitsOffset + 23, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2729 // double multi_armed_bandit_compound_operator_exploration_coefficient = 43;
2730 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.multi_armed_bandit_compound_operator_exploration_coefficient_), _Internal::kHasBitsOffset + 38, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2731 // .operations_research.OptionalBoolean use_generalized_cp_sat = 47;
2732 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_generalized_cp_sat_), _Internal::kHasBitsOffset + 27, 0, (0 | ::_fl::kFcOptional | ::_fl::kOpenEnum)},
2733 // .operations_research.sat.SatParameters sat_parameters = 48;
2734 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.sat_parameters_), _Internal::kHasBitsOffset + 30, 4, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2735 // optional bool disable_scheduling_beware_this_may_degrade_performance = 50;
2736 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.disable_scheduling_beware_this_may_degrade_performance_), _Internal::kHasBitsOffset + 41, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2737 // bool guided_local_search_reset_penalties_on_new_best_solution = 51;
2738 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.guided_local_search_reset_penalties_on_new_best_solution_), _Internal::kHasBitsOffset + 42, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2739 // int32 fallback_to_cp_sat_size_threshold = 52;
2740 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.fallback_to_cp_sat_size_threshold_), _Internal::kHasBitsOffset + 37, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2741 // double ls_operator_neighbors_ratio = 53;
2742 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.ls_operator_neighbors_ratio_), _Internal::kHasBitsOffset + 39, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2743 // int32 ls_operator_min_neighbors = 54;
2744 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.ls_operator_min_neighbors_), _Internal::kHasBitsOffset + 40, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2745 // bool report_intermediate_cp_sat_solutions = 56;
2746 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.report_intermediate_cp_sat_solutions_), _Internal::kHasBitsOffset + 26, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2747 // double secondary_ls_time_limit_ratio = 57;
2748 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.secondary_ls_time_limit_ratio_), _Internal::kHasBitsOffset + 45, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2749 // bool use_iterated_local_search = 58;
2750 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_iterated_local_search_), _Internal::kHasBitsOffset + 43, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2751 // int32 first_solution_optimization_period = 59;
2752 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.first_solution_optimization_period_), _Internal::kHasBitsOffset + 46, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2753 // .operations_research.IteratedLocalSearchParameters iterated_local_search_parameters = 60;
2754 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.iterated_local_search_parameters_), _Internal::kHasBitsOffset + 31, 5, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2755 // bool guided_local_search_penalize_with_vehicle_classes = 61;
2756 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.guided_local_search_penalize_with_vehicle_classes_), _Internal::kHasBitsOffset + 44, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2757 // bool use_guided_local_search_penalties_in_local_search_operators = 62;
2758 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_guided_local_search_penalties_in_local_search_operators_), _Internal::kHasBitsOffset + 47, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2759 // repeated .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristics = 63;
2760 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.local_search_metaheuristics_), _Internal::kHasBitsOffset + 28, 0, (0 | ::_fl::kFcRepeated | ::_fl::kPackedOpenEnum)},
2761 // int32 num_max_local_optima_before_metaheuristic_switch = 64;
2762 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.num_max_local_optima_before_metaheuristic_switch_), _Internal::kHasBitsOffset + 48, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2763 // int32 max_swap_active_chain_size = 66;
2764 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.max_swap_active_chain_size_), _Internal::kHasBitsOffset + 49, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2765 // .operations_research.LocalCheapestInsertionParameters local_cheapest_insertion_parameters = 68;
2766 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.local_cheapest_insertion_parameters_), _Internal::kHasBitsOffset + 32, 6, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2767 // .operations_research.LocalCheapestInsertionParameters local_cheapest_cost_insertion_parameters = 69;
2768 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.local_cheapest_cost_insertion_parameters_), _Internal::kHasBitsOffset + 33, 7, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2769 // .operations_research.SavingsParameters savings_parameters = 70;
2770 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.savings_parameters_), _Internal::kHasBitsOffset + 34, 8, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2771 // .operations_research.GlobalCheapestInsertionParameters global_cheapest_insertion_first_solution_parameters = 71;
2772 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.global_cheapest_insertion_first_solution_parameters_), _Internal::kHasBitsOffset + 4, 9, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2773 // .operations_research.GlobalCheapestInsertionParameters global_cheapest_insertion_ls_operator_parameters = 72;
2774 {PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.global_cheapest_insertion_ls_operator_parameters_), _Internal::kHasBitsOffset + 35, 10, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2775 }},
2776 {{
2777 {::_pbi::TcParser::GetTable<::operations_research::RoutingSearchParameters_LocalSearchNeighborhoodOperators>()},
2778 {::_pbi::TcParser::GetTable<::google::protobuf::Duration>()},
2779 {::_pbi::TcParser::GetTable<::google::protobuf::Duration>()},
2780 {::_pbi::TcParser::GetTable<::operations_research::RoutingSearchParameters_ImprovementSearchLimitParameters>()},
2781 {::_pbi::TcParser::GetTable<::operations_research::sat::SatParameters>()},
2782 {::_pbi::TcParser::GetTable<::operations_research::IteratedLocalSearchParameters>()},
2783 {::_pbi::TcParser::GetTable<::operations_research::LocalCheapestInsertionParameters>()},
2784 {::_pbi::TcParser::GetTable<::operations_research::LocalCheapestInsertionParameters>()},
2785 {::_pbi::TcParser::GetTable<::operations_research::SavingsParameters>()},
2786 {::_pbi::TcParser::GetTable<::operations_research::GlobalCheapestInsertionParameters>()},
2787 {::_pbi::TcParser::GetTable<::operations_research::GlobalCheapestInsertionParameters>()},
2788 }},
2789 {{
2790 "\53\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\7\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
2791 "operations_research.RoutingSearchParameters"
2792 "log_tag"
2793 }},
2794};
2795PROTOBUF_NOINLINE void RoutingSearchParameters::Clear() {
2796// @@protoc_insertion_point(message_clear_start:operations_research.RoutingSearchParameters)
2797 ::google::protobuf::internal::TSanWrite(&_impl_);
2798 ::uint32_t cached_has_bits = 0;
2799 // Prevent compiler warnings about cached_has_bits being unused
2800 (void) cached_has_bits;
2801
2802 cached_has_bits = _impl_._has_bits_[0];
2803 if (BatchCheckHasBit(cached_has_bits, 0x0000001fU)) {
2804 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
2805 ABSL_DCHECK(_impl_.local_search_operators_ != nullptr);
2806 _impl_.local_search_operators_->Clear();
2807 }
2808 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
2809 ABSL_DCHECK(_impl_.time_limit_ != nullptr);
2810 _impl_.time_limit_->Clear();
2811 }
2812 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
2813 ABSL_DCHECK(_impl_.lns_time_limit_ != nullptr);
2814 _impl_.lns_time_limit_->Clear();
2815 }
2816 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
2817 ABSL_DCHECK(_impl_.improvement_limit_parameters_ != nullptr);
2818 _impl_.improvement_limit_parameters_->Clear();
2819 }
2820 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
2821 ABSL_DCHECK(_impl_.global_cheapest_insertion_first_solution_parameters_ != nullptr);
2822 _impl_.global_cheapest_insertion_first_solution_parameters_->Clear();
2823 }
2824 }
2825 if (BatchCheckHasBit(cached_has_bits, 0x000000e0U)) {
2826 ::memset(&_impl_.first_solution_strategy_, 0, static_cast<::size_t>(
2827 reinterpret_cast<char*>(&_impl_.guided_local_search_lambda_coefficient_) -
2828 reinterpret_cast<char*>(&_impl_.first_solution_strategy_)) + sizeof(_impl_.guided_local_search_lambda_coefficient_));
2829 }
2830 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
2831 ::memset(&_impl_.optimization_step_, 0, static_cast<::size_t>(
2832 reinterpret_cast<char*>(&_impl_.log_cost_scaling_factor_) -
2833 reinterpret_cast<char*>(&_impl_.optimization_step_)) + sizeof(_impl_.log_cost_scaling_factor_));
2834 }
2835 if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
2836 ::memset(&_impl_.relocate_expensive_chain_num_arcs_to_consider_, 0, static_cast<::size_t>(
2837 reinterpret_cast<char*>(&_impl_.multi_armed_bandit_compound_operator_memory_coefficient_) -
2838 reinterpret_cast<char*>(&_impl_.relocate_expensive_chain_num_arcs_to_consider_)) + sizeof(_impl_.multi_armed_bandit_compound_operator_memory_coefficient_));
2839 }
2840 if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
2841 ::memset(&_impl_.christofides_use_minimum_matching_, 0, static_cast<::size_t>(
2842 reinterpret_cast<char*>(&_impl_.use_generalized_cp_sat_) -
2843 reinterpret_cast<char*>(&_impl_.christofides_use_minimum_matching_)) + sizeof(_impl_.use_generalized_cp_sat_));
2844 if (CheckHasBitForRepeated(cached_has_bits, 0x10000000U)) {
2845 _impl_.local_search_metaheuristics_.Clear();
2846 }
2847 if (CheckHasBit(cached_has_bits, 0x20000000U)) {
2848 _impl_.log_tag_.ClearNonDefaultToEmpty();
2849 }
2850 if (CheckHasBit(cached_has_bits, 0x40000000U)) {
2851 ABSL_DCHECK(_impl_.sat_parameters_ != nullptr);
2852 _impl_.sat_parameters_->Clear();
2853 }
2854 if (CheckHasBit(cached_has_bits, 0x80000000U)) {
2855 ABSL_DCHECK(_impl_.iterated_local_search_parameters_ != nullptr);
2856 _impl_.iterated_local_search_parameters_->Clear();
2857 }
2858 }
2859 cached_has_bits = _impl_._has_bits_[1];
2860 if (BatchCheckHasBit(cached_has_bits, 0x0000000fU)) {
2861 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
2862 ABSL_DCHECK(_impl_.local_cheapest_insertion_parameters_ != nullptr);
2863 _impl_.local_cheapest_insertion_parameters_->Clear();
2864 }
2865 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
2866 ABSL_DCHECK(_impl_.local_cheapest_cost_insertion_parameters_ != nullptr);
2867 _impl_.local_cheapest_cost_insertion_parameters_->Clear();
2868 }
2869 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
2870 ABSL_DCHECK(_impl_.savings_parameters_ != nullptr);
2871 _impl_.savings_parameters_->Clear();
2872 }
2873 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
2874 ABSL_DCHECK(_impl_.global_cheapest_insertion_ls_operator_parameters_ != nullptr);
2875 _impl_.global_cheapest_insertion_ls_operator_parameters_->Clear();
2876 }
2877 }
2878 if (BatchCheckHasBit(cached_has_bits, 0x000000f0U)) {
2879 ::memset(&_impl_.continuous_scheduling_solver_, 0, static_cast<::size_t>(
2880 reinterpret_cast<char*>(&_impl_.ls_operator_neighbors_ratio_) -
2881 reinterpret_cast<char*>(&_impl_.continuous_scheduling_solver_)) + sizeof(_impl_.ls_operator_neighbors_ratio_));
2882 }
2883 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
2884 ::memset(&_impl_.ls_operator_min_neighbors_, 0, static_cast<::size_t>(
2885 reinterpret_cast<char*>(&_impl_.use_guided_local_search_penalties_in_local_search_operators_) -
2886 reinterpret_cast<char*>(&_impl_.ls_operator_min_neighbors_)) + sizeof(_impl_.use_guided_local_search_penalties_in_local_search_operators_));
2887 }
2888 if (BatchCheckHasBit(cached_has_bits, 0x00030000U)) {
2889 ::memset(&_impl_.num_max_local_optima_before_metaheuristic_switch_, 0, static_cast<::size_t>(
2890 reinterpret_cast<char*>(&_impl_.max_swap_active_chain_size_) -
2891 reinterpret_cast<char*>(&_impl_.num_max_local_optima_before_metaheuristic_switch_)) + sizeof(_impl_.max_swap_active_chain_size_));
2892 }
2893 _impl_._has_bits_.Clear();
2894 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
2895}
2896
2897#if defined(PROTOBUF_CUSTOM_VTABLE)
2898::uint8_t* PROTOBUF_NONNULL RoutingSearchParameters::_InternalSerialize(
2899 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
2900 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
2901 const RoutingSearchParameters& this_ = static_cast<const RoutingSearchParameters&>(base);
2902#else // PROTOBUF_CUSTOM_VTABLE
2903::uint8_t* PROTOBUF_NONNULL RoutingSearchParameters::_InternalSerialize(
2904 ::uint8_t* PROTOBUF_NONNULL target,
2905 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
2906 const RoutingSearchParameters& this_ = *this;
2907#endif // PROTOBUF_CUSTOM_VTABLE
2908 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
2909 this_.CheckHasBitConsistency();
2910 }
2911 // @@protoc_insertion_point(serialize_to_array_start:operations_research.RoutingSearchParameters)
2912 ::uint32_t cached_has_bits = 0;
2913 (void)cached_has_bits;
2914
2915 cached_has_bits = this_._impl_._has_bits_[0];
2916 // .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
2917 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
2918 if (this_._internal_first_solution_strategy() != 0) {
2919 target = stream->EnsureSpace(target);
2920 target = ::_pbi::WireFormatLite::WriteEnumToArray(
2921 1, this_._internal_first_solution_strategy(), target);
2922 }
2923 }
2924
2925 // bool use_unfiltered_first_solution_strategy = 2;
2926 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
2927 if (this_._internal_use_unfiltered_first_solution_strategy() != 0) {
2928 target = stream->EnsureSpace(target);
2929 target = ::_pbi::WireFormatLite::WriteBoolToArray(
2930 2, this_._internal_use_unfiltered_first_solution_strategy(), target);
2931 }
2932 }
2933
2934 // .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
2935 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
2936 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
2937 3, *this_._impl_.local_search_operators_, this_._impl_.local_search_operators_->GetCachedSize(), target,
2938 stream);
2939 }
2940
2941 // .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
2942 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
2943 if (this_._internal_local_search_metaheuristic() != 0) {
2944 target = stream->EnsureSpace(target);
2945 target = ::_pbi::WireFormatLite::WriteEnumToArray(
2946 4, this_._internal_local_search_metaheuristic(), target);
2947 }
2948 }
2949
2950 // double guided_local_search_lambda_coefficient = 5;
2951 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
2952 if (::absl::bit_cast<::uint64_t>(this_._internal_guided_local_search_lambda_coefficient()) != 0) {
2953 target = stream->EnsureSpace(target);
2954 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
2955 5, this_._internal_guided_local_search_lambda_coefficient(), target);
2956 }
2957 }
2958
2959 // bool use_depth_first_search = 6;
2960 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
2961 if (this_._internal_use_depth_first_search() != 0) {
2962 target = stream->EnsureSpace(target);
2963 target = ::_pbi::WireFormatLite::WriteBoolToArray(
2964 6, this_._internal_use_depth_first_search(), target);
2965 }
2966 }
2967
2968 // double optimization_step = 7;
2969 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
2970 if (::absl::bit_cast<::uint64_t>(this_._internal_optimization_step()) != 0) {
2971 target = stream->EnsureSpace(target);
2972 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
2973 7, this_._internal_optimization_step(), target);
2974 }
2975 }
2976
2977 // int64 solution_limit = 8;
2978 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
2979 if (this_._internal_solution_limit() != 0) {
2980 target =
2981 ::google::protobuf::internal::WireFormatLite::WriteInt64ToArrayWithField<8>(
2982 stream, this_._internal_solution_limit(), target);
2983 }
2984 }
2985
2986 // .google.protobuf.Duration time_limit = 9;
2987 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
2988 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
2989 9, *this_._impl_.time_limit_, this_._impl_.time_limit_->GetCachedSize(), target,
2990 stream);
2991 }
2992
2993 // .google.protobuf.Duration lns_time_limit = 10;
2994 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
2995 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
2996 10, *this_._impl_.lns_time_limit_, this_._impl_.lns_time_limit_->GetCachedSize(), target,
2997 stream);
2998 }
2999
3000 // bool use_full_propagation = 11;
3001 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
3002 if (this_._internal_use_full_propagation() != 0) {
3003 target = stream->EnsureSpace(target);
3004 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3005 11, this_._internal_use_full_propagation(), target);
3006 }
3007 }
3008
3009 // bool log_search = 13;
3010 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
3011 if (this_._internal_log_search() != 0) {
3012 target = stream->EnsureSpace(target);
3013 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3014 13, this_._internal_log_search(), target);
3015 }
3016 }
3017
3018 // int32 number_of_solutions_to_collect = 17;
3019 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
3020 if (this_._internal_number_of_solutions_to_collect() != 0) {
3021 target = stream->EnsureSpace(target);
3022 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3023 17, this_._internal_number_of_solutions_to_collect(), target);
3024 }
3025 }
3026
3027 // int32 relocate_expensive_chain_num_arcs_to_consider = 20;
3028 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
3029 if (this_._internal_relocate_expensive_chain_num_arcs_to_consider() != 0) {
3030 target = stream->EnsureSpace(target);
3031 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3032 20, this_._internal_relocate_expensive_chain_num_arcs_to_consider(), target);
3033 }
3034 }
3035
3036 // double log_cost_scaling_factor = 22;
3037 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
3038 if (::absl::bit_cast<::uint64_t>(this_._internal_log_cost_scaling_factor()) != 0) {
3039 target = stream->EnsureSpace(target);
3040 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3041 22, this_._internal_log_cost_scaling_factor(), target);
3042 }
3043 }
3044
3045 // .operations_research.OptionalBoolean use_cp_sat = 27;
3046 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
3047 if (this_._internal_use_cp_sat() != 0) {
3048 target = stream->EnsureSpace(target);
3049 target = ::_pbi::WireFormatLite::WriteEnumToArray(
3050 27, this_._internal_use_cp_sat(), target);
3051 }
3052 }
3053
3054 // .operations_research.OptionalBoolean use_cp = 28;
3055 if (CheckHasBit(cached_has_bits, 0x00080000U)) {
3056 if (this_._internal_use_cp() != 0) {
3057 target = stream->EnsureSpace(target);
3058 target = ::_pbi::WireFormatLite::WriteEnumToArray(
3059 28, this_._internal_use_cp(), target);
3060 }
3061 }
3062
3063 // double log_cost_offset = 29;
3064 if (CheckHasBit(cached_has_bits, 0x00040000U)) {
3065 if (::absl::bit_cast<::uint64_t>(this_._internal_log_cost_offset()) != 0) {
3066 target = stream->EnsureSpace(target);
3067 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3068 29, this_._internal_log_cost_offset(), target);
3069 }
3070 }
3071
3072 // bool christofides_use_minimum_matching = 30;
3073 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
3074 if (this_._internal_christofides_use_minimum_matching() != 0) {
3075 target = stream->EnsureSpace(target);
3076 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3077 30, this_._internal_christofides_use_minimum_matching(), target);
3078 }
3079 }
3080
3081 // int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
3082 if (CheckHasBit(cached_has_bits, 0x00100000U)) {
3083 if (this_._internal_heuristic_expensive_chain_lns_num_arcs_to_consider() != 0) {
3084 target = stream->EnsureSpace(target);
3085 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3086 32, this_._internal_heuristic_expensive_chain_lns_num_arcs_to_consider(), target);
3087 }
3088 }
3089
3090 cached_has_bits = this_._impl_._has_bits_[1];
3091 // .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
3092 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
3093 if (this_._internal_continuous_scheduling_solver() != 0) {
3094 target = stream->EnsureSpace(target);
3095 target = ::_pbi::WireFormatLite::WriteEnumToArray(
3096 33, this_._internal_continuous_scheduling_solver(), target);
3097 }
3098 }
3099
3100 cached_has_bits = this_._impl_._has_bits_[0];
3101 // .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
3102 if (CheckHasBit(cached_has_bits, 0x00200000U)) {
3103 if (this_._internal_mixed_integer_scheduling_solver() != 0) {
3104 target = stream->EnsureSpace(target);
3105 target = ::_pbi::WireFormatLite::WriteEnumToArray(
3106 34, this_._internal_mixed_integer_scheduling_solver(), target);
3107 }
3108 }
3109
3110 // int32 heuristic_close_nodes_lns_num_nodes = 35;
3111 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
3112 if (this_._internal_heuristic_close_nodes_lns_num_nodes() != 0) {
3113 target = stream->EnsureSpace(target);
3114 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3115 35, this_._internal_heuristic_close_nodes_lns_num_nodes(), target);
3116 }
3117 }
3118
3119 // string log_tag = 36;
3120 if (CheckHasBit(cached_has_bits, 0x20000000U)) {
3121 if (!this_._internal_log_tag().empty()) {
3122 const ::std::string& _s = this_._internal_log_tag();
3123 ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
3124 _s.data(), static_cast<int>(_s.length()), ::google::protobuf::internal::WireFormatLite::SERIALIZE, "operations_research.RoutingSearchParameters.log_tag");
3125 target = stream->WriteStringMaybeAliased(36, _s, target);
3126 }
3127 }
3128
3129 // .operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters improvement_limit_parameters = 37;
3130 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
3131 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3132 37, *this_._impl_.improvement_limit_parameters_, this_._impl_.improvement_limit_parameters_->GetCachedSize(), target,
3133 stream);
3134 }
3135
3136 // bool use_multi_armed_bandit_concatenate_operators = 41;
3137 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
3138 if (this_._internal_use_multi_armed_bandit_concatenate_operators() != 0) {
3139 target = stream->EnsureSpace(target);
3140 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3141 41, this_._internal_use_multi_armed_bandit_concatenate_operators(), target);
3142 }
3143 }
3144
3145 // double multi_armed_bandit_compound_operator_memory_coefficient = 42;
3146 if (CheckHasBit(cached_has_bits, 0x00800000U)) {
3147 if (::absl::bit_cast<::uint64_t>(this_._internal_multi_armed_bandit_compound_operator_memory_coefficient()) != 0) {
3148 target = stream->EnsureSpace(target);
3149 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3150 42, this_._internal_multi_armed_bandit_compound_operator_memory_coefficient(), target);
3151 }
3152 }
3153
3154 cached_has_bits = this_._impl_._has_bits_[1];
3155 // double multi_armed_bandit_compound_operator_exploration_coefficient = 43;
3156 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
3157 if (::absl::bit_cast<::uint64_t>(this_._internal_multi_armed_bandit_compound_operator_exploration_coefficient()) != 0) {
3158 target = stream->EnsureSpace(target);
3159 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3160 43, this_._internal_multi_armed_bandit_compound_operator_exploration_coefficient(), target);
3161 }
3162 }
3163
3164 cached_has_bits = this_._impl_._has_bits_[0];
3165 // .operations_research.OptionalBoolean use_generalized_cp_sat = 47;
3166 if (CheckHasBit(cached_has_bits, 0x08000000U)) {
3167 if (this_._internal_use_generalized_cp_sat() != 0) {
3168 target = stream->EnsureSpace(target);
3169 target = ::_pbi::WireFormatLite::WriteEnumToArray(
3170 47, this_._internal_use_generalized_cp_sat(), target);
3171 }
3172 }
3173
3174 // .operations_research.sat.SatParameters sat_parameters = 48;
3175 if (CheckHasBit(cached_has_bits, 0x40000000U)) {
3176 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3177 48, *this_._impl_.sat_parameters_, this_._impl_.sat_parameters_->GetCachedSize(), target,
3178 stream);
3179 }
3180
3181 cached_has_bits = this_._impl_._has_bits_[1];
3182 // optional bool disable_scheduling_beware_this_may_degrade_performance = 50;
3183 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
3184 target = stream->EnsureSpace(target);
3185 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3186 50, this_._internal_disable_scheduling_beware_this_may_degrade_performance(), target);
3187 }
3188
3189 // bool guided_local_search_reset_penalties_on_new_best_solution = 51;
3190 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
3191 if (this_._internal_guided_local_search_reset_penalties_on_new_best_solution() != 0) {
3192 target = stream->EnsureSpace(target);
3193 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3194 51, this_._internal_guided_local_search_reset_penalties_on_new_best_solution(), target);
3195 }
3196 }
3197
3198 // int32 fallback_to_cp_sat_size_threshold = 52;
3199 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
3200 if (this_._internal_fallback_to_cp_sat_size_threshold() != 0) {
3201 target = stream->EnsureSpace(target);
3202 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3203 52, this_._internal_fallback_to_cp_sat_size_threshold(), target);
3204 }
3205 }
3206
3207 // double ls_operator_neighbors_ratio = 53;
3208 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
3209 if (::absl::bit_cast<::uint64_t>(this_._internal_ls_operator_neighbors_ratio()) != 0) {
3210 target = stream->EnsureSpace(target);
3211 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3212 53, this_._internal_ls_operator_neighbors_ratio(), target);
3213 }
3214 }
3215
3216 // int32 ls_operator_min_neighbors = 54;
3217 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
3218 if (this_._internal_ls_operator_min_neighbors() != 0) {
3219 target = stream->EnsureSpace(target);
3220 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3221 54, this_._internal_ls_operator_min_neighbors(), target);
3222 }
3223 }
3224
3225 cached_has_bits = this_._impl_._has_bits_[0];
3226 // bool report_intermediate_cp_sat_solutions = 56;
3227 if (CheckHasBit(cached_has_bits, 0x04000000U)) {
3228 if (this_._internal_report_intermediate_cp_sat_solutions() != 0) {
3229 target = stream->EnsureSpace(target);
3230 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3231 56, this_._internal_report_intermediate_cp_sat_solutions(), target);
3232 }
3233 }
3234
3235 cached_has_bits = this_._impl_._has_bits_[1];
3236 // double secondary_ls_time_limit_ratio = 57;
3237 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
3238 if (::absl::bit_cast<::uint64_t>(this_._internal_secondary_ls_time_limit_ratio()) != 0) {
3239 target = stream->EnsureSpace(target);
3240 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3241 57, this_._internal_secondary_ls_time_limit_ratio(), target);
3242 }
3243 }
3244
3245 // bool use_iterated_local_search = 58;
3246 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
3247 if (this_._internal_use_iterated_local_search() != 0) {
3248 target = stream->EnsureSpace(target);
3249 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3250 58, this_._internal_use_iterated_local_search(), target);
3251 }
3252 }
3253
3254 // int32 first_solution_optimization_period = 59;
3255 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
3256 if (this_._internal_first_solution_optimization_period() != 0) {
3257 target = stream->EnsureSpace(target);
3258 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3259 59, this_._internal_first_solution_optimization_period(), target);
3260 }
3261 }
3262
3263 cached_has_bits = this_._impl_._has_bits_[0];
3264 // .operations_research.IteratedLocalSearchParameters iterated_local_search_parameters = 60;
3265 if (CheckHasBit(cached_has_bits, 0x80000000U)) {
3266 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3267 60, *this_._impl_.iterated_local_search_parameters_, this_._impl_.iterated_local_search_parameters_->GetCachedSize(), target,
3268 stream);
3269 }
3270
3271 cached_has_bits = this_._impl_._has_bits_[1];
3272 // bool guided_local_search_penalize_with_vehicle_classes = 61;
3273 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
3274 if (this_._internal_guided_local_search_penalize_with_vehicle_classes() != 0) {
3275 target = stream->EnsureSpace(target);
3276 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3277 61, this_._internal_guided_local_search_penalize_with_vehicle_classes(), target);
3278 }
3279 }
3280
3281 // bool use_guided_local_search_penalties_in_local_search_operators = 62;
3282 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
3283 if (this_._internal_use_guided_local_search_penalties_in_local_search_operators() != 0) {
3284 target = stream->EnsureSpace(target);
3285 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3286 62, this_._internal_use_guided_local_search_penalties_in_local_search_operators(), target);
3287 }
3288 }
3289
3290 cached_has_bits = this_._impl_._has_bits_[0];
3291 // repeated .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristics = 63;
3292 if (CheckHasBitForRepeated(cached_has_bits, 0x10000000U)) {
3293 {
3294 ::size_t byte_size = this_._impl_._local_search_metaheuristics_cached_byte_size_.Get();
3295 if (byte_size > 0) {
3296 target = stream->WriteEnumPacked(
3297 63, this_._internal_local_search_metaheuristics(), byte_size, target);
3298 }
3299 }
3300 }
3301
3302 cached_has_bits = this_._impl_._has_bits_[1];
3303 // int32 num_max_local_optima_before_metaheuristic_switch = 64;
3304 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
3305 if (this_._internal_num_max_local_optima_before_metaheuristic_switch() != 0) {
3306 target = stream->EnsureSpace(target);
3307 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3308 64, this_._internal_num_max_local_optima_before_metaheuristic_switch(), target);
3309 }
3310 }
3311
3312 // int32 max_swap_active_chain_size = 66;
3313 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
3314 if (this_._internal_max_swap_active_chain_size() != 0) {
3315 target = stream->EnsureSpace(target);
3316 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3317 66, this_._internal_max_swap_active_chain_size(), target);
3318 }
3319 }
3320
3321 // .operations_research.LocalCheapestInsertionParameters local_cheapest_insertion_parameters = 68;
3322 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
3323 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3324 68, *this_._impl_.local_cheapest_insertion_parameters_, this_._impl_.local_cheapest_insertion_parameters_->GetCachedSize(), target,
3325 stream);
3326 }
3327
3328 // .operations_research.LocalCheapestInsertionParameters local_cheapest_cost_insertion_parameters = 69;
3329 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
3330 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3331 69, *this_._impl_.local_cheapest_cost_insertion_parameters_, this_._impl_.local_cheapest_cost_insertion_parameters_->GetCachedSize(), target,
3332 stream);
3333 }
3334
3335 // .operations_research.SavingsParameters savings_parameters = 70;
3336 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
3337 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3338 70, *this_._impl_.savings_parameters_, this_._impl_.savings_parameters_->GetCachedSize(), target,
3339 stream);
3340 }
3341
3342 cached_has_bits = this_._impl_._has_bits_[0];
3343 // .operations_research.GlobalCheapestInsertionParameters global_cheapest_insertion_first_solution_parameters = 71;
3344 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
3345 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3346 71, *this_._impl_.global_cheapest_insertion_first_solution_parameters_, this_._impl_.global_cheapest_insertion_first_solution_parameters_->GetCachedSize(), target,
3347 stream);
3348 }
3349
3350 cached_has_bits = this_._impl_._has_bits_[1];
3351 // .operations_research.GlobalCheapestInsertionParameters global_cheapest_insertion_ls_operator_parameters = 72;
3352 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
3353 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3354 72, *this_._impl_.global_cheapest_insertion_ls_operator_parameters_, this_._impl_.global_cheapest_insertion_ls_operator_parameters_->GetCachedSize(), target,
3355 stream);
3356 }
3357
3358 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
3359 target =
3360 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
3361 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
3362 }
3363 // @@protoc_insertion_point(serialize_to_array_end:operations_research.RoutingSearchParameters)
3364 return target;
3365}
3366
3367#if defined(PROTOBUF_CUSTOM_VTABLE)
3369 const RoutingSearchParameters& this_ = static_cast<const RoutingSearchParameters&>(base);
3370#else // PROTOBUF_CUSTOM_VTABLE
3372 const RoutingSearchParameters& this_ = *this;
3373#endif // PROTOBUF_CUSTOM_VTABLE
3374 // @@protoc_insertion_point(message_byte_size_start:operations_research.RoutingSearchParameters)
3375 ::size_t total_size = 0;
3376
3377 ::uint32_t cached_has_bits = 0;
3378 // Prevent compiler warnings about cached_has_bits being unused
3379 (void)cached_has_bits;
3380
3381 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
3382 cached_has_bits = this_._impl_._has_bits_[0];
3383 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
3384 // .operations_research.RoutingSearchParameters.LocalSearchNeighborhoodOperators local_search_operators = 3;
3385 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
3386 total_size += 1 +
3387 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.local_search_operators_);
3388 }
3389 // .google.protobuf.Duration time_limit = 9;
3390 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
3391 total_size += 1 +
3392 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.time_limit_);
3393 }
3394 // .google.protobuf.Duration lns_time_limit = 10;
3395 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
3396 total_size += 1 +
3397 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.lns_time_limit_);
3398 }
3399 // .operations_research.RoutingSearchParameters.ImprovementSearchLimitParameters improvement_limit_parameters = 37;
3400 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
3401 total_size += 2 +
3402 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.improvement_limit_parameters_);
3403 }
3404 // .operations_research.GlobalCheapestInsertionParameters global_cheapest_insertion_first_solution_parameters = 71;
3405 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
3406 total_size += 2 +
3407 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.global_cheapest_insertion_first_solution_parameters_);
3408 }
3409 // .operations_research.FirstSolutionStrategy.Value first_solution_strategy = 1;
3410 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
3411 if (this_._internal_first_solution_strategy() != 0) {
3412 total_size += 1 +
3413 ::_pbi::WireFormatLite::EnumSize(this_._internal_first_solution_strategy());
3414 }
3415 }
3416 // .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristic = 4;
3417 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
3418 if (this_._internal_local_search_metaheuristic() != 0) {
3419 total_size += 1 +
3420 ::_pbi::WireFormatLite::EnumSize(this_._internal_local_search_metaheuristic());
3421 }
3422 }
3423 // double guided_local_search_lambda_coefficient = 5;
3424 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
3425 if (::absl::bit_cast<::uint64_t>(this_._internal_guided_local_search_lambda_coefficient()) != 0) {
3426 total_size += 9;
3427 }
3428 }
3429 }
3430 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
3431 // double optimization_step = 7;
3432 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
3433 if (::absl::bit_cast<::uint64_t>(this_._internal_optimization_step()) != 0) {
3434 total_size += 9;
3435 }
3436 }
3437 // int64 solution_limit = 8;
3438 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
3439 if (this_._internal_solution_limit() != 0) {
3440 total_size += ::_pbi::WireFormatLite::Int64SizePlusOne(
3441 this_._internal_solution_limit());
3442 }
3443 }
3444 // bool use_unfiltered_first_solution_strategy = 2;
3445 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
3446 if (this_._internal_use_unfiltered_first_solution_strategy() != 0) {
3447 total_size += 2;
3448 }
3449 }
3450 // bool use_depth_first_search = 6;
3451 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
3452 if (this_._internal_use_depth_first_search() != 0) {
3453 total_size += 2;
3454 }
3455 }
3456 // bool use_full_propagation = 11;
3457 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
3458 if (this_._internal_use_full_propagation() != 0) {
3459 total_size += 2;
3460 }
3461 }
3462 // bool log_search = 13;
3463 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
3464 if (this_._internal_log_search() != 0) {
3465 total_size += 2;
3466 }
3467 }
3468 // int32 number_of_solutions_to_collect = 17;
3469 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
3470 if (this_._internal_number_of_solutions_to_collect() != 0) {
3471 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3472 this_._internal_number_of_solutions_to_collect());
3473 }
3474 }
3475 // double log_cost_scaling_factor = 22;
3476 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
3477 if (::absl::bit_cast<::uint64_t>(this_._internal_log_cost_scaling_factor()) != 0) {
3478 total_size += 10;
3479 }
3480 }
3481 }
3482 if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
3483 // int32 relocate_expensive_chain_num_arcs_to_consider = 20;
3484 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
3485 if (this_._internal_relocate_expensive_chain_num_arcs_to_consider() != 0) {
3486 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3487 this_._internal_relocate_expensive_chain_num_arcs_to_consider());
3488 }
3489 }
3490 // .operations_research.OptionalBoolean use_cp_sat = 27;
3491 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
3492 if (this_._internal_use_cp_sat() != 0) {
3493 total_size += 2 +
3494 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_cp_sat());
3495 }
3496 }
3497 // double log_cost_offset = 29;
3498 if (CheckHasBit(cached_has_bits, 0x00040000U)) {
3499 if (::absl::bit_cast<::uint64_t>(this_._internal_log_cost_offset()) != 0) {
3500 total_size += 10;
3501 }
3502 }
3503 // .operations_research.OptionalBoolean use_cp = 28;
3504 if (CheckHasBit(cached_has_bits, 0x00080000U)) {
3505 if (this_._internal_use_cp() != 0) {
3506 total_size += 2 +
3507 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_cp());
3508 }
3509 }
3510 // int32 heuristic_expensive_chain_lns_num_arcs_to_consider = 32;
3511 if (CheckHasBit(cached_has_bits, 0x00100000U)) {
3512 if (this_._internal_heuristic_expensive_chain_lns_num_arcs_to_consider() != 0) {
3513 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3514 this_._internal_heuristic_expensive_chain_lns_num_arcs_to_consider());
3515 }
3516 }
3517 // .operations_research.RoutingSearchParameters.SchedulingSolver mixed_integer_scheduling_solver = 34;
3518 if (CheckHasBit(cached_has_bits, 0x00200000U)) {
3519 if (this_._internal_mixed_integer_scheduling_solver() != 0) {
3520 total_size += 2 +
3521 ::_pbi::WireFormatLite::EnumSize(this_._internal_mixed_integer_scheduling_solver());
3522 }
3523 }
3524 // int32 heuristic_close_nodes_lns_num_nodes = 35;
3525 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
3526 if (this_._internal_heuristic_close_nodes_lns_num_nodes() != 0) {
3527 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3528 this_._internal_heuristic_close_nodes_lns_num_nodes());
3529 }
3530 }
3531 // double multi_armed_bandit_compound_operator_memory_coefficient = 42;
3532 if (CheckHasBit(cached_has_bits, 0x00800000U)) {
3533 if (::absl::bit_cast<::uint64_t>(this_._internal_multi_armed_bandit_compound_operator_memory_coefficient()) != 0) {
3534 total_size += 10;
3535 }
3536 }
3537 }
3538 if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
3539 // bool christofides_use_minimum_matching = 30;
3540 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
3541 if (this_._internal_christofides_use_minimum_matching() != 0) {
3542 total_size += 3;
3543 }
3544 }
3545 // bool use_multi_armed_bandit_concatenate_operators = 41;
3546 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
3547 if (this_._internal_use_multi_armed_bandit_concatenate_operators() != 0) {
3548 total_size += 3;
3549 }
3550 }
3551 // bool report_intermediate_cp_sat_solutions = 56;
3552 if (CheckHasBit(cached_has_bits, 0x04000000U)) {
3553 if (this_._internal_report_intermediate_cp_sat_solutions() != 0) {
3554 total_size += 3;
3555 }
3556 }
3557 // .operations_research.OptionalBoolean use_generalized_cp_sat = 47;
3558 if (CheckHasBit(cached_has_bits, 0x08000000U)) {
3559 if (this_._internal_use_generalized_cp_sat() != 0) {
3560 total_size += 2 +
3561 ::_pbi::WireFormatLite::EnumSize(this_._internal_use_generalized_cp_sat());
3562 }
3563 }
3564 // repeated .operations_research.LocalSearchMetaheuristic.Value local_search_metaheuristics = 63;
3565 if (CheckHasBitForRepeated(cached_has_bits, 0x10000000U)) {
3566 total_size += ::_pbi::WireFormatLite::EnumSizeWithPackedTagSize(
3567 this_._internal_local_search_metaheuristics(), 2, this_._impl_._local_search_metaheuristics_cached_byte_size_);
3568 }
3569 // string log_tag = 36;
3570 if (CheckHasBit(cached_has_bits, 0x20000000U)) {
3571 if (!this_._internal_log_tag().empty()) {
3572 total_size += 2 + ::google::protobuf::internal::WireFormatLite::StringSize(
3573 this_._internal_log_tag());
3574 }
3575 }
3576 // .operations_research.sat.SatParameters sat_parameters = 48;
3577 if (CheckHasBit(cached_has_bits, 0x40000000U)) {
3578 total_size += 2 +
3579 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.sat_parameters_);
3580 }
3581 // .operations_research.IteratedLocalSearchParameters iterated_local_search_parameters = 60;
3582 if (CheckHasBit(cached_has_bits, 0x80000000U)) {
3583 total_size += 2 +
3584 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.iterated_local_search_parameters_);
3585 }
3586 }
3587 cached_has_bits = this_._impl_._has_bits_[1];
3588 total_size += static_cast<bool>(0x00000200U & cached_has_bits) * 3;
3589 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
3590 // .operations_research.LocalCheapestInsertionParameters local_cheapest_insertion_parameters = 68;
3591 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
3592 total_size += 2 +
3593 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.local_cheapest_insertion_parameters_);
3594 }
3595 // .operations_research.LocalCheapestInsertionParameters local_cheapest_cost_insertion_parameters = 69;
3596 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
3597 total_size += 2 +
3598 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.local_cheapest_cost_insertion_parameters_);
3599 }
3600 // .operations_research.SavingsParameters savings_parameters = 70;
3601 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
3602 total_size += 2 +
3603 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.savings_parameters_);
3604 }
3605 // .operations_research.GlobalCheapestInsertionParameters global_cheapest_insertion_ls_operator_parameters = 72;
3606 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
3607 total_size += 2 +
3608 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.global_cheapest_insertion_ls_operator_parameters_);
3609 }
3610 // .operations_research.RoutingSearchParameters.SchedulingSolver continuous_scheduling_solver = 33;
3611 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
3612 if (this_._internal_continuous_scheduling_solver() != 0) {
3613 total_size += 2 +
3614 ::_pbi::WireFormatLite::EnumSize(this_._internal_continuous_scheduling_solver());
3615 }
3616 }
3617 // int32 fallback_to_cp_sat_size_threshold = 52;
3618 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
3619 if (this_._internal_fallback_to_cp_sat_size_threshold() != 0) {
3620 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3621 this_._internal_fallback_to_cp_sat_size_threshold());
3622 }
3623 }
3624 // double multi_armed_bandit_compound_operator_exploration_coefficient = 43;
3625 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
3626 if (::absl::bit_cast<::uint64_t>(this_._internal_multi_armed_bandit_compound_operator_exploration_coefficient()) != 0) {
3627 total_size += 10;
3628 }
3629 }
3630 // double ls_operator_neighbors_ratio = 53;
3631 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
3632 if (::absl::bit_cast<::uint64_t>(this_._internal_ls_operator_neighbors_ratio()) != 0) {
3633 total_size += 10;
3634 }
3635 }
3636 }
3637 if (BatchCheckHasBit(cached_has_bits, 0x0000fd00U)) {
3638 // int32 ls_operator_min_neighbors = 54;
3639 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
3640 if (this_._internal_ls_operator_min_neighbors() != 0) {
3641 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3642 this_._internal_ls_operator_min_neighbors());
3643 }
3644 }
3645 // bool guided_local_search_reset_penalties_on_new_best_solution = 51;
3646 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
3647 if (this_._internal_guided_local_search_reset_penalties_on_new_best_solution() != 0) {
3648 total_size += 3;
3649 }
3650 }
3651 // bool use_iterated_local_search = 58;
3652 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
3653 if (this_._internal_use_iterated_local_search() != 0) {
3654 total_size += 3;
3655 }
3656 }
3657 // bool guided_local_search_penalize_with_vehicle_classes = 61;
3658 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
3659 if (this_._internal_guided_local_search_penalize_with_vehicle_classes() != 0) {
3660 total_size += 3;
3661 }
3662 }
3663 // double secondary_ls_time_limit_ratio = 57;
3664 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
3665 if (::absl::bit_cast<::uint64_t>(this_._internal_secondary_ls_time_limit_ratio()) != 0) {
3666 total_size += 10;
3667 }
3668 }
3669 // int32 first_solution_optimization_period = 59;
3670 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
3671 if (this_._internal_first_solution_optimization_period() != 0) {
3672 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3673 this_._internal_first_solution_optimization_period());
3674 }
3675 }
3676 // bool use_guided_local_search_penalties_in_local_search_operators = 62;
3677 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
3678 if (this_._internal_use_guided_local_search_penalties_in_local_search_operators() != 0) {
3679 total_size += 3;
3680 }
3681 }
3682 }
3683 if (BatchCheckHasBit(cached_has_bits, 0x00030000U)) {
3684 // int32 num_max_local_optima_before_metaheuristic_switch = 64;
3685 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
3686 if (this_._internal_num_max_local_optima_before_metaheuristic_switch() != 0) {
3687 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3688 this_._internal_num_max_local_optima_before_metaheuristic_switch());
3689 }
3690 }
3691 // int32 max_swap_active_chain_size = 66;
3692 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
3693 if (this_._internal_max_swap_active_chain_size() != 0) {
3694 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3695 this_._internal_max_swap_active_chain_size());
3696 }
3697 }
3698 }
3699 return this_.MaybeComputeUnknownFieldsSize(total_size,
3700 &this_._impl_._cached_size_);
3701}
3702
3703void RoutingSearchParameters::MergeImpl(::google::protobuf::MessageLite& to_msg,
3704 const ::google::protobuf::MessageLite& from_msg) {
3705 auto* const _this =
3706 static_cast<RoutingSearchParameters*>(&to_msg);
3707 auto& from = static_cast<const RoutingSearchParameters&>(from_msg);
3708 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
3709 from.CheckHasBitConsistency();
3710 }
3711 ::google::protobuf::Arena* arena = _this->GetArena();
3712 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.RoutingSearchParameters)
3713 ABSL_DCHECK_NE(&from, _this);
3714 ::uint32_t cached_has_bits = 0;
3715 (void)cached_has_bits;
3716
3717 cached_has_bits = from._impl_._has_bits_[0];
3718 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
3719 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
3720 ABSL_DCHECK(from._impl_.local_search_operators_ != nullptr);
3721 if (_this->_impl_.local_search_operators_ == nullptr) {
3722 _this->_impl_.local_search_operators_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.local_search_operators_);
3723 } else {
3724 _this->_impl_.local_search_operators_->MergeFrom(*from._impl_.local_search_operators_);
3725 }
3726 }
3727 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
3728 ABSL_DCHECK(from._impl_.time_limit_ != nullptr);
3729 if (_this->_impl_.time_limit_ == nullptr) {
3730 _this->_impl_.time_limit_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.time_limit_);
3731 } else {
3732 _this->_impl_.time_limit_->MergeFrom(*from._impl_.time_limit_);
3733 }
3734 }
3735 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
3736 ABSL_DCHECK(from._impl_.lns_time_limit_ != nullptr);
3737 if (_this->_impl_.lns_time_limit_ == nullptr) {
3738 _this->_impl_.lns_time_limit_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.lns_time_limit_);
3739 } else {
3740 _this->_impl_.lns_time_limit_->MergeFrom(*from._impl_.lns_time_limit_);
3741 }
3742 }
3743 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
3744 ABSL_DCHECK(from._impl_.improvement_limit_parameters_ != nullptr);
3745 if (_this->_impl_.improvement_limit_parameters_ == nullptr) {
3746 _this->_impl_.improvement_limit_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.improvement_limit_parameters_);
3747 } else {
3748 _this->_impl_.improvement_limit_parameters_->MergeFrom(*from._impl_.improvement_limit_parameters_);
3749 }
3750 }
3751 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
3752 ABSL_DCHECK(from._impl_.global_cheapest_insertion_first_solution_parameters_ != nullptr);
3753 if (_this->_impl_.global_cheapest_insertion_first_solution_parameters_ == nullptr) {
3754 _this->_impl_.global_cheapest_insertion_first_solution_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.global_cheapest_insertion_first_solution_parameters_);
3755 } else {
3756 _this->_impl_.global_cheapest_insertion_first_solution_parameters_->MergeFrom(*from._impl_.global_cheapest_insertion_first_solution_parameters_);
3757 }
3758 }
3759 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
3760 if (from._internal_first_solution_strategy() != 0) {
3761 _this->_impl_.first_solution_strategy_ = from._impl_.first_solution_strategy_;
3762 }
3763 }
3764 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
3765 if (from._internal_local_search_metaheuristic() != 0) {
3766 _this->_impl_.local_search_metaheuristic_ = from._impl_.local_search_metaheuristic_;
3767 }
3768 }
3769 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
3770 if (::absl::bit_cast<::uint64_t>(from._internal_guided_local_search_lambda_coefficient()) != 0) {
3771 _this->_impl_.guided_local_search_lambda_coefficient_ = from._impl_.guided_local_search_lambda_coefficient_;
3772 }
3773 }
3774 }
3775 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
3776 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
3777 if (::absl::bit_cast<::uint64_t>(from._internal_optimization_step()) != 0) {
3778 _this->_impl_.optimization_step_ = from._impl_.optimization_step_;
3779 }
3780 }
3781 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
3782 if (from._internal_solution_limit() != 0) {
3783 _this->_impl_.solution_limit_ = from._impl_.solution_limit_;
3784 }
3785 }
3786 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
3787 if (from._internal_use_unfiltered_first_solution_strategy() != 0) {
3788 _this->_impl_.use_unfiltered_first_solution_strategy_ = from._impl_.use_unfiltered_first_solution_strategy_;
3789 }
3790 }
3791 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
3792 if (from._internal_use_depth_first_search() != 0) {
3793 _this->_impl_.use_depth_first_search_ = from._impl_.use_depth_first_search_;
3794 }
3795 }
3796 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
3797 if (from._internal_use_full_propagation() != 0) {
3798 _this->_impl_.use_full_propagation_ = from._impl_.use_full_propagation_;
3799 }
3800 }
3801 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
3802 if (from._internal_log_search() != 0) {
3803 _this->_impl_.log_search_ = from._impl_.log_search_;
3804 }
3805 }
3806 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
3807 if (from._internal_number_of_solutions_to_collect() != 0) {
3808 _this->_impl_.number_of_solutions_to_collect_ = from._impl_.number_of_solutions_to_collect_;
3809 }
3810 }
3811 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
3812 if (::absl::bit_cast<::uint64_t>(from._internal_log_cost_scaling_factor()) != 0) {
3813 _this->_impl_.log_cost_scaling_factor_ = from._impl_.log_cost_scaling_factor_;
3814 }
3815 }
3816 }
3817 if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
3818 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
3819 if (from._internal_relocate_expensive_chain_num_arcs_to_consider() != 0) {
3820 _this->_impl_.relocate_expensive_chain_num_arcs_to_consider_ = from._impl_.relocate_expensive_chain_num_arcs_to_consider_;
3821 }
3822 }
3823 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
3824 if (from._internal_use_cp_sat() != 0) {
3825 _this->_impl_.use_cp_sat_ = from._impl_.use_cp_sat_;
3826 }
3827 }
3828 if (CheckHasBit(cached_has_bits, 0x00040000U)) {
3829 if (::absl::bit_cast<::uint64_t>(from._internal_log_cost_offset()) != 0) {
3830 _this->_impl_.log_cost_offset_ = from._impl_.log_cost_offset_;
3831 }
3832 }
3833 if (CheckHasBit(cached_has_bits, 0x00080000U)) {
3834 if (from._internal_use_cp() != 0) {
3835 _this->_impl_.use_cp_ = from._impl_.use_cp_;
3836 }
3837 }
3838 if (CheckHasBit(cached_has_bits, 0x00100000U)) {
3839 if (from._internal_heuristic_expensive_chain_lns_num_arcs_to_consider() != 0) {
3840 _this->_impl_.heuristic_expensive_chain_lns_num_arcs_to_consider_ = from._impl_.heuristic_expensive_chain_lns_num_arcs_to_consider_;
3841 }
3842 }
3843 if (CheckHasBit(cached_has_bits, 0x00200000U)) {
3844 if (from._internal_mixed_integer_scheduling_solver() != 0) {
3845 _this->_impl_.mixed_integer_scheduling_solver_ = from._impl_.mixed_integer_scheduling_solver_;
3846 }
3847 }
3848 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
3849 if (from._internal_heuristic_close_nodes_lns_num_nodes() != 0) {
3850 _this->_impl_.heuristic_close_nodes_lns_num_nodes_ = from._impl_.heuristic_close_nodes_lns_num_nodes_;
3851 }
3852 }
3853 if (CheckHasBit(cached_has_bits, 0x00800000U)) {
3854 if (::absl::bit_cast<::uint64_t>(from._internal_multi_armed_bandit_compound_operator_memory_coefficient()) != 0) {
3855 _this->_impl_.multi_armed_bandit_compound_operator_memory_coefficient_ = from._impl_.multi_armed_bandit_compound_operator_memory_coefficient_;
3856 }
3857 }
3858 }
3859 if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
3860 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
3861 if (from._internal_christofides_use_minimum_matching() != 0) {
3862 _this->_impl_.christofides_use_minimum_matching_ = from._impl_.christofides_use_minimum_matching_;
3863 }
3864 }
3865 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
3866 if (from._internal_use_multi_armed_bandit_concatenate_operators() != 0) {
3867 _this->_impl_.use_multi_armed_bandit_concatenate_operators_ = from._impl_.use_multi_armed_bandit_concatenate_operators_;
3868 }
3869 }
3870 if (CheckHasBit(cached_has_bits, 0x04000000U)) {
3871 if (from._internal_report_intermediate_cp_sat_solutions() != 0) {
3872 _this->_impl_.report_intermediate_cp_sat_solutions_ = from._impl_.report_intermediate_cp_sat_solutions_;
3873 }
3874 }
3875 if (CheckHasBit(cached_has_bits, 0x08000000U)) {
3876 if (from._internal_use_generalized_cp_sat() != 0) {
3877 _this->_impl_.use_generalized_cp_sat_ = from._impl_.use_generalized_cp_sat_;
3878 }
3879 }
3880 if (CheckHasBitForRepeated(cached_has_bits, 0x10000000U)) {
3881 _this->_internal_mutable_local_search_metaheuristics()->MergeFrom(from._internal_local_search_metaheuristics());
3882 }
3883 if (CheckHasBit(cached_has_bits, 0x20000000U)) {
3884 if (!from._internal_log_tag().empty()) {
3885 _this->_internal_set_log_tag(from._internal_log_tag());
3886 } else {
3887 if (_this->_impl_.log_tag_.IsDefault()) {
3888 _this->_internal_set_log_tag("");
3889 }
3890 }
3891 }
3892 if (CheckHasBit(cached_has_bits, 0x40000000U)) {
3893 ABSL_DCHECK(from._impl_.sat_parameters_ != nullptr);
3894 if (_this->_impl_.sat_parameters_ == nullptr) {
3895 _this->_impl_.sat_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.sat_parameters_);
3896 } else {
3897 _this->_impl_.sat_parameters_->MergeFrom(*from._impl_.sat_parameters_);
3898 }
3899 }
3900 if (CheckHasBit(cached_has_bits, 0x80000000U)) {
3901 ABSL_DCHECK(from._impl_.iterated_local_search_parameters_ != nullptr);
3902 if (_this->_impl_.iterated_local_search_parameters_ == nullptr) {
3903 _this->_impl_.iterated_local_search_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.iterated_local_search_parameters_);
3904 } else {
3905 _this->_impl_.iterated_local_search_parameters_->MergeFrom(*from._impl_.iterated_local_search_parameters_);
3906 }
3907 }
3908 }
3909 cached_has_bits = from._impl_._has_bits_[1];
3910 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
3911 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
3912 ABSL_DCHECK(from._impl_.local_cheapest_insertion_parameters_ != nullptr);
3913 if (_this->_impl_.local_cheapest_insertion_parameters_ == nullptr) {
3914 _this->_impl_.local_cheapest_insertion_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.local_cheapest_insertion_parameters_);
3915 } else {
3916 _this->_impl_.local_cheapest_insertion_parameters_->MergeFrom(*from._impl_.local_cheapest_insertion_parameters_);
3917 }
3918 }
3919 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
3920 ABSL_DCHECK(from._impl_.local_cheapest_cost_insertion_parameters_ != nullptr);
3921 if (_this->_impl_.local_cheapest_cost_insertion_parameters_ == nullptr) {
3922 _this->_impl_.local_cheapest_cost_insertion_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.local_cheapest_cost_insertion_parameters_);
3923 } else {
3924 _this->_impl_.local_cheapest_cost_insertion_parameters_->MergeFrom(*from._impl_.local_cheapest_cost_insertion_parameters_);
3925 }
3926 }
3927 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
3928 ABSL_DCHECK(from._impl_.savings_parameters_ != nullptr);
3929 if (_this->_impl_.savings_parameters_ == nullptr) {
3930 _this->_impl_.savings_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.savings_parameters_);
3931 } else {
3932 _this->_impl_.savings_parameters_->MergeFrom(*from._impl_.savings_parameters_);
3933 }
3934 }
3935 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
3936 ABSL_DCHECK(from._impl_.global_cheapest_insertion_ls_operator_parameters_ != nullptr);
3937 if (_this->_impl_.global_cheapest_insertion_ls_operator_parameters_ == nullptr) {
3938 _this->_impl_.global_cheapest_insertion_ls_operator_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.global_cheapest_insertion_ls_operator_parameters_);
3939 } else {
3940 _this->_impl_.global_cheapest_insertion_ls_operator_parameters_->MergeFrom(*from._impl_.global_cheapest_insertion_ls_operator_parameters_);
3941 }
3942 }
3943 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
3944 if (from._internal_continuous_scheduling_solver() != 0) {
3945 _this->_impl_.continuous_scheduling_solver_ = from._impl_.continuous_scheduling_solver_;
3946 }
3947 }
3948 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
3949 if (from._internal_fallback_to_cp_sat_size_threshold() != 0) {
3950 _this->_impl_.fallback_to_cp_sat_size_threshold_ = from._impl_.fallback_to_cp_sat_size_threshold_;
3951 }
3952 }
3953 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
3954 if (::absl::bit_cast<::uint64_t>(from._internal_multi_armed_bandit_compound_operator_exploration_coefficient()) != 0) {
3955 _this->_impl_.multi_armed_bandit_compound_operator_exploration_coefficient_ = from._impl_.multi_armed_bandit_compound_operator_exploration_coefficient_;
3956 }
3957 }
3958 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
3959 if (::absl::bit_cast<::uint64_t>(from._internal_ls_operator_neighbors_ratio()) != 0) {
3960 _this->_impl_.ls_operator_neighbors_ratio_ = from._impl_.ls_operator_neighbors_ratio_;
3961 }
3962 }
3963 }
3964 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
3965 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
3966 if (from._internal_ls_operator_min_neighbors() != 0) {
3967 _this->_impl_.ls_operator_min_neighbors_ = from._impl_.ls_operator_min_neighbors_;
3968 }
3969 }
3970 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
3971 _this->_impl_.disable_scheduling_beware_this_may_degrade_performance_ = from._impl_.disable_scheduling_beware_this_may_degrade_performance_;
3972 }
3973 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
3974 if (from._internal_guided_local_search_reset_penalties_on_new_best_solution() != 0) {
3975 _this->_impl_.guided_local_search_reset_penalties_on_new_best_solution_ = from._impl_.guided_local_search_reset_penalties_on_new_best_solution_;
3976 }
3977 }
3978 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
3979 if (from._internal_use_iterated_local_search() != 0) {
3980 _this->_impl_.use_iterated_local_search_ = from._impl_.use_iterated_local_search_;
3981 }
3982 }
3983 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
3984 if (from._internal_guided_local_search_penalize_with_vehicle_classes() != 0) {
3985 _this->_impl_.guided_local_search_penalize_with_vehicle_classes_ = from._impl_.guided_local_search_penalize_with_vehicle_classes_;
3986 }
3987 }
3988 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
3989 if (::absl::bit_cast<::uint64_t>(from._internal_secondary_ls_time_limit_ratio()) != 0) {
3990 _this->_impl_.secondary_ls_time_limit_ratio_ = from._impl_.secondary_ls_time_limit_ratio_;
3991 }
3992 }
3993 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
3994 if (from._internal_first_solution_optimization_period() != 0) {
3995 _this->_impl_.first_solution_optimization_period_ = from._impl_.first_solution_optimization_period_;
3996 }
3997 }
3998 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
3999 if (from._internal_use_guided_local_search_penalties_in_local_search_operators() != 0) {
4000 _this->_impl_.use_guided_local_search_penalties_in_local_search_operators_ = from._impl_.use_guided_local_search_penalties_in_local_search_operators_;
4001 }
4002 }
4003 }
4004 if (BatchCheckHasBit(cached_has_bits, 0x00030000U)) {
4005 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
4006 if (from._internal_num_max_local_optima_before_metaheuristic_switch() != 0) {
4007 _this->_impl_.num_max_local_optima_before_metaheuristic_switch_ = from._impl_.num_max_local_optima_before_metaheuristic_switch_;
4008 }
4009 }
4010 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
4011 if (from._internal_max_swap_active_chain_size() != 0) {
4012 _this->_impl_.max_swap_active_chain_size_ = from._impl_.max_swap_active_chain_size_;
4013 }
4014 }
4015 }
4016 _this->_impl_._has_bits_.Or(from._impl_._has_bits_);
4017 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
4018 from._internal_metadata_);
4019}
4020
4022 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.RoutingSearchParameters)
4023 if (&from == this) return;
4025 MergeFrom(from);
4026}
4027
4028
4029void RoutingSearchParameters::InternalSwap(RoutingSearchParameters* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
4030 using ::std::swap;
4031 auto* arena = GetArena();
4032 ABSL_DCHECK_EQ(arena, other->GetArena());
4033 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
4034 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
4035 swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]);
4036 ::google::protobuf::internal::memswap<
4037 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.use_generalized_cp_sat_)
4038 + sizeof(RoutingSearchParameters::_impl_.use_generalized_cp_sat_)
4039 - PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.local_search_operators_)>(
4040 reinterpret_cast<char*>(&_impl_.local_search_operators_),
4041 reinterpret_cast<char*>(&other->_impl_.local_search_operators_));
4042 _impl_.local_search_metaheuristics_.InternalSwap(&other->_impl_.local_search_metaheuristics_);
4043 ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.log_tag_, &other->_impl_.log_tag_, arena);
4044 ::google::protobuf::internal::memswap<
4045 PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.max_swap_active_chain_size_)
4046 + sizeof(RoutingSearchParameters::_impl_.max_swap_active_chain_size_)
4047 - PROTOBUF_FIELD_OFFSET(RoutingSearchParameters, _impl_.sat_parameters_)>(
4048 reinterpret_cast<char*>(&_impl_.sat_parameters_),
4049 reinterpret_cast<char*>(&other->_impl_.sat_parameters_));
4050}
4051
4052::google::protobuf::Metadata RoutingSearchParameters::GetMetadata() const {
4053 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
4054}
4055// ===================================================================
4056
4058 public:
4059 using HasBits =
4060 decltype(::std::declval<RoutingModelParameters>()._impl_._has_bits_);
4061 static constexpr ::int32_t kHasBitsOffset =
4062 8 * PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_._has_bits_);
4064
4066 ::google::protobuf::internal::TSanWrite(&_impl_);
4067 if (_impl_.solver_parameters_ != nullptr) _impl_.solver_parameters_->Clear();
4068 ClearHasBit(_impl_._has_bits_[0],
4069 0x00000001U);
4070}
4071RoutingModelParameters::RoutingModelParameters(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
4072#if defined(PROTOBUF_CUSTOM_VTABLE)
4073 : ::google::protobuf::Message(arena, RoutingModelParameters_class_data_.base()) {
4074#else // PROTOBUF_CUSTOM_VTABLE
4075 : ::google::protobuf::Message(arena) {
4076#endif // PROTOBUF_CUSTOM_VTABLE
4077 SharedCtor(arena);
4078 // @@protoc_insertion_point(arena_constructor:operations_research.RoutingModelParameters)
4079}
4080PROTOBUF_NDEBUG_INLINE RoutingModelParameters::Impl_::Impl_(
4081 [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
4082 [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
4083 [[maybe_unused]] const ::operations_research::RoutingModelParameters& from_msg)
4084 : _has_bits_{from._has_bits_},
4085 _cached_size_{0} {}
4086
4088 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
4089 const RoutingModelParameters& from)
4090#if defined(PROTOBUF_CUSTOM_VTABLE)
4091 : ::google::protobuf::Message(arena, RoutingModelParameters_class_data_.base()) {
4092#else // PROTOBUF_CUSTOM_VTABLE
4093 : ::google::protobuf::Message(arena) {
4094#endif // PROTOBUF_CUSTOM_VTABLE
4095 RoutingModelParameters* const _this = this;
4096 (void)_this;
4097 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
4098 from._internal_metadata_);
4099 new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
4100 ::uint32_t cached_has_bits = _impl_._has_bits_[0];
4101 _impl_.solver_parameters_ = (CheckHasBit(cached_has_bits, 0x00000001U))
4102 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.solver_parameters_)
4103 : nullptr;
4104 ::memcpy(reinterpret_cast<char*>(&_impl_) +
4105 offsetof(Impl_, reduce_vehicle_cost_model_),
4106 reinterpret_cast<const char*>(&from._impl_) +
4107 offsetof(Impl_, reduce_vehicle_cost_model_),
4108 offsetof(Impl_, max_callback_cache_size_) -
4109 offsetof(Impl_, reduce_vehicle_cost_model_) +
4110 sizeof(Impl_::max_callback_cache_size_));
4111
4112 // @@protoc_insertion_point(copy_constructor:operations_research.RoutingModelParameters)
4113}
4114PROTOBUF_NDEBUG_INLINE RoutingModelParameters::Impl_::Impl_(
4115 [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
4116 [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
4117 : _cached_size_{0} {}
4118
4119inline void RoutingModelParameters::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
4120 new (&_impl_) Impl_(internal_visibility(), arena);
4121 ::memset(reinterpret_cast<char*>(&_impl_) +
4122 offsetof(Impl_, solver_parameters_),
4123 0,
4124 offsetof(Impl_, max_callback_cache_size_) -
4125 offsetof(Impl_, solver_parameters_) +
4126 sizeof(Impl_::max_callback_cache_size_));
4127}
4129 // @@protoc_insertion_point(destructor:operations_research.RoutingModelParameters)
4130 SharedDtor(*this);
4131}
4132inline void RoutingModelParameters::SharedDtor(MessageLite& self) {
4133 RoutingModelParameters& this_ = static_cast<RoutingModelParameters&>(self);
4134 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
4135 this_.CheckHasBitConsistency();
4136 }
4137 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
4138 ABSL_DCHECK(this_.GetArena() == nullptr);
4139 delete this_._impl_.solver_parameters_;
4140 this_._impl_.~Impl_();
4141}
4142
4143inline void* PROTOBUF_NONNULL RoutingModelParameters::PlacementNew_(
4144 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
4145 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
4146 return ::new (mem) RoutingModelParameters(arena);
4147}
4148constexpr auto RoutingModelParameters::InternalNewImpl_() {
4149 return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(RoutingModelParameters),
4150 alignof(RoutingModelParameters));
4151}
4153 return ::google::protobuf::internal::ClassDataFull{
4154 ::google::protobuf::internal::ClassData{
4156 &_table_.header,
4157 nullptr, // OnDemandRegisterArenaDtor
4158 nullptr, // IsInitialized
4159 &RoutingModelParameters::MergeImpl,
4160 ::google::protobuf::Message::GetNewImpl<RoutingModelParameters>(),
4161#if defined(PROTOBUF_CUSTOM_VTABLE)
4162 &RoutingModelParameters::SharedDtor,
4163 ::google::protobuf::Message::GetClearImpl<RoutingModelParameters>(), &RoutingModelParameters::ByteSizeLong,
4165#endif // PROTOBUF_CUSTOM_VTABLE
4166 PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_._cached_size_),
4167 false,
4168 },
4169 &RoutingModelParameters::kDescriptorMethods,
4171 nullptr, // tracker
4172 };
4173}
4174
4175PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
4176 ::google::protobuf::internal::ClassDataFull RoutingModelParameters_class_data_ =
4178
4179PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
4180RoutingModelParameters::GetClassData() const {
4181 ::google::protobuf::internal::PrefetchToLocalCache(&RoutingModelParameters_class_data_);
4182 ::google::protobuf::internal::PrefetchToLocalCache(RoutingModelParameters_class_data_.tc_table);
4184}
4185PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
4186const ::_pbi::TcParseTable<2, 3, 1, 0, 2>
4187RoutingModelParameters::_table_ = {
4188 {
4189 PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_._has_bits_),
4190 0, // no _extensions_
4191 3, 24, // max_field_number, fast_idx_mask
4192 offsetof(decltype(_table_), field_lookup_table),
4193 4294967288, // skipmap
4194 offsetof(decltype(_table_), field_entries),
4195 3, // num_field_entries
4196 1, // num_aux_entries
4197 offsetof(decltype(_table_), aux_entries),
4199 nullptr, // post_loop_handler
4200 ::_pbi::TcParser::GenericFallback, // fallback
4201 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
4202 ::_pbi::TcParser::GetTable<::operations_research::RoutingModelParameters>(), // to_prefetch
4203 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
4204 }, {{
4205 {::_pbi::TcParser::MiniParse, {}},
4206 // .operations_research.ConstraintSolverParameters solver_parameters = 1;
4207 {::_pbi::TcParser::FastMtS1,
4208 {10, 0, 0,
4209 PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_.solver_parameters_)}},
4210 // bool reduce_vehicle_cost_model = 2;
4211 {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(RoutingModelParameters, _impl_.reduce_vehicle_cost_model_), 1>(),
4212 {16, 1, 0,
4213 PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_.reduce_vehicle_cost_model_)}},
4214 // int32 max_callback_cache_size = 3;
4215 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(RoutingModelParameters, _impl_.max_callback_cache_size_), 2>(),
4216 {24, 2, 0,
4217 PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_.max_callback_cache_size_)}},
4218 }}, {{
4219 65535, 65535
4220 }}, {{
4221 // .operations_research.ConstraintSolverParameters solver_parameters = 1;
4222 {PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_.solver_parameters_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
4223 // bool reduce_vehicle_cost_model = 2;
4224 {PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_.reduce_vehicle_cost_model_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
4225 // int32 max_callback_cache_size = 3;
4226 {PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_.max_callback_cache_size_), _Internal::kHasBitsOffset + 2, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
4227 }},
4228 {{
4229 {::_pbi::TcParser::GetTable<::operations_research::ConstraintSolverParameters>()},
4230 }},
4231 {{
4232 }},
4233};
4234PROTOBUF_NOINLINE void RoutingModelParameters::Clear() {
4235// @@protoc_insertion_point(message_clear_start:operations_research.RoutingModelParameters)
4236 ::google::protobuf::internal::TSanWrite(&_impl_);
4237 ::uint32_t cached_has_bits = 0;
4238 // Prevent compiler warnings about cached_has_bits being unused
4239 (void) cached_has_bits;
4240
4241 cached_has_bits = _impl_._has_bits_[0];
4242 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
4243 ABSL_DCHECK(_impl_.solver_parameters_ != nullptr);
4244 _impl_.solver_parameters_->Clear();
4245 }
4246 if (BatchCheckHasBit(cached_has_bits, 0x00000006U)) {
4247 ::memset(&_impl_.reduce_vehicle_cost_model_, 0, static_cast<::size_t>(
4248 reinterpret_cast<char*>(&_impl_.max_callback_cache_size_) -
4249 reinterpret_cast<char*>(&_impl_.reduce_vehicle_cost_model_)) + sizeof(_impl_.max_callback_cache_size_));
4250 }
4251 _impl_._has_bits_.Clear();
4252 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
4253}
4254
4255#if defined(PROTOBUF_CUSTOM_VTABLE)
4256::uint8_t* PROTOBUF_NONNULL RoutingModelParameters::_InternalSerialize(
4257 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
4258 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
4259 const RoutingModelParameters& this_ = static_cast<const RoutingModelParameters&>(base);
4260#else // PROTOBUF_CUSTOM_VTABLE
4261::uint8_t* PROTOBUF_NONNULL RoutingModelParameters::_InternalSerialize(
4262 ::uint8_t* PROTOBUF_NONNULL target,
4263 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
4264 const RoutingModelParameters& this_ = *this;
4265#endif // PROTOBUF_CUSTOM_VTABLE
4266 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
4267 this_.CheckHasBitConsistency();
4268 }
4269 // @@protoc_insertion_point(serialize_to_array_start:operations_research.RoutingModelParameters)
4270 ::uint32_t cached_has_bits = 0;
4271 (void)cached_has_bits;
4272
4273 cached_has_bits = this_._impl_._has_bits_[0];
4274 // .operations_research.ConstraintSolverParameters solver_parameters = 1;
4275 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
4276 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
4277 1, *this_._impl_.solver_parameters_, this_._impl_.solver_parameters_->GetCachedSize(), target,
4278 stream);
4279 }
4280
4281 // bool reduce_vehicle_cost_model = 2;
4282 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
4283 if (this_._internal_reduce_vehicle_cost_model() != 0) {
4284 target = stream->EnsureSpace(target);
4285 target = ::_pbi::WireFormatLite::WriteBoolToArray(
4286 2, this_._internal_reduce_vehicle_cost_model(), target);
4287 }
4288 }
4289
4290 // int32 max_callback_cache_size = 3;
4291 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
4292 if (this_._internal_max_callback_cache_size() != 0) {
4293 target =
4294 ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<3>(
4295 stream, this_._internal_max_callback_cache_size(), target);
4296 }
4297 }
4298
4299 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
4300 target =
4301 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
4302 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
4303 }
4304 // @@protoc_insertion_point(serialize_to_array_end:operations_research.RoutingModelParameters)
4305 return target;
4306}
4307
4308#if defined(PROTOBUF_CUSTOM_VTABLE)
4310 const RoutingModelParameters& this_ = static_cast<const RoutingModelParameters&>(base);
4311#else // PROTOBUF_CUSTOM_VTABLE
4312::size_t RoutingModelParameters::ByteSizeLong() const {
4313 const RoutingModelParameters& this_ = *this;
4314#endif // PROTOBUF_CUSTOM_VTABLE
4315 // @@protoc_insertion_point(message_byte_size_start:operations_research.RoutingModelParameters)
4316 ::size_t total_size = 0;
4317
4318 ::uint32_t cached_has_bits = 0;
4319 // Prevent compiler warnings about cached_has_bits being unused
4320 (void)cached_has_bits;
4321
4322 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
4323 cached_has_bits = this_._impl_._has_bits_[0];
4324 if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
4325 // .operations_research.ConstraintSolverParameters solver_parameters = 1;
4326 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
4327 total_size += 1 +
4328 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.solver_parameters_);
4329 }
4330 // bool reduce_vehicle_cost_model = 2;
4331 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
4332 if (this_._internal_reduce_vehicle_cost_model() != 0) {
4333 total_size += 2;
4334 }
4335 }
4336 // int32 max_callback_cache_size = 3;
4337 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
4338 if (this_._internal_max_callback_cache_size() != 0) {
4339 total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
4340 this_._internal_max_callback_cache_size());
4341 }
4342 }
4343 }
4344 return this_.MaybeComputeUnknownFieldsSize(total_size,
4345 &this_._impl_._cached_size_);
4346}
4347
4348void RoutingModelParameters::MergeImpl(::google::protobuf::MessageLite& to_msg,
4349 const ::google::protobuf::MessageLite& from_msg) {
4350 auto* const _this =
4351 static_cast<RoutingModelParameters*>(&to_msg);
4352 auto& from = static_cast<const RoutingModelParameters&>(from_msg);
4353 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
4354 from.CheckHasBitConsistency();
4355 }
4356 ::google::protobuf::Arena* arena = _this->GetArena();
4357 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.RoutingModelParameters)
4358 ABSL_DCHECK_NE(&from, _this);
4359 ::uint32_t cached_has_bits = 0;
4360 (void)cached_has_bits;
4361
4362 cached_has_bits = from._impl_._has_bits_[0];
4363 if (BatchCheckHasBit(cached_has_bits, 0x00000007U)) {
4364 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
4365 ABSL_DCHECK(from._impl_.solver_parameters_ != nullptr);
4366 if (_this->_impl_.solver_parameters_ == nullptr) {
4367 _this->_impl_.solver_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.solver_parameters_);
4368 } else {
4369 _this->_impl_.solver_parameters_->MergeFrom(*from._impl_.solver_parameters_);
4370 }
4371 }
4372 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
4373 if (from._internal_reduce_vehicle_cost_model() != 0) {
4374 _this->_impl_.reduce_vehicle_cost_model_ = from._impl_.reduce_vehicle_cost_model_;
4375 }
4376 }
4377 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
4378 if (from._internal_max_callback_cache_size() != 0) {
4379 _this->_impl_.max_callback_cache_size_ = from._impl_.max_callback_cache_size_;
4380 }
4381 }
4382 }
4383 _this->_impl_._has_bits_[0] |= cached_has_bits;
4384 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
4385 from._internal_metadata_);
4386}
4387
4389 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.RoutingModelParameters)
4390 if (&from == this) return;
4391 Clear();
4393}
4394
4395
4396void RoutingModelParameters::InternalSwap(RoutingModelParameters* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
4397 using ::std::swap;
4398 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
4399 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
4400 ::google::protobuf::internal::memswap<
4401 PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_.max_callback_cache_size_)
4402 + sizeof(RoutingModelParameters::_impl_.max_callback_cache_size_)
4403 - PROTOBUF_FIELD_OFFSET(RoutingModelParameters, _impl_.solver_parameters_)>(
4404 reinterpret_cast<char*>(&_impl_.solver_parameters_),
4405 reinterpret_cast<char*>(&other->_impl_.solver_parameters_));
4406}
4407
4408::google::protobuf::Metadata RoutingModelParameters::GetMetadata() const {
4409 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
4410}
4411// @@protoc_insertion_point(namespace_scope)
4412} // namespace operations_research
4413namespace google {
4414namespace protobuf {
4415} // namespace protobuf
4416} // namespace google
4417// @@protoc_insertion_point(global_scope)
4418PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::std::false_type
4419 _static_init2_ [[maybe_unused]] =
4421 ::std::false_type{});
4422#include "google/protobuf/port_undef.inc"
static PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 ::std::false_type _static_init2_
static const ::_pb::Message *PROTOBUF_NONNULL const file_default_instances[]
void CopyFrom(const RoutingModelParameters &from)
friend void swap(RoutingModelParameters &a, RoutingModelParameters &b)
void MergeFrom(const RoutingModelParameters &from)
::google::protobuf::Metadata GetMetadata() const
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL
decltype(::std::declval< RoutingSearchParameters_ImprovementSearchLimitParameters >()._impl_._has_bits_) HasBits
void CopyFrom(const RoutingSearchParameters_ImprovementSearchLimitParameters &from)
const ::google::protobuf::UnknownFieldSet & unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
void MergeFrom(const RoutingSearchParameters_ImprovementSearchLimitParameters &from)
friend void swap(RoutingSearchParameters_ImprovementSearchLimitParameters &a, RoutingSearchParameters_ImprovementSearchLimitParameters &b)
decltype(::std::declval< RoutingSearchParameters_LocalSearchNeighborhoodOperators >()._impl_._has_bits_) HasBits
const ::google::protobuf::UnknownFieldSet & unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND
void MergeFrom(const RoutingSearchParameters_LocalSearchNeighborhoodOperators &from)
void CopyFrom(const RoutingSearchParameters_LocalSearchNeighborhoodOperators &from)
friend void swap(RoutingSearchParameters_LocalSearchNeighborhoodOperators &a, RoutingSearchParameters_LocalSearchNeighborhoodOperators &b)
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
void CopyFrom(const RoutingSearchParameters &from)
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL
const ::google::protobuf::UnknownFieldSet & unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND
::google::protobuf::Metadata GetMetadata() const
void MergeFrom(const RoutingSearchParameters &from)
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
friend void swap(RoutingSearchParameters &a, RoutingSearchParameters &b)
static constexpr ::_pbi::MigrationSchema *PROTOBUF_NULLABLE schemas
OR-Tools root namespace.
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull RoutingModelParameters_class_data_
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RoutingSearchParameters_LocalSearchNeighborhoodOperatorsDefaultTypeInternal _RoutingSearchParameters_LocalSearchNeighborhoodOperators_default_instance_
PROTOBUF_CONSTINIT const uint32_t RoutingSearchParameters_SchedulingSolver_internal_data_[]
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RoutingModelParametersDefaultTypeInternal _RoutingModelParameters_default_instance_
const ::google::protobuf::EnumDescriptor *PROTOBUF_NONNULL RoutingSearchParameters_SchedulingSolver_descriptor()
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull RoutingSearchParameters_ImprovementSearchLimitParameters_class_data_
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull RoutingSearchParameters_LocalSearchNeighborhoodOperators_class_data_
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RoutingSearchParametersDefaultTypeInternal _RoutingSearchParameters_default_instance_
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull RoutingSearchParameters_class_data_
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 RoutingSearchParameters_ImprovementSearchLimitParametersDefaultTypeInternal _RoutingSearchParameters_ImprovementSearchLimitParameters_default_instance_
PROTOBUF_CONSTINITconst ::_pbi::DescriptorTable descriptor_table_ortools_2futil_2foptional_5fboolean_2eproto
PROTOBUF_CONSTINITconst ::_pbi::DescriptorTable descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fenums_2eproto
PROTOBUF_CONSTINITconst ::_pbi::DescriptorTable descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fheuristic_5fparameters_2eproto
PROTOBUF_CONSTINITconst ::_pbi::DescriptorTable descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fils_2eproto
PROTOBUF_CONSTINITconst ::_pbi::DescriptorTable descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto
static constexprconst ::_pb::ServiceDescriptor *PROTOBUF_NONNULL *PROTOBUF_NULLABLE file_level_service_descriptors_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto
static const ::_pbi::DescriptorTable *PROTOBUF_NONNULL const descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto_deps[7]
::absl::once_flag descriptor_table_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto_once
const ::uint32_t TableStruct_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto::offsets[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold)
static const ::_pb::EnumDescriptor *PROTOBUF_NONNULL file_level_enum_descriptors_ortools_2fconstraint_5fsolver_2frouting_5fparameters_2eproto[1]
PROTOBUF_CONSTINITconst ::_pbi::DescriptorTable descriptor_table_ortools_2fsat_2fsat_5fparameters_2eproto
PROTOBUF_CONSTINITconst ::_pbi::DescriptorTable descriptor_table_ortools_2fconstraint_5fsolver_2fsolver_5fparameters_2eproto