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