Google OR-Tools v9.14
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
solvers.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/pdlp/solvers.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 {
28namespace pdlp {
29
30inline constexpr TerminationCriteria_SimpleOptimalityCriteria::Impl_::Impl_(
31 ::_pbi::ConstantInitialized) noexcept
32 : _cached_size_{0},
33 eps_optimal_absolute_{1e-06},
34 eps_optimal_relative_{1e-06} {}
35
36template <typename>
38#if defined(PROTOBUF_CUSTOM_VTABLE)
39 : ::google::protobuf::Message(TerminationCriteria_SimpleOptimalityCriteria_class_data_.base()),
40#else // PROTOBUF_CUSTOM_VTABLE
41 : ::google::protobuf::Message(),
42#endif // PROTOBUF_CUSTOM_VTABLE
43 _impl_(::_pbi::ConstantInitialized()) {
44}
52
53PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
55
56inline constexpr TerminationCriteria_DetailedOptimalityCriteria::Impl_::Impl_(
57 ::_pbi::ConstantInitialized) noexcept
58 : _cached_size_{0},
59 eps_optimal_primal_residual_absolute_{1e-06},
60 eps_optimal_primal_residual_relative_{1e-06},
61 eps_optimal_dual_residual_absolute_{1e-06},
62 eps_optimal_dual_residual_relative_{1e-06},
63 eps_optimal_objective_gap_absolute_{1e-06},
64 eps_optimal_objective_gap_relative_{1e-06} {}
65
66template <typename>
68#if defined(PROTOBUF_CUSTOM_VTABLE)
69 : ::google::protobuf::Message(TerminationCriteria_DetailedOptimalityCriteria_class_data_.base()),
70#else // PROTOBUF_CUSTOM_VTABLE
71 : ::google::protobuf::Message(),
72#endif // PROTOBUF_CUSTOM_VTABLE
73 _impl_(::_pbi::ConstantInitialized()) {
74}
82
83PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
85
86inline constexpr MalitskyPockParams::Impl_::Impl_(
87 ::_pbi::ConstantInitialized) noexcept
88 : _cached_size_{0},
89 step_size_downscaling_factor_{0.7},
90 linesearch_contraction_factor_{0.99},
91 step_size_interpolation_{1} {}
92
93template <typename>
94PROTOBUF_CONSTEXPR MalitskyPockParams::MalitskyPockParams(::_pbi::ConstantInitialized)
95#if defined(PROTOBUF_CUSTOM_VTABLE)
96 : ::google::protobuf::Message(MalitskyPockParams_class_data_.base()),
97#else // PROTOBUF_CUSTOM_VTABLE
98 : ::google::protobuf::Message(),
99#endif // PROTOBUF_CUSTOM_VTABLE
100 _impl_(::_pbi::ConstantInitialized()) {
101}
109
110PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
112
113inline constexpr AdaptiveLinesearchParams::Impl_::Impl_(
114 ::_pbi::ConstantInitialized) noexcept
115 : _cached_size_{0},
116 step_size_reduction_exponent_{0.3},
117 step_size_growth_exponent_{0.6} {}
118
119template <typename>
120PROTOBUF_CONSTEXPR AdaptiveLinesearchParams::AdaptiveLinesearchParams(::_pbi::ConstantInitialized)
121#if defined(PROTOBUF_CUSTOM_VTABLE)
122 : ::google::protobuf::Message(AdaptiveLinesearchParams_class_data_.base()),
123#else // PROTOBUF_CUSTOM_VTABLE
124 : ::google::protobuf::Message(),
125#endif // PROTOBUF_CUSTOM_VTABLE
126 _impl_(::_pbi::ConstantInitialized()) {
127}
135
136PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
138
139inline constexpr TerminationCriteria::Impl_::Impl_(
140 ::_pbi::ConstantInitialized) noexcept
141 : _cached_size_{0},
142 eps_optimal_absolute_{1e-06},
143 eps_optimal_relative_{1e-06},
144 eps_primal_infeasible_{1e-08},
145 optimality_norm_{static_cast< ::operations_research::pdlp::OptimalityNorm >(2)},
146 iteration_limit_{2147483647},
147 eps_dual_infeasible_{1e-08},
148 time_sec_limit_{std::numeric_limits<double>::infinity()},
149 kkt_matrix_pass_limit_{std::numeric_limits<double>::infinity()},
150 optimality_criteria_{},
151 _oneof_case_{} {}
152
153template <typename>
154PROTOBUF_CONSTEXPR TerminationCriteria::TerminationCriteria(::_pbi::ConstantInitialized)
155#if defined(PROTOBUF_CUSTOM_VTABLE)
156 : ::google::protobuf::Message(TerminationCriteria_class_data_.base()),
157#else // PROTOBUF_CUSTOM_VTABLE
158 : ::google::protobuf::Message(),
159#endif // PROTOBUF_CUSTOM_VTABLE
160 _impl_(::_pbi::ConstantInitialized()) {
161}
169
170PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
172
173inline constexpr PrimalDualHybridGradientParams_PresolveOptions::Impl_::Impl_(
174 ::_pbi::ConstantInitialized) noexcept
175 : _cached_size_{0},
176 glop_parameters_{nullptr},
177 use_glop_{false} {}
178
179template <typename>
181#if defined(PROTOBUF_CUSTOM_VTABLE)
182 : ::google::protobuf::Message(PrimalDualHybridGradientParams_PresolveOptions_class_data_.base()),
183#else // PROTOBUF_CUSTOM_VTABLE
184 : ::google::protobuf::Message(),
185#endif // PROTOBUF_CUSTOM_VTABLE
186 _impl_(::_pbi::ConstantInitialized()) {
187}
195
196PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
198
199inline constexpr PrimalDualHybridGradientParams::Impl_::Impl_(
200 ::_pbi::ConstantInitialized) noexcept
201 : _cached_size_{0},
202 random_projection_seeds_{},
203 _random_projection_seeds_cached_byte_size_{0},
204 termination_criteria_{nullptr},
205 presolve_options_{nullptr},
206 adaptive_linesearch_parameters_{nullptr},
207 malitsky_pock_parameters_{nullptr},
208 initial_primal_weight_{0},
209 record_iteration_stats_{false},
210 use_diagonal_qp_trust_region_solver_{false},
211 use_feasibility_polishing_{false},
212 apply_feasibility_polishing_after_limits_reached_{false},
213 verbosity_level_{0},
214 num_shards_{0},
215 apply_feasibility_polishing_if_solver_is_interrupted_{false},
216 log_interval_seconds_{0},
217 num_threads_{1},
218 major_iteration_frequency_{64},
219 termination_check_frequency_{64},
221 primal_weight_update_smoothing_{0.5},
222 l_inf_ruiz_iterations_{5},
224 sufficient_reduction_for_restart_{0.1},
225 necessary_reduction_for_restart_{0.9},
226 infinite_constraint_bound_threshold_{std::numeric_limits<double>::infinity()},
227 l2_norm_rescaling_{true},
228 handle_some_primal_gradients_on_finite_bounds_as_residuals_{true},
229 scheduler_type_{static_cast< ::operations_research::pdlp::SchedulerType >(1)},
230 diagonal_qp_trust_region_solver_tolerance_{1e-08},
231 initial_step_size_scaling_{1} {}
232
233template <typename>
234PROTOBUF_CONSTEXPR PrimalDualHybridGradientParams::PrimalDualHybridGradientParams(::_pbi::ConstantInitialized)
235#if defined(PROTOBUF_CUSTOM_VTABLE)
236 : ::google::protobuf::Message(PrimalDualHybridGradientParams_class_data_.base()),
237#else // PROTOBUF_CUSTOM_VTABLE
238 : ::google::protobuf::Message(),
239#endif // PROTOBUF_CUSTOM_VTABLE
240 _impl_(::_pbi::ConstantInitialized()) {
241}
249
250PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL
252} // namespace pdlp
253} // namespace operations_research
254static const ::_pb::EnumDescriptor* PROTOBUF_NONNULL
256static constexpr const ::_pb::ServiceDescriptor *PROTOBUF_NONNULL *PROTOBUF_NULLABLE
258const ::uint32_t
260 protodesc_cold) = {
261 0x081, // bitmap
263 5, // hasbit index offset
264 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria_SimpleOptimalityCriteria, _impl_.eps_optimal_absolute_),
265 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria_SimpleOptimalityCriteria, _impl_.eps_optimal_relative_),
266 0,
267 1,
268 0x081, // bitmap
270 9, // hasbit index offset
271 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_primal_residual_absolute_),
272 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_primal_residual_relative_),
273 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_dual_residual_absolute_),
274 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_dual_residual_relative_),
275 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_objective_gap_absolute_),
276 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_objective_gap_relative_),
277 0,
278 1,
279 2,
280 3,
281 4,
282 5,
283 0x085, // bitmap
284 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_._has_bits_),
285 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_._oneof_case_[0]),
286 15, // hasbit index offset
287 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_.optimality_norm_),
288 ::_pbi::kInvalidFieldOffsetTag,
289 ::_pbi::kInvalidFieldOffsetTag,
290 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_.eps_optimal_absolute_),
291 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_.eps_optimal_relative_),
292 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_.eps_primal_infeasible_),
293 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_.eps_dual_infeasible_),
294 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_.time_sec_limit_),
295 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_.iteration_limit_),
296 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_.kkt_matrix_pass_limit_),
297 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_.optimality_criteria_),
298 3,
299 ~0u,
300 ~0u,
301 0,
302 1,
303 2,
304 5,
305 6,
306 4,
307 7,
308 0x081, // bitmap
309 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::AdaptiveLinesearchParams, _impl_._has_bits_),
310 5, // hasbit index offset
311 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::AdaptiveLinesearchParams, _impl_.step_size_reduction_exponent_),
312 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::AdaptiveLinesearchParams, _impl_.step_size_growth_exponent_),
313 0,
314 1,
315 0x081, // bitmap
316 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::MalitskyPockParams, _impl_._has_bits_),
317 6, // hasbit index offset
318 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::MalitskyPockParams, _impl_.step_size_downscaling_factor_),
319 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::MalitskyPockParams, _impl_.linesearch_contraction_factor_),
320 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::MalitskyPockParams, _impl_.step_size_interpolation_),
321 0,
322 1,
323 2,
324 0x081, // bitmap
326 5, // hasbit index offset
328 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams_PresolveOptions, _impl_.glop_parameters_),
329 1,
330 0,
331 0x081, // bitmap
332 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_._has_bits_),
333 32, // hasbit index offset
334 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.termination_criteria_),
335 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.num_threads_),
336 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.num_shards_),
337 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.scheduler_type_),
338 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.record_iteration_stats_),
339 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.verbosity_level_),
340 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.log_interval_seconds_),
341 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.major_iteration_frequency_),
342 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.termination_check_frequency_),
343 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.restart_strategy_),
344 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.primal_weight_update_smoothing_),
345 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.initial_primal_weight_),
346 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.presolve_options_),
347 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.l_inf_ruiz_iterations_),
348 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.l2_norm_rescaling_),
349 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.sufficient_reduction_for_restart_),
350 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.necessary_reduction_for_restart_),
351 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.linesearch_rule_),
352 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.adaptive_linesearch_parameters_),
353 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.malitsky_pock_parameters_),
354 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.initial_step_size_scaling_),
355 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.random_projection_seeds_),
356 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.infinite_constraint_bound_threshold_),
357 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.handle_some_primal_gradients_on_finite_bounds_as_residuals_),
358 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.use_diagonal_qp_trust_region_solver_),
359 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.diagonal_qp_trust_region_solver_tolerance_),
360 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.use_feasibility_polishing_),
361 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.apply_feasibility_polishing_after_limits_reached_),
362 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::PrimalDualHybridGradientParams, _impl_.apply_feasibility_polishing_if_solver_is_interrupted_),
363 0,
364 13,
365 10,
366 25,
367 5,
368 9,
369 12,
370 14,
371 15,
372 16,
373 17,
374 4,
375 1,
376 18,
377 23,
378 20,
379 21,
380 19,
381 2,
382 3,
383 27,
384 ~0u,
385 22,
386 24,
387 6,
388 26,
389 7,
390 8,
391 11,
392};
393
394static const ::_pbi::MigrationSchema
395 schemas[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
403};
413const char descriptor_table_protodef_ortools_2fpdlp_2fsolvers_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
414 protodesc_cold) = {
415 "\n\032ortools/pdlp/solvers.proto\022\030operations"
416 "_research.pdlp\032\035ortools/glop/parameters."
417 "proto\"\240\010\n\023TerminationCriteria\022U\n\017optimal"
418 "ity_norm\030\001 \001(\0162(.operations_research.pdl"
419 "p.OptimalityNorm:\022OPTIMALITY_NORM_L2\022l\n\032"
420 "simple_optimality_criteria\030\t \001(\0132F.opera"
421 "tions_research.pdlp.TerminationCriteria."
422 "SimpleOptimalityCriteriaH\000\022p\n\034detailed_o"
423 "ptimality_criteria\030\n \001(\0132H.operations_re"
424 "search.pdlp.TerminationCriteria.Detailed"
425 "OptimalityCriteriaH\000\022\'\n\024eps_optimal_abso"
426 "lute\030\002 \001(\001:\0051e-06B\002\030\001\022\'\n\024eps_optimal_rel"
427 "ative\030\003 \001(\001:\0051e-06B\002\030\001\022$\n\025eps_primal_inf"
428 "easible\030\004 \001(\001:\0051e-08\022\"\n\023eps_dual_infeasi"
429 "ble\030\005 \001(\001:\0051e-08\022\033\n\016time_sec_limit\030\006 \001(\001"
430 ":\003inf\022#\n\017iteration_limit\030\007 \001(\005:\n21474836"
431 "47\022\"\n\025kkt_matrix_pass_limit\030\010 \001(\001:\003inf\032d"
432 "\n\030SimpleOptimalityCriteria\022#\n\024eps_optima"
433 "l_absolute\030\001 \001(\001:\0051e-06\022#\n\024eps_optimal_r"
434 "elative\030\002 \001(\001:\0051e-06\032\322\002\n\032DetailedOptimal"
435 "ityCriteria\0223\n$eps_optimal_primal_residu"
436 "al_absolute\030\001 \001(\001:\0051e-06\0223\n$eps_optimal_"
437 "primal_residual_relative\030\002 \001(\001:\0051e-06\0221\n"
438 "\"eps_optimal_dual_residual_absolute\030\003 \001("
439 "\001:\0051e-06\0221\n\"eps_optimal_dual_residual_re"
440 "lative\030\004 \001(\001:\0051e-06\0221\n\"eps_optimal_objec"
441 "tive_gap_absolute\030\005 \001(\001:\0051e-06\0221\n\"eps_op"
442 "timal_objective_gap_relative\030\006 \001(\001:\0051e-0"
443 "6B\025\n\023optimality_criteria\"m\n\030AdaptiveLine"
444 "searchParams\022)\n\034step_size_reduction_expo"
445 "nent\030\001 \001(\001:\0030.3\022&\n\031step_size_growth_expo"
446 "nent\030\002 \001(\001:\0030.6\"\220\001\n\022MalitskyPockParams\022)"
447 "\n\034step_size_downscaling_factor\030\001 \001(\001:\0030."
448 "7\022+\n\035linesearch_contraction_factor\030\002 \001(\001"
449 ":\0040.99\022\"\n\027step_size_interpolation\030\003 \001(\001:"
450 "\0011\"\260\020\n\036PrimalDualHybridGradientParams\022K\n"
451 "\024termination_criteria\030\001 \001(\0132-.operations"
452 "_research.pdlp.TerminationCriteria\022\026\n\013nu"
453 "m_threads\030\002 \001(\005:\0011\022\025\n\nnum_shards\030\033 \001(\005:\001"
454 "0\022a\n\016scheduler_type\030 \001(\0162\'.operations_r"
455 "esearch.pdlp.SchedulerType: SCHEDULER_TY"
456 "PE_GOOGLE_THREADPOOL\022\036\n\026record_iteration"
457 "_stats\030\003 \001(\010\022\032\n\017verbosity_level\030\032 \001(\005:\0010"
458 "\022\037\n\024log_interval_seconds\030\037 \001(\001:\0010\022%\n\031maj"
459 "or_iteration_frequency\030\004 \001(\005:\00264\022\'\n\033term"
460 "ination_check_frequency\030\005 \001(\005:\00264\022v\n\020res"
461 "tart_strategy\030\006 \001(\0162H.operations_researc"
462 "h.pdlp.PrimalDualHybridGradientParams.Re"
463 "startStrategy:\022ADAPTIVE_HEURISTIC\022+\n\036pri"
464 "mal_weight_update_smoothing\030\007 \001(\001:\0030.5\022\035"
465 "\n\025initial_primal_weight\030\010 \001(\001\022b\n\020presolv"
466 "e_options\030\020 \001(\0132H.operations_research.pd"
467 "lp.PrimalDualHybridGradientParams.Presol"
468 "veOptions\022 \n\025l_inf_ruiz_iterations\030\t \001(\005"
469 ":\0015\022\037\n\021l2_norm_rescaling\030\n \001(\010:\004true\022-\n "
470 "sufficient_reduction_for_restart\030\013 \001(\001:\003"
471 "0.1\022,\n\037necessary_reduction_for_restart\030\021"
472 " \001(\001:\0030.9\022z\n\017linesearch_rule\030\014 \001(\0162G.ope"
473 "rations_research.pdlp.PrimalDualHybridGr"
474 "adientParams.LinesearchRule:\030ADAPTIVE_LI"
475 "NESEARCH_RULE\022Z\n\036adaptive_linesearch_par"
476 "ameters\030\022 \001(\01322.operations_research.pdlp"
477 ".AdaptiveLinesearchParams\022N\n\030malitsky_po"
478 "ck_parameters\030\023 \001(\0132,.operations_researc"
479 "h.pdlp.MalitskyPockParams\022$\n\031initial_ste"
480 "p_size_scaling\030\031 \001(\001:\0011\022#\n\027random_projec"
481 "tion_seeds\030\034 \003(\005B\002\020\001\0220\n#infinite_constra"
482 "int_bound_threshold\030\026 \001(\001:\003inf\022H\n:handle"
483 "_some_primal_gradients_on_finite_bounds_"
484 "as_residuals\030\035 \001(\010:\004true\0222\n#use_diagonal"
485 "_qp_trust_region_solver\030\027 \001(\010:\005false\0228\n)"
486 "diagonal_qp_trust_region_solver_toleranc"
487 "e\030\030 \001(\001:\0051e-08\022(\n\031use_feasibility_polish"
488 "ing\030\036 \001(\010:\005false\022\?\n0apply_feasibility_po"
489 "lishing_after_limits_reached\030! \001(\010:\005fals"
490 "e\022C\n4apply_feasibility_polishing_if_solv"
491 "er_is_interrupted\030\" \001(\010:\005false\032f\n\017Presol"
492 "veOptions\022\020\n\010use_glop\030\001 \001(\010\022A\n\017glop_para"
493 "meters\030\002 \001(\0132(.operations_research.glop."
494 "GlopParameters\"\224\001\n\017RestartStrategy\022 \n\034RE"
495 "START_STRATEGY_UNSPECIFIED\020\000\022\017\n\013NO_RESTA"
496 "RTS\020\001\022\031\n\025EVERY_MAJOR_ITERATION\020\002\022\026\n\022ADAP"
497 "TIVE_HEURISTIC\020\003\022\033\n\027ADAPTIVE_DISTANCE_BA"
498 "SED\020\004\"\217\001\n\016LinesearchRule\022\037\n\033LINESEARCH_R"
499 "ULE_UNSPECIFIED\020\000\022\034\n\030ADAPTIVE_LINESEARCH"
500 "_RULE\020\001\022!\n\035MALITSKY_POCK_LINESEARCH_RULE"
501 "\020\002\022\033\n\027CONSTANT_STEP_SIZE_RULE\020\003J\004\010\r\020\016J\004\010"
502 "\016\020\017J\004\010\017\020\020J\004\010\024\020\025J\004\010\025\020\026*\215\001\n\016OptimalityNorm"
503 "\022\037\n\033OPTIMALITY_NORM_UNSPECIFIED\020\000\022\031\n\025OPT"
504 "IMALITY_NORM_L_INF\020\001\022\026\n\022OPTIMALITY_NORM_"
505 "L2\020\002\022\'\n#OPTIMALITY_NORM_L_INF_COMPONENTW"
506 "ISE\020\003*z\n\rSchedulerType\022\036\n\032SCHEDULER_TYPE"
507 "_UNSPECIFIED\020\000\022$\n SCHEDULER_TYPE_GOOGLE_"
508 "THREADPOOL\020\001\022#\n\037SCHEDULER_TYPE_EIGEN_THR"
509 "EADPOOL\020\003B1\n\027com.google.ortools.pdlpP\001\252\002"
510 "\023Google.OrTools.PDLP"
511};
512static const ::_pbi::DescriptorTable* PROTOBUF_NONNULL const
517PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_ortools_2fpdlp_2fsolvers_2eproto = {
518 false,
519 false,
520 3820,
521 descriptor_table_protodef_ortools_2fpdlp_2fsolvers_2eproto,
522 "ortools/pdlp/solvers.proto",
525 1,
526 7,
527 schemas,
532};
533namespace operations_research {
534namespace pdlp {
535const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL PrimalDualHybridGradientParams_RestartStrategy_descriptor() {
536 ::google::protobuf::internal::AssignDescriptors(&descriptor_table_ortools_2fpdlp_2fsolvers_2eproto);
538}
540 327680u, 0u, };
541const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL PrimalDualHybridGradientParams_LinesearchRule_descriptor() {
542 ::google::protobuf::internal::AssignDescriptors(&descriptor_table_ortools_2fpdlp_2fsolvers_2eproto);
544}
546 262144u, 0u, };
547const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL OptimalityNorm_descriptor() {
548 ::google::protobuf::internal::AssignDescriptors(&descriptor_table_ortools_2fpdlp_2fsolvers_2eproto);
550}
551PROTOBUF_CONSTINIT const uint32_t OptimalityNorm_internal_data_[] = {
552 262144u, 0u, };
553const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL SchedulerType_descriptor() {
554 ::google::protobuf::internal::AssignDescriptors(&descriptor_table_ortools_2fpdlp_2fsolvers_2eproto);
556}
557PROTOBUF_CONSTINIT const uint32_t SchedulerType_internal_data_[] = {
558 131072u, 32u, 2u, };
559// ===================================================================
560
561class TerminationCriteria_SimpleOptimalityCriteria::_Internal {
562 public:
563 using HasBits =
564 decltype(::std::declval<TerminationCriteria_SimpleOptimalityCriteria>()._impl_._has_bits_);
565 static constexpr ::int32_t kHasBitsOffset =
566 8 * PROTOBUF_FIELD_OFFSET(TerminationCriteria_SimpleOptimalityCriteria, _impl_._has_bits_);
567};
568
570#if defined(PROTOBUF_CUSTOM_VTABLE)
571 : ::google::protobuf::Message(arena, TerminationCriteria_SimpleOptimalityCriteria_class_data_.base()) {
572#else // PROTOBUF_CUSTOM_VTABLE
573 : ::google::protobuf::Message(arena) {
574#endif // PROTOBUF_CUSTOM_VTABLE
575 SharedCtor(arena);
576 // @@protoc_insertion_point(arena_constructor:operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria)
577}
579 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TerminationCriteria_SimpleOptimalityCriteria& from)
580#if defined(PROTOBUF_CUSTOM_VTABLE)
581 : ::google::protobuf::Message(arena, TerminationCriteria_SimpleOptimalityCriteria_class_data_.base()),
582#else // PROTOBUF_CUSTOM_VTABLE
583 : ::google::protobuf::Message(arena),
584#endif // PROTOBUF_CUSTOM_VTABLE
585 _impl_(from._impl_) {
586 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
587 from._internal_metadata_);
588}
589PROTOBUF_NDEBUG_INLINE TerminationCriteria_SimpleOptimalityCriteria::Impl_::Impl_(
590 ::google::protobuf::internal::InternalVisibility visibility,
591 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
592 : _cached_size_{0},
593 eps_optimal_absolute_{1e-06},
594 eps_optimal_relative_{1e-06} {}
595
596inline void TerminationCriteria_SimpleOptimalityCriteria::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
597 new (&_impl_) Impl_(internal_visibility(), arena);
598}
600 // @@protoc_insertion_point(destructor:operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria)
601 SharedDtor(*this);
602}
603inline void TerminationCriteria_SimpleOptimalityCriteria::SharedDtor(MessageLite& self) {
605 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
606 ABSL_DCHECK(this_.GetArena() == nullptr);
607 this_._impl_.~Impl_();
608}
609
611 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
612 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
613 return ::new (mem) TerminationCriteria_SimpleOptimalityCriteria(arena);
614}
616 return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(TerminationCriteria_SimpleOptimalityCriteria),
618}
620 return ::google::protobuf::internal::ClassDataFull{
621 ::google::protobuf::internal::ClassData{
623 &_table_.header,
624 nullptr, // OnDemandRegisterArenaDtor
625 nullptr, // IsInitialized
626 &TerminationCriteria_SimpleOptimalityCriteria::MergeImpl,
627 ::google::protobuf::Message::GetNewImpl<TerminationCriteria_SimpleOptimalityCriteria>(),
628#if defined(PROTOBUF_CUSTOM_VTABLE)
629 &TerminationCriteria_SimpleOptimalityCriteria::SharedDtor,
630 ::google::protobuf::Message::GetClearImpl<TerminationCriteria_SimpleOptimalityCriteria>(), &TerminationCriteria_SimpleOptimalityCriteria::ByteSizeLong,
632#endif // PROTOBUF_CUSTOM_VTABLE
633 PROTOBUF_FIELD_OFFSET(TerminationCriteria_SimpleOptimalityCriteria, _impl_._cached_size_),
634 false,
635 },
636 &TerminationCriteria_SimpleOptimalityCriteria::kDescriptorMethods,
638 nullptr, // tracker
639 };
640}
641
642PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
643 ::google::protobuf::internal::ClassDataFull TerminationCriteria_SimpleOptimalityCriteria_class_data_ =
645
646PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
648 ::google::protobuf::internal::PrefetchToLocalCache(&TerminationCriteria_SimpleOptimalityCriteria_class_data_);
649 ::google::protobuf::internal::PrefetchToLocalCache(TerminationCriteria_SimpleOptimalityCriteria_class_data_.tc_table);
651}
652PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
653const ::_pbi::TcParseTable<1, 2, 0, 0, 2>
654TerminationCriteria_SimpleOptimalityCriteria::_table_ = {
655 {
656 PROTOBUF_FIELD_OFFSET(TerminationCriteria_SimpleOptimalityCriteria, _impl_._has_bits_),
657 0, // no _extensions_
658 2, 8, // max_field_number, fast_idx_mask
659 offsetof(decltype(_table_), field_lookup_table),
660 4294967292, // skipmap
661 offsetof(decltype(_table_), field_entries),
662 2, // num_field_entries
663 0, // num_aux_entries
664 offsetof(decltype(_table_), field_names), // no aux_entries
666 nullptr, // post_loop_handler
667 ::_pbi::TcParser::GenericFallback, // fallback
668 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
669 ::_pbi::TcParser::GetTable<::operations_research::pdlp::TerminationCriteria_SimpleOptimalityCriteria>(), // to_prefetch
670 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
671 }, {{
672 // optional double eps_optimal_relative = 2 [default = 1e-06];
673 {::_pbi::TcParser::FastF64S1,
674 {17, 1, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria_SimpleOptimalityCriteria, _impl_.eps_optimal_relative_)}},
675 // optional double eps_optimal_absolute = 1 [default = 1e-06];
676 {::_pbi::TcParser::FastF64S1,
677 {9, 0, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria_SimpleOptimalityCriteria, _impl_.eps_optimal_absolute_)}},
678 }}, {{
679 65535, 65535
680 }}, {{
681 // optional double eps_optimal_absolute = 1 [default = 1e-06];
682 {PROTOBUF_FIELD_OFFSET(TerminationCriteria_SimpleOptimalityCriteria, _impl_.eps_optimal_absolute_), _Internal::kHasBitsOffset + 0, 0,
683 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
684 // optional double eps_optimal_relative = 2 [default = 1e-06];
685 {PROTOBUF_FIELD_OFFSET(TerminationCriteria_SimpleOptimalityCriteria, _impl_.eps_optimal_relative_), _Internal::kHasBitsOffset + 1, 0,
686 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
687 }},
688 // no aux_entries
689 {{
690 }},
691};
693// @@protoc_insertion_point(message_clear_start:operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria)
694 ::google::protobuf::internal::TSanWrite(&_impl_);
695 ::uint32_t cached_has_bits = 0;
696 // Prevent compiler warnings about cached_has_bits being unused
697 (void) cached_has_bits;
698
699 cached_has_bits = _impl_._has_bits_[0];
700 if ((cached_has_bits & 0x00000003u) != 0) {
701 _impl_.eps_optimal_absolute_ = 1e-06;
702 _impl_.eps_optimal_relative_ = 1e-06;
703 }
704 _impl_._has_bits_.Clear();
705 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
706}
707
708#if defined(PROTOBUF_CUSTOM_VTABLE)
710 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
711 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
713#else // PROTOBUF_CUSTOM_VTABLE
715 ::uint8_t* PROTOBUF_NONNULL target,
716 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
718#endif // PROTOBUF_CUSTOM_VTABLE
719 // @@protoc_insertion_point(serialize_to_array_start:operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria)
720 ::uint32_t cached_has_bits = 0;
721 (void)cached_has_bits;
722
723 cached_has_bits = this_._impl_._has_bits_[0];
724 // optional double eps_optimal_absolute = 1 [default = 1e-06];
725 if ((cached_has_bits & 0x00000001u) != 0) {
726 target = stream->EnsureSpace(target);
727 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
728 1, this_._internal_eps_optimal_absolute(), target);
729 }
730
731 // optional double eps_optimal_relative = 2 [default = 1e-06];
732 if ((cached_has_bits & 0x00000002u) != 0) {
733 target = stream->EnsureSpace(target);
734 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
735 2, this_._internal_eps_optimal_relative(), target);
736 }
737
738 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
739 target =
740 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
741 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
742 }
743 // @@protoc_insertion_point(serialize_to_array_end:operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria)
744 return target;
745}
746
747#if defined(PROTOBUF_CUSTOM_VTABLE)
750#else // PROTOBUF_CUSTOM_VTABLE
753#endif // PROTOBUF_CUSTOM_VTABLE
754 // @@protoc_insertion_point(message_byte_size_start:operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria)
755 ::size_t total_size = 0;
756
757 ::uint32_t cached_has_bits = 0;
758 // Prevent compiler warnings about cached_has_bits being unused
759 (void)cached_has_bits;
760
761 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
762 cached_has_bits = this_._impl_._has_bits_[0];
763 total_size += ::absl::popcount(0x00000003u & cached_has_bits) * 9;
764 return this_.MaybeComputeUnknownFieldsSize(total_size,
765 &this_._impl_._cached_size_);
766}
767
768void TerminationCriteria_SimpleOptimalityCriteria::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
769 auto* const _this = static_cast<TerminationCriteria_SimpleOptimalityCriteria*>(&to_msg);
770 auto& from = static_cast<const TerminationCriteria_SimpleOptimalityCriteria&>(from_msg);
771 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria)
772 ABSL_DCHECK_NE(&from, _this);
773 ::uint32_t cached_has_bits = 0;
774 (void) cached_has_bits;
775
776 cached_has_bits = from._impl_._has_bits_[0];
777 if ((cached_has_bits & 0x00000003u) != 0) {
778 if ((cached_has_bits & 0x00000001u) != 0) {
779 _this->_impl_.eps_optimal_absolute_ = from._impl_.eps_optimal_absolute_;
780 }
781 if ((cached_has_bits & 0x00000002u) != 0) {
782 _this->_impl_.eps_optimal_relative_ = from._impl_.eps_optimal_relative_;
783 }
784 }
785 _this->_impl_._has_bits_[0] |= cached_has_bits;
786 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
787}
788
790// @@protoc_insertion_point(class_specific_copy_from_start:operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria)
791 if (&from == this) return;
792 Clear();
793 MergeFrom(from);
794}
795
796
797void TerminationCriteria_SimpleOptimalityCriteria::InternalSwap(TerminationCriteria_SimpleOptimalityCriteria* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
798 using ::std::swap;
799 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
800 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
801 ::google::protobuf::internal::memswap<
802 PROTOBUF_FIELD_OFFSET(TerminationCriteria_SimpleOptimalityCriteria, _impl_.eps_optimal_relative_)
803 + sizeof(TerminationCriteria_SimpleOptimalityCriteria::_impl_.eps_optimal_relative_)
804 - PROTOBUF_FIELD_OFFSET(TerminationCriteria_SimpleOptimalityCriteria, _impl_.eps_optimal_absolute_)>(
805 reinterpret_cast<char*>(&_impl_.eps_optimal_absolute_),
806 reinterpret_cast<char*>(&other->_impl_.eps_optimal_absolute_));
807}
808
809::google::protobuf::Metadata TerminationCriteria_SimpleOptimalityCriteria::GetMetadata() const {
810 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
811}
812// ===================================================================
813
815 public:
816 using HasBits =
817 decltype(::std::declval<TerminationCriteria_DetailedOptimalityCriteria>()._impl_._has_bits_);
818 static constexpr ::int32_t kHasBitsOffset =
819 8 * PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_._has_bits_);
821
823#if defined(PROTOBUF_CUSTOM_VTABLE)
824 : ::google::protobuf::Message(arena, TerminationCriteria_DetailedOptimalityCriteria_class_data_.base()) {
825#else // PROTOBUF_CUSTOM_VTABLE
826 : ::google::protobuf::Message(arena) {
827#endif // PROTOBUF_CUSTOM_VTABLE
828 SharedCtor(arena);
829 // @@protoc_insertion_point(arena_constructor:operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria)
830}
832 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const TerminationCriteria_DetailedOptimalityCriteria& from)
833#if defined(PROTOBUF_CUSTOM_VTABLE)
834 : ::google::protobuf::Message(arena, TerminationCriteria_DetailedOptimalityCriteria_class_data_.base()),
835#else // PROTOBUF_CUSTOM_VTABLE
836 : ::google::protobuf::Message(arena),
837#endif // PROTOBUF_CUSTOM_VTABLE
838 _impl_(from._impl_) {
839 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
840 from._internal_metadata_);
841}
842PROTOBUF_NDEBUG_INLINE TerminationCriteria_DetailedOptimalityCriteria::Impl_::Impl_(
843 ::google::protobuf::internal::InternalVisibility visibility,
844 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
845 : _cached_size_{0},
846 eps_optimal_primal_residual_absolute_{1e-06},
847 eps_optimal_primal_residual_relative_{1e-06},
848 eps_optimal_dual_residual_absolute_{1e-06},
849 eps_optimal_dual_residual_relative_{1e-06},
850 eps_optimal_objective_gap_absolute_{1e-06},
851 eps_optimal_objective_gap_relative_{1e-06} {}
852
853inline void TerminationCriteria_DetailedOptimalityCriteria::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
854 new (&_impl_) Impl_(internal_visibility(), arena);
855}
857 // @@protoc_insertion_point(destructor:operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria)
858 SharedDtor(*this);
859}
860inline void TerminationCriteria_DetailedOptimalityCriteria::SharedDtor(MessageLite& self) {
862 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
863 ABSL_DCHECK(this_.GetArena() == nullptr);
864 this_._impl_.~Impl_();
865}
866
868 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
869 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
870 return ::new (mem) TerminationCriteria_DetailedOptimalityCriteria(arena);
871}
873 return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(TerminationCriteria_DetailedOptimalityCriteria),
875}
877 return ::google::protobuf::internal::ClassDataFull{
878 ::google::protobuf::internal::ClassData{
880 &_table_.header,
881 nullptr, // OnDemandRegisterArenaDtor
882 nullptr, // IsInitialized
883 &TerminationCriteria_DetailedOptimalityCriteria::MergeImpl,
884 ::google::protobuf::Message::GetNewImpl<TerminationCriteria_DetailedOptimalityCriteria>(),
885#if defined(PROTOBUF_CUSTOM_VTABLE)
886 &TerminationCriteria_DetailedOptimalityCriteria::SharedDtor,
887 ::google::protobuf::Message::GetClearImpl<TerminationCriteria_DetailedOptimalityCriteria>(), &TerminationCriteria_DetailedOptimalityCriteria::ByteSizeLong,
889#endif // PROTOBUF_CUSTOM_VTABLE
890 PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_._cached_size_),
891 false,
892 },
893 &TerminationCriteria_DetailedOptimalityCriteria::kDescriptorMethods,
895 nullptr, // tracker
896 };
897}
898
899PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
900 ::google::protobuf::internal::ClassDataFull TerminationCriteria_DetailedOptimalityCriteria_class_data_ =
903PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
905 ::google::protobuf::internal::PrefetchToLocalCache(&TerminationCriteria_DetailedOptimalityCriteria_class_data_);
906 ::google::protobuf::internal::PrefetchToLocalCache(TerminationCriteria_DetailedOptimalityCriteria_class_data_.tc_table);
908}
909PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
910const ::_pbi::TcParseTable<3, 6, 0, 0, 2>
911TerminationCriteria_DetailedOptimalityCriteria::_table_ = {
912 {
913 PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_._has_bits_),
914 0, // no _extensions_
915 6, 56, // max_field_number, fast_idx_mask
916 offsetof(decltype(_table_), field_lookup_table),
917 4294967232, // skipmap
918 offsetof(decltype(_table_), field_entries),
919 6, // num_field_entries
920 0, // num_aux_entries
921 offsetof(decltype(_table_), field_names), // no aux_entries
923 nullptr, // post_loop_handler
924 ::_pbi::TcParser::GenericFallback, // fallback
925 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
926 ::_pbi::TcParser::GetTable<::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria>(), // to_prefetch
927 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
928 }, {{
929 {::_pbi::TcParser::MiniParse, {}},
930 // optional double eps_optimal_primal_residual_absolute = 1 [default = 1e-06];
931 {::_pbi::TcParser::FastF64S1,
932 {9, 0, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_primal_residual_absolute_)}},
933 // optional double eps_optimal_primal_residual_relative = 2 [default = 1e-06];
934 {::_pbi::TcParser::FastF64S1,
935 {17, 1, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_primal_residual_relative_)}},
936 // optional double eps_optimal_dual_residual_absolute = 3 [default = 1e-06];
937 {::_pbi::TcParser::FastF64S1,
938 {25, 2, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_dual_residual_absolute_)}},
939 // optional double eps_optimal_dual_residual_relative = 4 [default = 1e-06];
940 {::_pbi::TcParser::FastF64S1,
941 {33, 3, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_dual_residual_relative_)}},
942 // optional double eps_optimal_objective_gap_absolute = 5 [default = 1e-06];
943 {::_pbi::TcParser::FastF64S1,
944 {41, 4, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_objective_gap_absolute_)}},
945 // optional double eps_optimal_objective_gap_relative = 6 [default = 1e-06];
946 {::_pbi::TcParser::FastF64S1,
947 {49, 5, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_objective_gap_relative_)}},
948 {::_pbi::TcParser::MiniParse, {}},
949 }}, {{
950 65535, 65535
951 }}, {{
952 // optional double eps_optimal_primal_residual_absolute = 1 [default = 1e-06];
953 {PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_primal_residual_absolute_), _Internal::kHasBitsOffset + 0, 0,
954 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
955 // optional double eps_optimal_primal_residual_relative = 2 [default = 1e-06];
956 {PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_primal_residual_relative_), _Internal::kHasBitsOffset + 1, 0,
957 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
958 // optional double eps_optimal_dual_residual_absolute = 3 [default = 1e-06];
959 {PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_dual_residual_absolute_), _Internal::kHasBitsOffset + 2, 0,
960 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
961 // optional double eps_optimal_dual_residual_relative = 4 [default = 1e-06];
962 {PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_dual_residual_relative_), _Internal::kHasBitsOffset + 3, 0,
963 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
964 // optional double eps_optimal_objective_gap_absolute = 5 [default = 1e-06];
965 {PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_objective_gap_absolute_), _Internal::kHasBitsOffset + 4, 0,
966 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
967 // optional double eps_optimal_objective_gap_relative = 6 [default = 1e-06];
968 {PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_objective_gap_relative_), _Internal::kHasBitsOffset + 5, 0,
969 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
970 }},
971 // no aux_entries
972 {{
973 }},
974};
976// @@protoc_insertion_point(message_clear_start:operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria)
977 ::google::protobuf::internal::TSanWrite(&_impl_);
978 ::uint32_t cached_has_bits = 0;
979 // Prevent compiler warnings about cached_has_bits being unused
980 (void) cached_has_bits;
981
982 cached_has_bits = _impl_._has_bits_[0];
983 if ((cached_has_bits & 0x0000003fu) != 0) {
984 _impl_.eps_optimal_primal_residual_absolute_ = 1e-06;
985 _impl_.eps_optimal_primal_residual_relative_ = 1e-06;
986 _impl_.eps_optimal_dual_residual_absolute_ = 1e-06;
987 _impl_.eps_optimal_dual_residual_relative_ = 1e-06;
988 _impl_.eps_optimal_objective_gap_absolute_ = 1e-06;
989 _impl_.eps_optimal_objective_gap_relative_ = 1e-06;
990 }
991 _impl_._has_bits_.Clear();
992 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
993}
994
995#if defined(PROTOBUF_CUSTOM_VTABLE)
997 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
998 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
1000#else // PROTOBUF_CUSTOM_VTABLE
1002 ::uint8_t* PROTOBUF_NONNULL target,
1003 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
1005#endif // PROTOBUF_CUSTOM_VTABLE
1006 // @@protoc_insertion_point(serialize_to_array_start:operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria)
1007 ::uint32_t cached_has_bits = 0;
1008 (void)cached_has_bits;
1009
1010 cached_has_bits = this_._impl_._has_bits_[0];
1011 // optional double eps_optimal_primal_residual_absolute = 1 [default = 1e-06];
1012 if ((cached_has_bits & 0x00000001u) != 0) {
1013 target = stream->EnsureSpace(target);
1014 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1015 1, this_._internal_eps_optimal_primal_residual_absolute(), target);
1016 }
1017
1018 // optional double eps_optimal_primal_residual_relative = 2 [default = 1e-06];
1019 if ((cached_has_bits & 0x00000002u) != 0) {
1020 target = stream->EnsureSpace(target);
1021 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1022 2, this_._internal_eps_optimal_primal_residual_relative(), target);
1023 }
1024
1025 // optional double eps_optimal_dual_residual_absolute = 3 [default = 1e-06];
1026 if ((cached_has_bits & 0x00000004u) != 0) {
1027 target = stream->EnsureSpace(target);
1028 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1029 3, this_._internal_eps_optimal_dual_residual_absolute(), target);
1030 }
1031
1032 // optional double eps_optimal_dual_residual_relative = 4 [default = 1e-06];
1033 if ((cached_has_bits & 0x00000008u) != 0) {
1034 target = stream->EnsureSpace(target);
1035 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1036 4, this_._internal_eps_optimal_dual_residual_relative(), target);
1037 }
1038
1039 // optional double eps_optimal_objective_gap_absolute = 5 [default = 1e-06];
1040 if ((cached_has_bits & 0x00000010u) != 0) {
1041 target = stream->EnsureSpace(target);
1042 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1043 5, this_._internal_eps_optimal_objective_gap_absolute(), target);
1044 }
1045
1046 // optional double eps_optimal_objective_gap_relative = 6 [default = 1e-06];
1047 if ((cached_has_bits & 0x00000020u) != 0) {
1048 target = stream->EnsureSpace(target);
1049 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1050 6, this_._internal_eps_optimal_objective_gap_relative(), target);
1051 }
1052
1053 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
1054 target =
1055 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
1056 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
1057 }
1058 // @@protoc_insertion_point(serialize_to_array_end:operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria)
1059 return target;
1060}
1061
1062#if defined(PROTOBUF_CUSTOM_VTABLE)
1065#else // PROTOBUF_CUSTOM_VTABLE
1068#endif // PROTOBUF_CUSTOM_VTABLE
1069 // @@protoc_insertion_point(message_byte_size_start:operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria)
1070 ::size_t total_size = 0;
1071
1072 ::uint32_t cached_has_bits = 0;
1073 // Prevent compiler warnings about cached_has_bits being unused
1074 (void)cached_has_bits;
1075
1076 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
1077 cached_has_bits = this_._impl_._has_bits_[0];
1078 total_size += ::absl::popcount(0x0000003fu & cached_has_bits) * 9;
1079 return this_.MaybeComputeUnknownFieldsSize(total_size,
1080 &this_._impl_._cached_size_);
1081}
1082
1083void TerminationCriteria_DetailedOptimalityCriteria::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
1084 auto* const _this = static_cast<TerminationCriteria_DetailedOptimalityCriteria*>(&to_msg);
1085 auto& from = static_cast<const TerminationCriteria_DetailedOptimalityCriteria&>(from_msg);
1086 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria)
1087 ABSL_DCHECK_NE(&from, _this);
1088 ::uint32_t cached_has_bits = 0;
1089 (void) cached_has_bits;
1090
1091 cached_has_bits = from._impl_._has_bits_[0];
1092 if ((cached_has_bits & 0x0000003fu) != 0) {
1093 if ((cached_has_bits & 0x00000001u) != 0) {
1094 _this->_impl_.eps_optimal_primal_residual_absolute_ = from._impl_.eps_optimal_primal_residual_absolute_;
1095 }
1096 if ((cached_has_bits & 0x00000002u) != 0) {
1097 _this->_impl_.eps_optimal_primal_residual_relative_ = from._impl_.eps_optimal_primal_residual_relative_;
1098 }
1099 if ((cached_has_bits & 0x00000004u) != 0) {
1100 _this->_impl_.eps_optimal_dual_residual_absolute_ = from._impl_.eps_optimal_dual_residual_absolute_;
1101 }
1102 if ((cached_has_bits & 0x00000008u) != 0) {
1103 _this->_impl_.eps_optimal_dual_residual_relative_ = from._impl_.eps_optimal_dual_residual_relative_;
1104 }
1105 if ((cached_has_bits & 0x00000010u) != 0) {
1106 _this->_impl_.eps_optimal_objective_gap_absolute_ = from._impl_.eps_optimal_objective_gap_absolute_;
1107 }
1108 if ((cached_has_bits & 0x00000020u) != 0) {
1109 _this->_impl_.eps_optimal_objective_gap_relative_ = from._impl_.eps_optimal_objective_gap_relative_;
1110 }
1111 }
1112 _this->_impl_._has_bits_[0] |= cached_has_bits;
1113 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
1114}
1115
1117// @@protoc_insertion_point(class_specific_copy_from_start:operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria)
1118 if (&from == this) return;
1119 Clear();
1120 MergeFrom(from);
1121}
1122
1123
1124void TerminationCriteria_DetailedOptimalityCriteria::InternalSwap(TerminationCriteria_DetailedOptimalityCriteria* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
1125 using ::std::swap;
1126 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
1127 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
1128 ::google::protobuf::internal::memswap<
1129 PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_objective_gap_relative_)
1130 + sizeof(TerminationCriteria_DetailedOptimalityCriteria::_impl_.eps_optimal_objective_gap_relative_)
1131 - PROTOBUF_FIELD_OFFSET(TerminationCriteria_DetailedOptimalityCriteria, _impl_.eps_optimal_primal_residual_absolute_)>(
1132 reinterpret_cast<char*>(&_impl_.eps_optimal_primal_residual_absolute_),
1133 reinterpret_cast<char*>(&other->_impl_.eps_optimal_primal_residual_absolute_));
1134}
1135
1136::google::protobuf::Metadata TerminationCriteria_DetailedOptimalityCriteria::GetMetadata() const {
1137 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
1139// ===================================================================
1140
1142 public:
1143 using HasBits =
1144 decltype(::std::declval<TerminationCriteria>()._impl_._has_bits_);
1145 static constexpr ::int32_t kHasBitsOffset =
1146 8 * PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_._has_bits_);
1147 static constexpr ::int32_t kOneofCaseOffset =
1148 PROTOBUF_FIELD_OFFSET(::operations_research::pdlp::TerminationCriteria, _impl_._oneof_case_);
1149};
1152 ::google::protobuf::Arena* message_arena = GetArena();
1155 ::google::protobuf::Arena* submessage_arena = simple_optimality_criteria->GetArena();
1156 if (message_arena != submessage_arena) {
1157 simple_optimality_criteria = ::google::protobuf::internal::GetOwnedMessage(message_arena, simple_optimality_criteria, submessage_arena);
1158 }
1159 set_has_simple_optimality_criteria();
1160 _impl_.optimality_criteria_.simple_optimality_criteria_ = simple_optimality_criteria;
1161 }
1162 // @@protoc_insertion_point(field_set_allocated:operations_research.pdlp.TerminationCriteria.simple_optimality_criteria)
1163}
1165 ::google::protobuf::Arena* message_arena = GetArena();
1166 clear_optimality_criteria();
1168 ::google::protobuf::Arena* submessage_arena = detailed_optimality_criteria->GetArena();
1169 if (message_arena != submessage_arena) {
1170 detailed_optimality_criteria = ::google::protobuf::internal::GetOwnedMessage(message_arena, detailed_optimality_criteria, submessage_arena);
1171 }
1172 set_has_detailed_optimality_criteria();
1173 _impl_.optimality_criteria_.detailed_optimality_criteria_ = detailed_optimality_criteria;
1174 }
1175 // @@protoc_insertion_point(field_set_allocated:operations_research.pdlp.TerminationCriteria.detailed_optimality_criteria)
1176}
1177TerminationCriteria::TerminationCriteria(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
1178#if defined(PROTOBUF_CUSTOM_VTABLE)
1179 : ::google::protobuf::Message(arena, TerminationCriteria_class_data_.base()) {
1180#else // PROTOBUF_CUSTOM_VTABLE
1181 : ::google::protobuf::Message(arena) {
1182#endif // PROTOBUF_CUSTOM_VTABLE
1183 SharedCtor(arena);
1184 // @@protoc_insertion_point(arena_constructor:operations_research.pdlp.TerminationCriteria)
1185}
1186PROTOBUF_NDEBUG_INLINE TerminationCriteria::Impl_::Impl_(
1187 ::google::protobuf::internal::InternalVisibility visibility,
1188 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
1189 const ::operations_research::pdlp::TerminationCriteria& from_msg)
1190 : _has_bits_{from._has_bits_},
1191 _cached_size_{0},
1192 optimality_criteria_{},
1193 _oneof_case_{from._oneof_case_[0]} {}
1194
1196 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
1197 const TerminationCriteria& from)
1198#if defined(PROTOBUF_CUSTOM_VTABLE)
1199 : ::google::protobuf::Message(arena, TerminationCriteria_class_data_.base()) {
1200#else // PROTOBUF_CUSTOM_VTABLE
1201 : ::google::protobuf::Message(arena) {
1202#endif // PROTOBUF_CUSTOM_VTABLE
1203 TerminationCriteria* const _this = this;
1204 (void)_this;
1205 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
1206 from._internal_metadata_);
1207 new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
1208 ::memcpy(reinterpret_cast<char *>(&_impl_) +
1209 offsetof(Impl_, eps_optimal_absolute_),
1210 reinterpret_cast<const char *>(&from._impl_) +
1211 offsetof(Impl_, eps_optimal_absolute_),
1212 offsetof(Impl_, kkt_matrix_pass_limit_) -
1213 offsetof(Impl_, eps_optimal_absolute_) +
1214 sizeof(Impl_::kkt_matrix_pass_limit_));
1215 switch (optimality_criteria_case()) {
1217 break;
1219 _impl_.optimality_criteria_.simple_optimality_criteria_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.optimality_criteria_.simple_optimality_criteria_);
1220 break;
1222 _impl_.optimality_criteria_.detailed_optimality_criteria_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.optimality_criteria_.detailed_optimality_criteria_);
1223 break;
1224 }
1225
1226 // @@protoc_insertion_point(copy_constructor:operations_research.pdlp.TerminationCriteria)
1227}
1228PROTOBUF_NDEBUG_INLINE TerminationCriteria::Impl_::Impl_(
1229 ::google::protobuf::internal::InternalVisibility visibility,
1230 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
1231 : _cached_size_{0},
1232 eps_optimal_absolute_{1e-06},
1233 eps_optimal_relative_{1e-06},
1234 eps_primal_infeasible_{1e-08},
1235 optimality_norm_{static_cast< ::operations_research::pdlp::OptimalityNorm >(2)},
1236 iteration_limit_{2147483647},
1237 eps_dual_infeasible_{1e-08},
1238 time_sec_limit_{std::numeric_limits<double>::infinity()},
1239 kkt_matrix_pass_limit_{std::numeric_limits<double>::infinity()},
1240 optimality_criteria_{},
1241 _oneof_case_{} {}
1242
1243inline void TerminationCriteria::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
1244 new (&_impl_) Impl_(internal_visibility(), arena);
1245}
1247 // @@protoc_insertion_point(destructor:operations_research.pdlp.TerminationCriteria)
1248 SharedDtor(*this);
1250inline void TerminationCriteria::SharedDtor(MessageLite& self) {
1251 TerminationCriteria& this_ = static_cast<TerminationCriteria&>(self);
1252 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
1253 ABSL_DCHECK(this_.GetArena() == nullptr);
1254 if (this_.has_optimality_criteria()) {
1256 }
1257 this_._impl_.~Impl_();
1258}
1259
1261// @@protoc_insertion_point(one_of_clear_start:operations_research.pdlp.TerminationCriteria)
1262 ::google::protobuf::internal::TSanWrite(&_impl_);
1265 if (GetArena() == nullptr) {
1266 delete _impl_.optimality_criteria_.simple_optimality_criteria_;
1267 } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
1268 ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.optimality_criteria_.simple_optimality_criteria_);
1269 }
1270 break;
1271 }
1273 if (GetArena() == nullptr) {
1274 delete _impl_.optimality_criteria_.detailed_optimality_criteria_;
1275 } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
1276 ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.optimality_criteria_.detailed_optimality_criteria_);
1277 }
1278 break;
1279 }
1281 break;
1282 }
1283 }
1284 _impl_._oneof_case_[0] = OPTIMALITY_CRITERIA_NOT_SET;
1285}
1286
1287
1288inline void* PROTOBUF_NONNULL TerminationCriteria::PlacementNew_(
1289 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
1290 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
1291 return ::new (mem) TerminationCriteria(arena);
1292}
1294 return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(TerminationCriteria),
1295 alignof(TerminationCriteria));
1298 return ::google::protobuf::internal::ClassDataFull{
1299 ::google::protobuf::internal::ClassData{
1301 &_table_.header,
1302 nullptr, // OnDemandRegisterArenaDtor
1303 nullptr, // IsInitialized
1304 &TerminationCriteria::MergeImpl,
1305 ::google::protobuf::Message::GetNewImpl<TerminationCriteria>(),
1306#if defined(PROTOBUF_CUSTOM_VTABLE)
1307 &TerminationCriteria::SharedDtor,
1308 ::google::protobuf::Message::GetClearImpl<TerminationCriteria>(), &TerminationCriteria::ByteSizeLong,
1310#endif // PROTOBUF_CUSTOM_VTABLE
1311 PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_._cached_size_),
1312 false,
1313 },
1314 &TerminationCriteria::kDescriptorMethods,
1316 nullptr, // tracker
1317 };
1318}
1319
1320PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
1321 ::google::protobuf::internal::ClassDataFull TerminationCriteria_class_data_ =
1323
1324PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
1326 ::google::protobuf::internal::PrefetchToLocalCache(&TerminationCriteria_class_data_);
1327 ::google::protobuf::internal::PrefetchToLocalCache(TerminationCriteria_class_data_.tc_table);
1329}
1330PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
1331const ::_pbi::TcParseTable<3, 10, 3, 0, 2>
1332TerminationCriteria::_table_ = {
1333 {
1334 PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_._has_bits_),
1335 0, // no _extensions_
1336 10, 56, // max_field_number, fast_idx_mask
1337 offsetof(decltype(_table_), field_lookup_table),
1338 4294966272, // skipmap
1339 offsetof(decltype(_table_), field_entries),
1340 10, // num_field_entries
1341 3, // num_aux_entries
1342 offsetof(decltype(_table_), aux_entries),
1344 nullptr, // post_loop_handler
1345 ::_pbi::TcParser::GenericFallback, // fallback
1346 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
1347 ::_pbi::TcParser::GetTable<::operations_research::pdlp::TerminationCriteria>(), // to_prefetch
1348 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
1349 }, {{
1350 // optional double kkt_matrix_pass_limit = 8 [default = inf];
1351 {::_pbi::TcParser::FastF64S1,
1352 {65, 7, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.kkt_matrix_pass_limit_)}},
1353 // optional .operations_research.pdlp.OptimalityNorm optimality_norm = 1 [default = OPTIMALITY_NORM_L2];
1354 {::_pbi::TcParser::FastEr0S1,
1355 {8, 3, 3, PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.optimality_norm_)}},
1356 // optional double eps_optimal_absolute = 2 [default = 1e-06, deprecated = true];
1357 {::_pbi::TcParser::FastF64S1,
1358 {17, 0, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.eps_optimal_absolute_)}},
1359 // optional double eps_optimal_relative = 3 [default = 1e-06, deprecated = true];
1360 {::_pbi::TcParser::FastF64S1,
1361 {25, 1, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.eps_optimal_relative_)}},
1362 // optional double eps_primal_infeasible = 4 [default = 1e-08];
1363 {::_pbi::TcParser::FastF64S1,
1364 {33, 2, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.eps_primal_infeasible_)}},
1365 // optional double eps_dual_infeasible = 5 [default = 1e-08];
1366 {::_pbi::TcParser::FastF64S1,
1367 {41, 5, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.eps_dual_infeasible_)}},
1368 // optional double time_sec_limit = 6 [default = inf];
1369 {::_pbi::TcParser::FastF64S1,
1370 {49, 6, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.time_sec_limit_)}},
1371 // optional int32 iteration_limit = 7 [default = 2147483647];
1372 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(TerminationCriteria, _impl_.iteration_limit_), 4>(),
1373 {56, 4, 0, PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.iteration_limit_)}},
1374 }}, {{
1375 65535, 65535
1376 }}, {{
1377 // optional .operations_research.pdlp.OptimalityNorm optimality_norm = 1 [default = OPTIMALITY_NORM_L2];
1378 {PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.optimality_norm_), _Internal::kHasBitsOffset + 3, 2,
1379 (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
1380 // optional double eps_optimal_absolute = 2 [default = 1e-06, deprecated = true];
1381 {PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.eps_optimal_absolute_), _Internal::kHasBitsOffset + 0, 0,
1382 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
1383 // optional double eps_optimal_relative = 3 [default = 1e-06, deprecated = true];
1384 {PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.eps_optimal_relative_), _Internal::kHasBitsOffset + 1, 0,
1385 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
1386 // optional double eps_primal_infeasible = 4 [default = 1e-08];
1387 {PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.eps_primal_infeasible_), _Internal::kHasBitsOffset + 2, 0,
1388 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
1389 // optional double eps_dual_infeasible = 5 [default = 1e-08];
1390 {PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.eps_dual_infeasible_), _Internal::kHasBitsOffset + 5, 0,
1391 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
1392 // optional double time_sec_limit = 6 [default = inf];
1393 {PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.time_sec_limit_), _Internal::kHasBitsOffset + 6, 0,
1394 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
1395 // optional int32 iteration_limit = 7 [default = 2147483647];
1396 {PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.iteration_limit_), _Internal::kHasBitsOffset + 4, 0,
1397 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
1398 // optional double kkt_matrix_pass_limit = 8 [default = inf];
1399 {PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.kkt_matrix_pass_limit_), _Internal::kHasBitsOffset + 7, 0,
1400 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
1401 // .operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria simple_optimality_criteria = 9;
1402 {PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.optimality_criteria_.simple_optimality_criteria_), _Internal::kOneofCaseOffset + 0, 0,
1403 (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)},
1404 // .operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria detailed_optimality_criteria = 10;
1405 {PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.optimality_criteria_.detailed_optimality_criteria_), _Internal::kOneofCaseOffset + 0, 1,
1406 (0 | ::_fl::kFcOneof | ::_fl::kMessage | ::_fl::kTvTable)},
1407 }},
1408 {{
1409 {::_pbi::TcParser::GetTable<::operations_research::pdlp::TerminationCriteria_SimpleOptimalityCriteria>()},
1410 {::_pbi::TcParser::GetTable<::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria>()},
1411 {0, 3},
1412 }},
1413 {{
1414 }},
1415};
1416PROTOBUF_NOINLINE void TerminationCriteria::Clear() {
1417// @@protoc_insertion_point(message_clear_start:operations_research.pdlp.TerminationCriteria)
1418 ::google::protobuf::internal::TSanWrite(&_impl_);
1419 ::uint32_t cached_has_bits = 0;
1420 // Prevent compiler warnings about cached_has_bits being unused
1421 (void) cached_has_bits;
1422
1423 cached_has_bits = _impl_._has_bits_[0];
1424 if ((cached_has_bits & 0x000000ffu) != 0) {
1425 _impl_.eps_optimal_absolute_ = 1e-06;
1426 _impl_.eps_optimal_relative_ = 1e-06;
1427 _impl_.eps_primal_infeasible_ = 1e-08;
1428 _impl_.optimality_norm_ = 2;
1429 _impl_.iteration_limit_ = 2147483647;
1430 _impl_.eps_dual_infeasible_ = 1e-08;
1431 _impl_.time_sec_limit_ = std::numeric_limits<double>::infinity();
1432 _impl_.kkt_matrix_pass_limit_ = std::numeric_limits<double>::infinity();
1433 }
1435 _impl_._has_bits_.Clear();
1436 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
1437}
1438
1439#if defined(PROTOBUF_CUSTOM_VTABLE)
1440::uint8_t* PROTOBUF_NONNULL TerminationCriteria::_InternalSerialize(
1441 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
1442 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
1443 const TerminationCriteria& this_ = static_cast<const TerminationCriteria&>(base);
1444#else // PROTOBUF_CUSTOM_VTABLE
1445::uint8_t* PROTOBUF_NONNULL TerminationCriteria::_InternalSerialize(
1446 ::uint8_t* PROTOBUF_NONNULL target,
1447 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
1448 const TerminationCriteria& this_ = *this;
1449#endif // PROTOBUF_CUSTOM_VTABLE
1450 // @@protoc_insertion_point(serialize_to_array_start:operations_research.pdlp.TerminationCriteria)
1451 ::uint32_t cached_has_bits = 0;
1452 (void)cached_has_bits;
1453
1454 cached_has_bits = this_._impl_._has_bits_[0];
1455 // optional .operations_research.pdlp.OptimalityNorm optimality_norm = 1 [default = OPTIMALITY_NORM_L2];
1456 if ((cached_has_bits & 0x00000008u) != 0) {
1457 target = stream->EnsureSpace(target);
1458 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1459 1, this_._internal_optimality_norm(), target);
1460 }
1461
1462 // optional double eps_optimal_absolute = 2 [default = 1e-06, deprecated = true];
1463 if ((cached_has_bits & 0x00000001u) != 0) {
1464 target = stream->EnsureSpace(target);
1465 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1466 2, this_._internal_eps_optimal_absolute(), target);
1467 }
1468
1469 // optional double eps_optimal_relative = 3 [default = 1e-06, deprecated = true];
1470 if ((cached_has_bits & 0x00000002u) != 0) {
1471 target = stream->EnsureSpace(target);
1472 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1473 3, this_._internal_eps_optimal_relative(), target);
1474 }
1475
1476 // optional double eps_primal_infeasible = 4 [default = 1e-08];
1477 if ((cached_has_bits & 0x00000004u) != 0) {
1478 target = stream->EnsureSpace(target);
1479 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1480 4, this_._internal_eps_primal_infeasible(), target);
1481 }
1482
1483 // optional double eps_dual_infeasible = 5 [default = 1e-08];
1484 if ((cached_has_bits & 0x00000020u) != 0) {
1485 target = stream->EnsureSpace(target);
1486 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1487 5, this_._internal_eps_dual_infeasible(), target);
1488 }
1489
1490 // optional double time_sec_limit = 6 [default = inf];
1491 if ((cached_has_bits & 0x00000040u) != 0) {
1492 target = stream->EnsureSpace(target);
1493 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1494 6, this_._internal_time_sec_limit(), target);
1495 }
1496
1497 // optional int32 iteration_limit = 7 [default = 2147483647];
1498 if ((cached_has_bits & 0x00000010u) != 0) {
1499 target =
1500 ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<7>(
1501 stream, this_._internal_iteration_limit(), target);
1502 }
1503
1504 // optional double kkt_matrix_pass_limit = 8 [default = inf];
1505 if ((cached_has_bits & 0x00000080u) != 0) {
1506 target = stream->EnsureSpace(target);
1507 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1508 8, this_._internal_kkt_matrix_pass_limit(), target);
1509 }
1510
1511 switch (this_.optimality_criteria_case()) {
1513 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
1514 9, *this_._impl_.optimality_criteria_.simple_optimality_criteria_, this_._impl_.optimality_criteria_.simple_optimality_criteria_->GetCachedSize(), target,
1515 stream);
1516 break;
1517 }
1519 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
1520 10, *this_._impl_.optimality_criteria_.detailed_optimality_criteria_, this_._impl_.optimality_criteria_.detailed_optimality_criteria_->GetCachedSize(), target,
1521 stream);
1522 break;
1523 }
1524 default:
1525 break;
1526 }
1527 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
1528 target =
1529 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
1530 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
1531 }
1532 // @@protoc_insertion_point(serialize_to_array_end:operations_research.pdlp.TerminationCriteria)
1533 return target;
1534}
1535
1536#if defined(PROTOBUF_CUSTOM_VTABLE)
1537::size_t TerminationCriteria::ByteSizeLong(const MessageLite& base) {
1538 const TerminationCriteria& this_ = static_cast<const TerminationCriteria&>(base);
1539#else // PROTOBUF_CUSTOM_VTABLE
1540::size_t TerminationCriteria::ByteSizeLong() const {
1541 const TerminationCriteria& this_ = *this;
1542#endif // PROTOBUF_CUSTOM_VTABLE
1543 // @@protoc_insertion_point(message_byte_size_start:operations_research.pdlp.TerminationCriteria)
1544 ::size_t total_size = 0;
1545
1546 ::uint32_t cached_has_bits = 0;
1547 // Prevent compiler warnings about cached_has_bits being unused
1548 (void)cached_has_bits;
1549
1550 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
1551 cached_has_bits = this_._impl_._has_bits_[0];
1552 total_size += ::absl::popcount(0x000000e7u & cached_has_bits) * 9;
1553 if ((cached_has_bits & 0x00000018u) != 0) {
1554 // optional .operations_research.pdlp.OptimalityNorm optimality_norm = 1 [default = OPTIMALITY_NORM_L2];
1555 if ((cached_has_bits & 0x00000008u) != 0) {
1556 total_size += 1 +
1557 ::_pbi::WireFormatLite::EnumSize(this_._internal_optimality_norm());
1558 }
1559 // optional int32 iteration_limit = 7 [default = 2147483647];
1560 if ((cached_has_bits & 0x00000010u) != 0) {
1561 total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
1562 this_._internal_iteration_limit());
1563 }
1564 }
1565 switch (this_.optimality_criteria_case()) {
1566 // .operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria simple_optimality_criteria = 9;
1568 total_size += 1 +
1569 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.optimality_criteria_.simple_optimality_criteria_);
1570 break;
1571 }
1572 // .operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria detailed_optimality_criteria = 10;
1574 total_size += 1 +
1575 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.optimality_criteria_.detailed_optimality_criteria_);
1576 break;
1577 }
1579 break;
1580 }
1581 }
1582 return this_.MaybeComputeUnknownFieldsSize(total_size,
1583 &this_._impl_._cached_size_);
1584}
1585
1586void TerminationCriteria::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
1587 auto* const _this = static_cast<TerminationCriteria*>(&to_msg);
1588 auto& from = static_cast<const TerminationCriteria&>(from_msg);
1589 ::google::protobuf::Arena* arena = _this->GetArena();
1590 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.pdlp.TerminationCriteria)
1591 ABSL_DCHECK_NE(&from, _this);
1592 ::uint32_t cached_has_bits = 0;
1593 (void) cached_has_bits;
1594
1595 cached_has_bits = from._impl_._has_bits_[0];
1596 if ((cached_has_bits & 0x000000ffu) != 0) {
1597 if ((cached_has_bits & 0x00000001u) != 0) {
1598 _this->_impl_.eps_optimal_absolute_ = from._impl_.eps_optimal_absolute_;
1599 }
1600 if ((cached_has_bits & 0x00000002u) != 0) {
1601 _this->_impl_.eps_optimal_relative_ = from._impl_.eps_optimal_relative_;
1602 }
1603 if ((cached_has_bits & 0x00000004u) != 0) {
1604 _this->_impl_.eps_primal_infeasible_ = from._impl_.eps_primal_infeasible_;
1605 }
1606 if ((cached_has_bits & 0x00000008u) != 0) {
1607 _this->_impl_.optimality_norm_ = from._impl_.optimality_norm_;
1608 }
1609 if ((cached_has_bits & 0x00000010u) != 0) {
1610 _this->_impl_.iteration_limit_ = from._impl_.iteration_limit_;
1611 }
1612 if ((cached_has_bits & 0x00000020u) != 0) {
1613 _this->_impl_.eps_dual_infeasible_ = from._impl_.eps_dual_infeasible_;
1614 }
1615 if ((cached_has_bits & 0x00000040u) != 0) {
1616 _this->_impl_.time_sec_limit_ = from._impl_.time_sec_limit_;
1617 }
1618 if ((cached_has_bits & 0x00000080u) != 0) {
1619 _this->_impl_.kkt_matrix_pass_limit_ = from._impl_.kkt_matrix_pass_limit_;
1620 }
1621 }
1622 _this->_impl_._has_bits_[0] |= cached_has_bits;
1623 if (const uint32_t oneof_from_case = from._impl_._oneof_case_[0]) {
1624 const uint32_t oneof_to_case = _this->_impl_._oneof_case_[0];
1625 const bool oneof_needs_init = oneof_to_case != oneof_from_case;
1626 if (oneof_needs_init) {
1627 if (oneof_to_case != 0) {
1628 _this->clear_optimality_criteria();
1629 }
1630 _this->_impl_._oneof_case_[0] = oneof_from_case;
1631 }
1632
1633 switch (oneof_from_case) {
1635 if (oneof_needs_init) {
1636 _this->_impl_.optimality_criteria_.simple_optimality_criteria_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.optimality_criteria_.simple_optimality_criteria_);
1637 } else {
1638 _this->_impl_.optimality_criteria_.simple_optimality_criteria_->MergeFrom(*from._impl_.optimality_criteria_.simple_optimality_criteria_);
1639 }
1640 break;
1641 }
1643 if (oneof_needs_init) {
1644 _this->_impl_.optimality_criteria_.detailed_optimality_criteria_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.optimality_criteria_.detailed_optimality_criteria_);
1645 } else {
1646 _this->_impl_.optimality_criteria_.detailed_optimality_criteria_->MergeFrom(*from._impl_.optimality_criteria_.detailed_optimality_criteria_);
1647 }
1648 break;
1649 }
1651 break;
1652 }
1653 }
1654 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
1655}
1656
1658// @@protoc_insertion_point(class_specific_copy_from_start:operations_research.pdlp.TerminationCriteria)
1659 if (&from == this) return;
1661 MergeFrom(from);
1662}
1663
1664
1665void TerminationCriteria::InternalSwap(TerminationCriteria* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
1666 using ::std::swap;
1667 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
1668 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
1669 ::google::protobuf::internal::memswap<
1670 PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.kkt_matrix_pass_limit_)
1671 + sizeof(TerminationCriteria::_impl_.kkt_matrix_pass_limit_)
1672 - PROTOBUF_FIELD_OFFSET(TerminationCriteria, _impl_.eps_optimal_absolute_)>(
1673 reinterpret_cast<char*>(&_impl_.eps_optimal_absolute_),
1674 reinterpret_cast<char*>(&other->_impl_.eps_optimal_absolute_));
1675 swap(_impl_.optimality_criteria_, other->_impl_.optimality_criteria_);
1676 swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
1677}
1678
1679::google::protobuf::Metadata TerminationCriteria::GetMetadata() const {
1680 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
1681}
1682// ===================================================================
1683
1685 public:
1686 using HasBits =
1687 decltype(::std::declval<AdaptiveLinesearchParams>()._impl_._has_bits_);
1688 static constexpr ::int32_t kHasBitsOffset =
1689 8 * PROTOBUF_FIELD_OFFSET(AdaptiveLinesearchParams, _impl_._has_bits_);
1691
1692AdaptiveLinesearchParams::AdaptiveLinesearchParams(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
1693#if defined(PROTOBUF_CUSTOM_VTABLE)
1694 : ::google::protobuf::Message(arena, AdaptiveLinesearchParams_class_data_.base()) {
1695#else // PROTOBUF_CUSTOM_VTABLE
1696 : ::google::protobuf::Message(arena) {
1697#endif // PROTOBUF_CUSTOM_VTABLE
1698 SharedCtor(arena);
1699 // @@protoc_insertion_point(arena_constructor:operations_research.pdlp.AdaptiveLinesearchParams)
1700}
1702 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const AdaptiveLinesearchParams& from)
1703#if defined(PROTOBUF_CUSTOM_VTABLE)
1704 : ::google::protobuf::Message(arena, AdaptiveLinesearchParams_class_data_.base()),
1705#else // PROTOBUF_CUSTOM_VTABLE
1706 : ::google::protobuf::Message(arena),
1707#endif // PROTOBUF_CUSTOM_VTABLE
1708 _impl_(from._impl_) {
1709 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
1710 from._internal_metadata_);
1711}
1712PROTOBUF_NDEBUG_INLINE AdaptiveLinesearchParams::Impl_::Impl_(
1713 ::google::protobuf::internal::InternalVisibility visibility,
1714 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
1715 : _cached_size_{0},
1716 step_size_reduction_exponent_{0.3},
1717 step_size_growth_exponent_{0.6} {}
1718
1719inline void AdaptiveLinesearchParams::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
1720 new (&_impl_) Impl_(internal_visibility(), arena);
1721}
1723 // @@protoc_insertion_point(destructor:operations_research.pdlp.AdaptiveLinesearchParams)
1724 SharedDtor(*this);
1725}
1726inline void AdaptiveLinesearchParams::SharedDtor(MessageLite& self) {
1727 AdaptiveLinesearchParams& this_ = static_cast<AdaptiveLinesearchParams&>(self);
1728 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
1729 ABSL_DCHECK(this_.GetArena() == nullptr);
1730 this_._impl_.~Impl_();
1731}
1732
1733inline void* PROTOBUF_NONNULL AdaptiveLinesearchParams::PlacementNew_(
1734 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
1735 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
1736 return ::new (mem) AdaptiveLinesearchParams(arena);
1739 return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(AdaptiveLinesearchParams),
1740 alignof(AdaptiveLinesearchParams));
1741}
1743 return ::google::protobuf::internal::ClassDataFull{
1744 ::google::protobuf::internal::ClassData{
1746 &_table_.header,
1747 nullptr, // OnDemandRegisterArenaDtor
1748 nullptr, // IsInitialized
1749 &AdaptiveLinesearchParams::MergeImpl,
1750 ::google::protobuf::Message::GetNewImpl<AdaptiveLinesearchParams>(),
1751#if defined(PROTOBUF_CUSTOM_VTABLE)
1752 &AdaptiveLinesearchParams::SharedDtor,
1753 ::google::protobuf::Message::GetClearImpl<AdaptiveLinesearchParams>(), &AdaptiveLinesearchParams::ByteSizeLong,
1755#endif // PROTOBUF_CUSTOM_VTABLE
1756 PROTOBUF_FIELD_OFFSET(AdaptiveLinesearchParams, _impl_._cached_size_),
1757 false,
1758 },
1759 &AdaptiveLinesearchParams::kDescriptorMethods,
1761 nullptr, // tracker
1762 };
1763}
1764
1765PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
1766 ::google::protobuf::internal::ClassDataFull AdaptiveLinesearchParams_class_data_ =
1768
1769PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
1771 ::google::protobuf::internal::PrefetchToLocalCache(&AdaptiveLinesearchParams_class_data_);
1772 ::google::protobuf::internal::PrefetchToLocalCache(AdaptiveLinesearchParams_class_data_.tc_table);
1775PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
1776const ::_pbi::TcParseTable<1, 2, 0, 0, 2>
1777AdaptiveLinesearchParams::_table_ = {
1778 {
1779 PROTOBUF_FIELD_OFFSET(AdaptiveLinesearchParams, _impl_._has_bits_),
1780 0, // no _extensions_
1781 2, 8, // max_field_number, fast_idx_mask
1782 offsetof(decltype(_table_), field_lookup_table),
1783 4294967292, // skipmap
1784 offsetof(decltype(_table_), field_entries),
1785 2, // num_field_entries
1786 0, // num_aux_entries
1787 offsetof(decltype(_table_), field_names), // no aux_entries
1789 nullptr, // post_loop_handler
1790 ::_pbi::TcParser::GenericFallback, // fallback
1791 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
1792 ::_pbi::TcParser::GetTable<::operations_research::pdlp::AdaptiveLinesearchParams>(), // to_prefetch
1793 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
1794 }, {{
1795 // optional double step_size_growth_exponent = 2 [default = 0.6];
1796 {::_pbi::TcParser::FastF64S1,
1797 {17, 1, 0, PROTOBUF_FIELD_OFFSET(AdaptiveLinesearchParams, _impl_.step_size_growth_exponent_)}},
1798 // optional double step_size_reduction_exponent = 1 [default = 0.3];
1799 {::_pbi::TcParser::FastF64S1,
1800 {9, 0, 0, PROTOBUF_FIELD_OFFSET(AdaptiveLinesearchParams, _impl_.step_size_reduction_exponent_)}},
1801 }}, {{
1802 65535, 65535
1803 }}, {{
1804 // optional double step_size_reduction_exponent = 1 [default = 0.3];
1805 {PROTOBUF_FIELD_OFFSET(AdaptiveLinesearchParams, _impl_.step_size_reduction_exponent_), _Internal::kHasBitsOffset + 0, 0,
1806 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
1807 // optional double step_size_growth_exponent = 2 [default = 0.6];
1808 {PROTOBUF_FIELD_OFFSET(AdaptiveLinesearchParams, _impl_.step_size_growth_exponent_), _Internal::kHasBitsOffset + 1, 0,
1809 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
1810 }},
1811 // no aux_entries
1812 {{
1813 }},
1814};
1815PROTOBUF_NOINLINE void AdaptiveLinesearchParams::Clear() {
1816// @@protoc_insertion_point(message_clear_start:operations_research.pdlp.AdaptiveLinesearchParams)
1817 ::google::protobuf::internal::TSanWrite(&_impl_);
1818 ::uint32_t cached_has_bits = 0;
1819 // Prevent compiler warnings about cached_has_bits being unused
1820 (void) cached_has_bits;
1821
1822 cached_has_bits = _impl_._has_bits_[0];
1823 if ((cached_has_bits & 0x00000003u) != 0) {
1824 _impl_.step_size_reduction_exponent_ = 0.3;
1825 _impl_.step_size_growth_exponent_ = 0.6;
1826 }
1827 _impl_._has_bits_.Clear();
1828 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
1829}
1830
1831#if defined(PROTOBUF_CUSTOM_VTABLE)
1832::uint8_t* PROTOBUF_NONNULL AdaptiveLinesearchParams::_InternalSerialize(
1833 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
1834 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
1835 const AdaptiveLinesearchParams& this_ = static_cast<const AdaptiveLinesearchParams&>(base);
1836#else // PROTOBUF_CUSTOM_VTABLE
1837::uint8_t* PROTOBUF_NONNULL AdaptiveLinesearchParams::_InternalSerialize(
1838 ::uint8_t* PROTOBUF_NONNULL target,
1839 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
1840 const AdaptiveLinesearchParams& this_ = *this;
1841#endif // PROTOBUF_CUSTOM_VTABLE
1842 // @@protoc_insertion_point(serialize_to_array_start:operations_research.pdlp.AdaptiveLinesearchParams)
1843 ::uint32_t cached_has_bits = 0;
1844 (void)cached_has_bits;
1845
1846 cached_has_bits = this_._impl_._has_bits_[0];
1847 // optional double step_size_reduction_exponent = 1 [default = 0.3];
1848 if ((cached_has_bits & 0x00000001u) != 0) {
1849 target = stream->EnsureSpace(target);
1850 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1851 1, this_._internal_step_size_reduction_exponent(), target);
1852 }
1853
1854 // optional double step_size_growth_exponent = 2 [default = 0.6];
1855 if ((cached_has_bits & 0x00000002u) != 0) {
1856 target = stream->EnsureSpace(target);
1857 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1858 2, this_._internal_step_size_growth_exponent(), target);
1859 }
1860
1861 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
1862 target =
1863 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
1864 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
1865 }
1866 // @@protoc_insertion_point(serialize_to_array_end:operations_research.pdlp.AdaptiveLinesearchParams)
1867 return target;
1868}
1869
1870#if defined(PROTOBUF_CUSTOM_VTABLE)
1872 const AdaptiveLinesearchParams& this_ = static_cast<const AdaptiveLinesearchParams&>(base);
1873#else // PROTOBUF_CUSTOM_VTABLE
1875 const AdaptiveLinesearchParams& this_ = *this;
1876#endif // PROTOBUF_CUSTOM_VTABLE
1877 // @@protoc_insertion_point(message_byte_size_start:operations_research.pdlp.AdaptiveLinesearchParams)
1878 ::size_t total_size = 0;
1879
1880 ::uint32_t cached_has_bits = 0;
1881 // Prevent compiler warnings about cached_has_bits being unused
1882 (void)cached_has_bits;
1883
1884 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
1885 cached_has_bits = this_._impl_._has_bits_[0];
1886 total_size += ::absl::popcount(0x00000003u & cached_has_bits) * 9;
1887 return this_.MaybeComputeUnknownFieldsSize(total_size,
1888 &this_._impl_._cached_size_);
1889}
1890
1891void AdaptiveLinesearchParams::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
1892 auto* const _this = static_cast<AdaptiveLinesearchParams*>(&to_msg);
1893 auto& from = static_cast<const AdaptiveLinesearchParams&>(from_msg);
1894 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.pdlp.AdaptiveLinesearchParams)
1895 ABSL_DCHECK_NE(&from, _this);
1896 ::uint32_t cached_has_bits = 0;
1897 (void) cached_has_bits;
1898
1899 cached_has_bits = from._impl_._has_bits_[0];
1900 if ((cached_has_bits & 0x00000003u) != 0) {
1901 if ((cached_has_bits & 0x00000001u) != 0) {
1902 _this->_impl_.step_size_reduction_exponent_ = from._impl_.step_size_reduction_exponent_;
1903 }
1904 if ((cached_has_bits & 0x00000002u) != 0) {
1905 _this->_impl_.step_size_growth_exponent_ = from._impl_.step_size_growth_exponent_;
1906 }
1907 }
1908 _this->_impl_._has_bits_[0] |= cached_has_bits;
1909 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
1910}
1911
1913// @@protoc_insertion_point(class_specific_copy_from_start:operations_research.pdlp.AdaptiveLinesearchParams)
1914 if (&from == this) return;
1915 Clear();
1917}
1918
1919
1920void AdaptiveLinesearchParams::InternalSwap(AdaptiveLinesearchParams* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
1921 using ::std::swap;
1922 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
1923 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
1924 ::google::protobuf::internal::memswap<
1925 PROTOBUF_FIELD_OFFSET(AdaptiveLinesearchParams, _impl_.step_size_growth_exponent_)
1926 + sizeof(AdaptiveLinesearchParams::_impl_.step_size_growth_exponent_)
1927 - PROTOBUF_FIELD_OFFSET(AdaptiveLinesearchParams, _impl_.step_size_reduction_exponent_)>(
1928 reinterpret_cast<char*>(&_impl_.step_size_reduction_exponent_),
1929 reinterpret_cast<char*>(&other->_impl_.step_size_reduction_exponent_));
1930}
1931
1932::google::protobuf::Metadata AdaptiveLinesearchParams::GetMetadata() const {
1933 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
1934}
1935// ===================================================================
1938 public:
1939 using HasBits =
1940 decltype(::std::declval<MalitskyPockParams>()._impl_._has_bits_);
1941 static constexpr ::int32_t kHasBitsOffset =
1942 8 * PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_._has_bits_);
1943};
1945MalitskyPockParams::MalitskyPockParams(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
1946#if defined(PROTOBUF_CUSTOM_VTABLE)
1947 : ::google::protobuf::Message(arena, MalitskyPockParams_class_data_.base()) {
1948#else // PROTOBUF_CUSTOM_VTABLE
1949 : ::google::protobuf::Message(arena) {
1950#endif // PROTOBUF_CUSTOM_VTABLE
1951 SharedCtor(arena);
1952 // @@protoc_insertion_point(arena_constructor:operations_research.pdlp.MalitskyPockParams)
1953}
1955 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const MalitskyPockParams& from)
1956#if defined(PROTOBUF_CUSTOM_VTABLE)
1957 : ::google::protobuf::Message(arena, MalitskyPockParams_class_data_.base()),
1958#else // PROTOBUF_CUSTOM_VTABLE
1959 : ::google::protobuf::Message(arena),
1960#endif // PROTOBUF_CUSTOM_VTABLE
1961 _impl_(from._impl_) {
1962 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
1963 from._internal_metadata_);
1964}
1965PROTOBUF_NDEBUG_INLINE MalitskyPockParams::Impl_::Impl_(
1966 ::google::protobuf::internal::InternalVisibility visibility,
1967 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
1968 : _cached_size_{0},
1969 step_size_downscaling_factor_{0.7},
1970 linesearch_contraction_factor_{0.99},
1971 step_size_interpolation_{1} {}
1972
1973inline void MalitskyPockParams::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
1974 new (&_impl_) Impl_(internal_visibility(), arena);
1975}
1977 // @@protoc_insertion_point(destructor:operations_research.pdlp.MalitskyPockParams)
1978 SharedDtor(*this);
1979}
1980inline void MalitskyPockParams::SharedDtor(MessageLite& self) {
1981 MalitskyPockParams& this_ = static_cast<MalitskyPockParams&>(self);
1982 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
1983 ABSL_DCHECK(this_.GetArena() == nullptr);
1984 this_._impl_.~Impl_();
1985}
1986
1987inline void* PROTOBUF_NONNULL MalitskyPockParams::PlacementNew_(
1988 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
1989 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
1990 return ::new (mem) MalitskyPockParams(arena);
1991}
1993 return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(MalitskyPockParams),
1994 alignof(MalitskyPockParams));
1995}
1997 return ::google::protobuf::internal::ClassDataFull{
1998 ::google::protobuf::internal::ClassData{
2000 &_table_.header,
2001 nullptr, // OnDemandRegisterArenaDtor
2002 nullptr, // IsInitialized
2003 &MalitskyPockParams::MergeImpl,
2004 ::google::protobuf::Message::GetNewImpl<MalitskyPockParams>(),
2005#if defined(PROTOBUF_CUSTOM_VTABLE)
2006 &MalitskyPockParams::SharedDtor,
2007 ::google::protobuf::Message::GetClearImpl<MalitskyPockParams>(), &MalitskyPockParams::ByteSizeLong,
2009#endif // PROTOBUF_CUSTOM_VTABLE
2010 PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_._cached_size_),
2011 false,
2012 },
2013 &MalitskyPockParams::kDescriptorMethods,
2015 nullptr, // tracker
2016 };
2017}
2018
2019PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
2020 ::google::protobuf::internal::ClassDataFull MalitskyPockParams_class_data_ =
2022
2023PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
2025 ::google::protobuf::internal::PrefetchToLocalCache(&MalitskyPockParams_class_data_);
2026 ::google::protobuf::internal::PrefetchToLocalCache(MalitskyPockParams_class_data_.tc_table);
2027 return MalitskyPockParams_class_data_.base();
2028}
2029PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
2030const ::_pbi::TcParseTable<2, 3, 0, 0, 2>
2031MalitskyPockParams::_table_ = {
2032 {
2033 PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_._has_bits_),
2034 0, // no _extensions_
2035 3, 24, // max_field_number, fast_idx_mask
2036 offsetof(decltype(_table_), field_lookup_table),
2037 4294967288, // skipmap
2038 offsetof(decltype(_table_), field_entries),
2039 3, // num_field_entries
2040 0, // num_aux_entries
2041 offsetof(decltype(_table_), field_names), // no aux_entries
2043 nullptr, // post_loop_handler
2044 ::_pbi::TcParser::GenericFallback, // fallback
2045 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
2046 ::_pbi::TcParser::GetTable<::operations_research::pdlp::MalitskyPockParams>(), // to_prefetch
2047 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
2048 }, {{
2049 {::_pbi::TcParser::MiniParse, {}},
2050 // optional double step_size_downscaling_factor = 1 [default = 0.7];
2051 {::_pbi::TcParser::FastF64S1,
2052 {9, 0, 0, PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_.step_size_downscaling_factor_)}},
2053 // optional double linesearch_contraction_factor = 2 [default = 0.99];
2054 {::_pbi::TcParser::FastF64S1,
2055 {17, 1, 0, PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_.linesearch_contraction_factor_)}},
2056 // optional double step_size_interpolation = 3 [default = 1];
2057 {::_pbi::TcParser::FastF64S1,
2058 {25, 2, 0, PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_.step_size_interpolation_)}},
2059 }}, {{
2060 65535, 65535
2061 }}, {{
2062 // optional double step_size_downscaling_factor = 1 [default = 0.7];
2063 {PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_.step_size_downscaling_factor_), _Internal::kHasBitsOffset + 0, 0,
2064 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2065 // optional double linesearch_contraction_factor = 2 [default = 0.99];
2066 {PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_.linesearch_contraction_factor_), _Internal::kHasBitsOffset + 1, 0,
2067 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2068 // optional double step_size_interpolation = 3 [default = 1];
2069 {PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_.step_size_interpolation_), _Internal::kHasBitsOffset + 2, 0,
2070 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2071 }},
2072 // no aux_entries
2073 {{
2074 }},
2075};
2076PROTOBUF_NOINLINE void MalitskyPockParams::Clear() {
2077// @@protoc_insertion_point(message_clear_start:operations_research.pdlp.MalitskyPockParams)
2078 ::google::protobuf::internal::TSanWrite(&_impl_);
2079 ::uint32_t cached_has_bits = 0;
2080 // Prevent compiler warnings about cached_has_bits being unused
2081 (void) cached_has_bits;
2082
2083 cached_has_bits = _impl_._has_bits_[0];
2084 if ((cached_has_bits & 0x00000007u) != 0) {
2085 _impl_.step_size_downscaling_factor_ = 0.7;
2086 _impl_.linesearch_contraction_factor_ = 0.99;
2087 _impl_.step_size_interpolation_ = 1;
2088 }
2089 _impl_._has_bits_.Clear();
2090 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
2091}
2092
2093#if defined(PROTOBUF_CUSTOM_VTABLE)
2094::uint8_t* PROTOBUF_NONNULL MalitskyPockParams::_InternalSerialize(
2095 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
2096 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
2097 const MalitskyPockParams& this_ = static_cast<const MalitskyPockParams&>(base);
2098#else // PROTOBUF_CUSTOM_VTABLE
2099::uint8_t* PROTOBUF_NONNULL MalitskyPockParams::_InternalSerialize(
2100 ::uint8_t* PROTOBUF_NONNULL target,
2101 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
2102 const MalitskyPockParams& this_ = *this;
2103#endif // PROTOBUF_CUSTOM_VTABLE
2104 // @@protoc_insertion_point(serialize_to_array_start:operations_research.pdlp.MalitskyPockParams)
2105 ::uint32_t cached_has_bits = 0;
2106 (void)cached_has_bits;
2107
2108 cached_has_bits = this_._impl_._has_bits_[0];
2109 // optional double step_size_downscaling_factor = 1 [default = 0.7];
2110 if ((cached_has_bits & 0x00000001u) != 0) {
2111 target = stream->EnsureSpace(target);
2112 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
2113 1, this_._internal_step_size_downscaling_factor(), target);
2114 }
2115
2116 // optional double linesearch_contraction_factor = 2 [default = 0.99];
2117 if ((cached_has_bits & 0x00000002u) != 0) {
2118 target = stream->EnsureSpace(target);
2119 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
2120 2, this_._internal_linesearch_contraction_factor(), target);
2121 }
2122
2123 // optional double step_size_interpolation = 3 [default = 1];
2124 if ((cached_has_bits & 0x00000004u) != 0) {
2125 target = stream->EnsureSpace(target);
2126 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
2127 3, this_._internal_step_size_interpolation(), target);
2128 }
2129
2130 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
2131 target =
2132 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
2133 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
2134 }
2135 // @@protoc_insertion_point(serialize_to_array_end:operations_research.pdlp.MalitskyPockParams)
2136 return target;
2137}
2138
2139#if defined(PROTOBUF_CUSTOM_VTABLE)
2140::size_t MalitskyPockParams::ByteSizeLong(const MessageLite& base) {
2141 const MalitskyPockParams& this_ = static_cast<const MalitskyPockParams&>(base);
2142#else // PROTOBUF_CUSTOM_VTABLE
2143::size_t MalitskyPockParams::ByteSizeLong() const {
2144 const MalitskyPockParams& this_ = *this;
2145#endif // PROTOBUF_CUSTOM_VTABLE
2146 // @@protoc_insertion_point(message_byte_size_start:operations_research.pdlp.MalitskyPockParams)
2147 ::size_t total_size = 0;
2149 ::uint32_t cached_has_bits = 0;
2150 // Prevent compiler warnings about cached_has_bits being unused
2151 (void)cached_has_bits;
2152
2153 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
2154 cached_has_bits = this_._impl_._has_bits_[0];
2155 total_size += ::absl::popcount(0x00000007u & cached_has_bits) * 9;
2156 return this_.MaybeComputeUnknownFieldsSize(total_size,
2157 &this_._impl_._cached_size_);
2158}
2159
2160void MalitskyPockParams::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
2161 auto* const _this = static_cast<MalitskyPockParams*>(&to_msg);
2162 auto& from = static_cast<const MalitskyPockParams&>(from_msg);
2163 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.pdlp.MalitskyPockParams)
2164 ABSL_DCHECK_NE(&from, _this);
2165 ::uint32_t cached_has_bits = 0;
2166 (void) cached_has_bits;
2167
2168 cached_has_bits = from._impl_._has_bits_[0];
2169 if ((cached_has_bits & 0x00000007u) != 0) {
2170 if ((cached_has_bits & 0x00000001u) != 0) {
2171 _this->_impl_.step_size_downscaling_factor_ = from._impl_.step_size_downscaling_factor_;
2172 }
2173 if ((cached_has_bits & 0x00000002u) != 0) {
2174 _this->_impl_.linesearch_contraction_factor_ = from._impl_.linesearch_contraction_factor_;
2175 }
2176 if ((cached_has_bits & 0x00000004u) != 0) {
2177 _this->_impl_.step_size_interpolation_ = from._impl_.step_size_interpolation_;
2178 }
2179 }
2180 _this->_impl_._has_bits_[0] |= cached_has_bits;
2181 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
2182}
2183
2185// @@protoc_insertion_point(class_specific_copy_from_start:operations_research.pdlp.MalitskyPockParams)
2186 if (&from == this) return;
2187 Clear();
2188 MergeFrom(from);
2190
2191
2192void MalitskyPockParams::InternalSwap(MalitskyPockParams* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
2193 using ::std::swap;
2194 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
2195 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
2196 ::google::protobuf::internal::memswap<
2197 PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_.step_size_interpolation_)
2198 + sizeof(MalitskyPockParams::_impl_.step_size_interpolation_)
2199 - PROTOBUF_FIELD_OFFSET(MalitskyPockParams, _impl_.step_size_downscaling_factor_)>(
2200 reinterpret_cast<char*>(&_impl_.step_size_downscaling_factor_),
2201 reinterpret_cast<char*>(&other->_impl_.step_size_downscaling_factor_));
2202}
2203
2204::google::protobuf::Metadata MalitskyPockParams::GetMetadata() const {
2205 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
2206}
2207// ===================================================================
2208
2210 public:
2211 using HasBits =
2212 decltype(::std::declval<PrimalDualHybridGradientParams_PresolveOptions>()._impl_._has_bits_);
2213 static constexpr ::int32_t kHasBitsOffset =
2214 8 * PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams_PresolveOptions, _impl_._has_bits_);
2216
2218 ::google::protobuf::internal::TSanWrite(&_impl_);
2219 if (_impl_.glop_parameters_ != nullptr) _impl_.glop_parameters_->Clear();
2220 _impl_._has_bits_[0] &= ~0x00000001u;
2221}
2223#if defined(PROTOBUF_CUSTOM_VTABLE)
2224 : ::google::protobuf::Message(arena, PrimalDualHybridGradientParams_PresolveOptions_class_data_.base()) {
2225#else // PROTOBUF_CUSTOM_VTABLE
2226 : ::google::protobuf::Message(arena) {
2227#endif // PROTOBUF_CUSTOM_VTABLE
2228 SharedCtor(arena);
2229 // @@protoc_insertion_point(arena_constructor:operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions)
2230}
2231PROTOBUF_NDEBUG_INLINE PrimalDualHybridGradientParams_PresolveOptions::Impl_::Impl_(
2232 ::google::protobuf::internal::InternalVisibility visibility,
2233 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
2234 const ::operations_research::pdlp::PrimalDualHybridGradientParams_PresolveOptions& from_msg)
2235 : _has_bits_{from._has_bits_},
2236 _cached_size_{0} {}
2237
2239 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
2240 const PrimalDualHybridGradientParams_PresolveOptions& from)
2241#if defined(PROTOBUF_CUSTOM_VTABLE)
2242 : ::google::protobuf::Message(arena, PrimalDualHybridGradientParams_PresolveOptions_class_data_.base()) {
2243#else // PROTOBUF_CUSTOM_VTABLE
2244 : ::google::protobuf::Message(arena) {
2245#endif // PROTOBUF_CUSTOM_VTABLE
2247 (void)_this;
2248 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
2249 from._internal_metadata_);
2250 new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
2251 ::uint32_t cached_has_bits = _impl_._has_bits_[0];
2252 _impl_.glop_parameters_ = ((cached_has_bits & 0x00000001u) != 0)
2253 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.glop_parameters_)
2254 : nullptr;
2255 _impl_.use_glop_ = from._impl_.use_glop_;
2256
2257 // @@protoc_insertion_point(copy_constructor:operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions)
2258}
2259PROTOBUF_NDEBUG_INLINE PrimalDualHybridGradientParams_PresolveOptions::Impl_::Impl_(
2260 ::google::protobuf::internal::InternalVisibility visibility,
2261 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
2262 : _cached_size_{0} {}
2263
2264inline void PrimalDualHybridGradientParams_PresolveOptions::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
2265 new (&_impl_) Impl_(internal_visibility(), arena);
2266 ::memset(reinterpret_cast<char *>(&_impl_) +
2267 offsetof(Impl_, glop_parameters_),
2268 0,
2269 offsetof(Impl_, use_glop_) -
2270 offsetof(Impl_, glop_parameters_) +
2271 sizeof(Impl_::use_glop_));
2272}
2274 // @@protoc_insertion_point(destructor:operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions)
2275 SharedDtor(*this);
2276}
2277inline void PrimalDualHybridGradientParams_PresolveOptions::SharedDtor(MessageLite& self) {
2279 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
2280 ABSL_DCHECK(this_.GetArena() == nullptr);
2281 delete this_._impl_.glop_parameters_;
2282 this_._impl_.~Impl_();
2283}
2284
2286 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
2287 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
2288 return ::new (mem) PrimalDualHybridGradientParams_PresolveOptions(arena);
2289}
2291 return ::google::protobuf::internal::MessageCreator::ZeroInit(sizeof(PrimalDualHybridGradientParams_PresolveOptions),
2293}
2295 return ::google::protobuf::internal::ClassDataFull{
2296 ::google::protobuf::internal::ClassData{
2298 &_table_.header,
2299 nullptr, // OnDemandRegisterArenaDtor
2300 nullptr, // IsInitialized
2301 &PrimalDualHybridGradientParams_PresolveOptions::MergeImpl,
2302 ::google::protobuf::Message::GetNewImpl<PrimalDualHybridGradientParams_PresolveOptions>(),
2303#if defined(PROTOBUF_CUSTOM_VTABLE)
2304 &PrimalDualHybridGradientParams_PresolveOptions::SharedDtor,
2305 ::google::protobuf::Message::GetClearImpl<PrimalDualHybridGradientParams_PresolveOptions>(), &PrimalDualHybridGradientParams_PresolveOptions::ByteSizeLong,
2307#endif // PROTOBUF_CUSTOM_VTABLE
2308 PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams_PresolveOptions, _impl_._cached_size_),
2309 false,
2310 },
2311 &PrimalDualHybridGradientParams_PresolveOptions::kDescriptorMethods,
2313 nullptr, // tracker
2314 };
2315}
2316
2317PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
2318 ::google::protobuf::internal::ClassDataFull PrimalDualHybridGradientParams_PresolveOptions_class_data_ =
2320
2321PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
2323 ::google::protobuf::internal::PrefetchToLocalCache(&PrimalDualHybridGradientParams_PresolveOptions_class_data_);
2324 ::google::protobuf::internal::PrefetchToLocalCache(PrimalDualHybridGradientParams_PresolveOptions_class_data_.tc_table);
2326}
2327PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
2328const ::_pbi::TcParseTable<1, 2, 1, 0, 2>
2329PrimalDualHybridGradientParams_PresolveOptions::_table_ = {
2330 {
2331 PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams_PresolveOptions, _impl_._has_bits_),
2332 0, // no _extensions_
2333 2, 8, // max_field_number, fast_idx_mask
2334 offsetof(decltype(_table_), field_lookup_table),
2335 4294967292, // skipmap
2336 offsetof(decltype(_table_), field_entries),
2337 2, // num_field_entries
2338 1, // num_aux_entries
2339 offsetof(decltype(_table_), aux_entries),
2341 nullptr, // post_loop_handler
2342 ::_pbi::TcParser::GenericFallback, // fallback
2343 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
2344 ::_pbi::TcParser::GetTable<::operations_research::pdlp::PrimalDualHybridGradientParams_PresolveOptions>(), // to_prefetch
2345 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
2346 }, {{
2347 // optional .operations_research.glop.GlopParameters glop_parameters = 2;
2348 {::_pbi::TcParser::FastMtS1,
2349 {18, 0, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams_PresolveOptions, _impl_.glop_parameters_)}},
2350 // optional bool use_glop = 1;
2351 {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(PrimalDualHybridGradientParams_PresolveOptions, _impl_.use_glop_), 1>(),
2352 {8, 1, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams_PresolveOptions, _impl_.use_glop_)}},
2353 }}, {{
2354 65535, 65535
2355 }}, {{
2356 // optional bool use_glop = 1;
2357 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams_PresolveOptions, _impl_.use_glop_), _Internal::kHasBitsOffset + 1, 0,
2358 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2359 // optional .operations_research.glop.GlopParameters glop_parameters = 2;
2360 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams_PresolveOptions, _impl_.glop_parameters_), _Internal::kHasBitsOffset + 0, 0,
2361 (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2362 }},
2363 {{
2364 {::_pbi::TcParser::GetTable<::operations_research::glop::GlopParameters>()},
2365 }},
2366 {{
2367 }},
2368};
2370// @@protoc_insertion_point(message_clear_start:operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions)
2371 ::google::protobuf::internal::TSanWrite(&_impl_);
2372 ::uint32_t cached_has_bits = 0;
2373 // Prevent compiler warnings about cached_has_bits being unused
2374 (void) cached_has_bits;
2376 cached_has_bits = _impl_._has_bits_[0];
2377 if ((cached_has_bits & 0x00000001u) != 0) {
2378 ABSL_DCHECK(_impl_.glop_parameters_ != nullptr);
2379 _impl_.glop_parameters_->Clear();
2380 }
2381 _impl_.use_glop_ = false;
2382 _impl_._has_bits_.Clear();
2383 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
2384}
2385
2386#if defined(PROTOBUF_CUSTOM_VTABLE)
2388 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
2389 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
2391#else // PROTOBUF_CUSTOM_VTABLE
2393 ::uint8_t* PROTOBUF_NONNULL target,
2394 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
2396#endif // PROTOBUF_CUSTOM_VTABLE
2397 // @@protoc_insertion_point(serialize_to_array_start:operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions)
2398 ::uint32_t cached_has_bits = 0;
2399 (void)cached_has_bits;
2400
2401 cached_has_bits = this_._impl_._has_bits_[0];
2402 // optional bool use_glop = 1;
2403 if ((cached_has_bits & 0x00000002u) != 0) {
2404 target = stream->EnsureSpace(target);
2405 target = ::_pbi::WireFormatLite::WriteBoolToArray(
2406 1, this_._internal_use_glop(), target);
2407 }
2408
2409 // optional .operations_research.glop.GlopParameters glop_parameters = 2;
2410 if ((cached_has_bits & 0x00000001u) != 0) {
2411 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
2412 2, *this_._impl_.glop_parameters_, this_._impl_.glop_parameters_->GetCachedSize(), target,
2413 stream);
2414 }
2415
2416 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
2417 target =
2418 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
2419 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
2420 }
2421 // @@protoc_insertion_point(serialize_to_array_end:operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions)
2422 return target;
2423}
2424
2425#if defined(PROTOBUF_CUSTOM_VTABLE)
2428#else // PROTOBUF_CUSTOM_VTABLE
2431#endif // PROTOBUF_CUSTOM_VTABLE
2432 // @@protoc_insertion_point(message_byte_size_start:operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions)
2433 ::size_t total_size = 0;
2434
2435 ::uint32_t cached_has_bits = 0;
2436 // Prevent compiler warnings about cached_has_bits being unused
2437 (void)cached_has_bits;
2438
2439 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
2440 cached_has_bits = this_._impl_._has_bits_[0];
2441 total_size += static_cast<bool>(0x00000002u & cached_has_bits) * 2;
2442 {
2443 // optional .operations_research.glop.GlopParameters glop_parameters = 2;
2444 if ((cached_has_bits & 0x00000001u) != 0) {
2445 total_size += 1 +
2446 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.glop_parameters_);
2447 }
2448 }
2449 return this_.MaybeComputeUnknownFieldsSize(total_size,
2450 &this_._impl_._cached_size_);
2451}
2452
2453void PrimalDualHybridGradientParams_PresolveOptions::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
2454 auto* const _this = static_cast<PrimalDualHybridGradientParams_PresolveOptions*>(&to_msg);
2455 auto& from = static_cast<const PrimalDualHybridGradientParams_PresolveOptions&>(from_msg);
2456 ::google::protobuf::Arena* arena = _this->GetArena();
2457 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions)
2458 ABSL_DCHECK_NE(&from, _this);
2459 ::uint32_t cached_has_bits = 0;
2460 (void) cached_has_bits;
2461
2462 cached_has_bits = from._impl_._has_bits_[0];
2463 if ((cached_has_bits & 0x00000003u) != 0) {
2464 if ((cached_has_bits & 0x00000001u) != 0) {
2465 ABSL_DCHECK(from._impl_.glop_parameters_ != nullptr);
2466 if (_this->_impl_.glop_parameters_ == nullptr) {
2467 _this->_impl_.glop_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.glop_parameters_);
2468 } else {
2469 _this->_impl_.glop_parameters_->MergeFrom(*from._impl_.glop_parameters_);
2470 }
2471 }
2472 if ((cached_has_bits & 0x00000002u) != 0) {
2473 _this->_impl_.use_glop_ = from._impl_.use_glop_;
2474 }
2475 }
2476 _this->_impl_._has_bits_[0] |= cached_has_bits;
2477 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
2478}
2479
2481// @@protoc_insertion_point(class_specific_copy_from_start:operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions)
2482 if (&from == this) return;
2483 Clear();
2484 MergeFrom(from);
2485}
2487
2488void PrimalDualHybridGradientParams_PresolveOptions::InternalSwap(PrimalDualHybridGradientParams_PresolveOptions* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
2489 using ::std::swap;
2490 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
2491 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
2492 ::google::protobuf::internal::memswap<
2493 PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams_PresolveOptions, _impl_.use_glop_)
2495 - PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams_PresolveOptions, _impl_.glop_parameters_)>(
2496 reinterpret_cast<char*>(&_impl_.glop_parameters_),
2497 reinterpret_cast<char*>(&other->_impl_.glop_parameters_));
2498}
2499
2500::google::protobuf::Metadata PrimalDualHybridGradientParams_PresolveOptions::GetMetadata() const {
2501 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
2502}
2503// ===================================================================
2504
2505class PrimalDualHybridGradientParams::_Internal {
2506 public:
2507 using HasBits =
2508 decltype(::std::declval<PrimalDualHybridGradientParams>()._impl_._has_bits_);
2509 static constexpr ::int32_t kHasBitsOffset =
2510 8 * PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_._has_bits_);
2511};
2513PrimalDualHybridGradientParams::PrimalDualHybridGradientParams(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
2514#if defined(PROTOBUF_CUSTOM_VTABLE)
2515 : ::google::protobuf::Message(arena, PrimalDualHybridGradientParams_class_data_.base()) {
2516#else // PROTOBUF_CUSTOM_VTABLE
2517 : ::google::protobuf::Message(arena) {
2518#endif // PROTOBUF_CUSTOM_VTABLE
2519 SharedCtor(arena);
2520 // @@protoc_insertion_point(arena_constructor:operations_research.pdlp.PrimalDualHybridGradientParams)
2521}
2522PROTOBUF_NDEBUG_INLINE PrimalDualHybridGradientParams::Impl_::Impl_(
2523 ::google::protobuf::internal::InternalVisibility visibility,
2524 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
2525 const ::operations_research::pdlp::PrimalDualHybridGradientParams& from_msg)
2526 : _has_bits_{from._has_bits_},
2527 _cached_size_{0},
2528 random_projection_seeds_{visibility, arena, from.random_projection_seeds_},
2529 _random_projection_seeds_cached_byte_size_{0} {}
2530
2532 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena,
2533 const PrimalDualHybridGradientParams& from)
2534#if defined(PROTOBUF_CUSTOM_VTABLE)
2535 : ::google::protobuf::Message(arena, PrimalDualHybridGradientParams_class_data_.base()) {
2536#else // PROTOBUF_CUSTOM_VTABLE
2537 : ::google::protobuf::Message(arena) {
2538#endif // PROTOBUF_CUSTOM_VTABLE
2539 PrimalDualHybridGradientParams* const _this = this;
2540 (void)_this;
2541 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
2542 from._internal_metadata_);
2543 new (&_impl_) Impl_(internal_visibility(), arena, from._impl_, from);
2544 ::uint32_t cached_has_bits = _impl_._has_bits_[0];
2545 _impl_.termination_criteria_ = ((cached_has_bits & 0x00000001u) != 0)
2546 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.termination_criteria_)
2547 : nullptr;
2548 _impl_.presolve_options_ = ((cached_has_bits & 0x00000002u) != 0)
2549 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.presolve_options_)
2550 : nullptr;
2551 _impl_.adaptive_linesearch_parameters_ = ((cached_has_bits & 0x00000004u) != 0)
2552 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.adaptive_linesearch_parameters_)
2553 : nullptr;
2554 _impl_.malitsky_pock_parameters_ = ((cached_has_bits & 0x00000008u) != 0)
2555 ? ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.malitsky_pock_parameters_)
2556 : nullptr;
2557 ::memcpy(reinterpret_cast<char *>(&_impl_) +
2558 offsetof(Impl_, initial_primal_weight_),
2559 reinterpret_cast<const char *>(&from._impl_) +
2560 offsetof(Impl_, initial_primal_weight_),
2561 offsetof(Impl_, initial_step_size_scaling_) -
2562 offsetof(Impl_, initial_primal_weight_) +
2563 sizeof(Impl_::initial_step_size_scaling_));
2564
2565 // @@protoc_insertion_point(copy_constructor:operations_research.pdlp.PrimalDualHybridGradientParams)
2566}
2567PROTOBUF_NDEBUG_INLINE PrimalDualHybridGradientParams::Impl_::Impl_(
2568 ::google::protobuf::internal::InternalVisibility visibility,
2569 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
2570 : _cached_size_{0},
2571 random_projection_seeds_{visibility, arena},
2572 _random_projection_seeds_cached_byte_size_{0},
2573 num_threads_{1},
2574 major_iteration_frequency_{64},
2575 termination_check_frequency_{64},
2576 restart_strategy_{static_cast< ::operations_research::pdlp::PrimalDualHybridGradientParams_RestartStrategy >(3)},
2577 primal_weight_update_smoothing_{0.5},
2578 l_inf_ruiz_iterations_{5},
2579 linesearch_rule_{static_cast< ::operations_research::pdlp::PrimalDualHybridGradientParams_LinesearchRule >(1)},
2580 sufficient_reduction_for_restart_{0.1},
2581 necessary_reduction_for_restart_{0.9},
2582 infinite_constraint_bound_threshold_{std::numeric_limits<double>::infinity()},
2583 l2_norm_rescaling_{true},
2584 handle_some_primal_gradients_on_finite_bounds_as_residuals_{true},
2585 scheduler_type_{static_cast< ::operations_research::pdlp::SchedulerType >(1)},
2586 diagonal_qp_trust_region_solver_tolerance_{1e-08},
2587 initial_step_size_scaling_{1} {}
2588
2589inline void PrimalDualHybridGradientParams::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
2590 new (&_impl_) Impl_(internal_visibility(), arena);
2591 ::memset(reinterpret_cast<char *>(&_impl_) +
2592 offsetof(Impl_, termination_criteria_),
2593 0,
2594 offsetof(Impl_, log_interval_seconds_) -
2595 offsetof(Impl_, termination_criteria_) +
2596 sizeof(Impl_::log_interval_seconds_));
2597}
2599 // @@protoc_insertion_point(destructor:operations_research.pdlp.PrimalDualHybridGradientParams)
2600 SharedDtor(*this);
2601}
2602inline void PrimalDualHybridGradientParams::SharedDtor(MessageLite& self) {
2604 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
2605 ABSL_DCHECK(this_.GetArena() == nullptr);
2606 delete this_._impl_.termination_criteria_;
2607 delete this_._impl_.presolve_options_;
2608 delete this_._impl_.adaptive_linesearch_parameters_;
2609 delete this_._impl_.malitsky_pock_parameters_;
2610 this_._impl_.~Impl_();
2611}
2612
2613inline void* PROTOBUF_NONNULL PrimalDualHybridGradientParams::PlacementNew_(
2614 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
2615 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
2616 return ::new (mem) PrimalDualHybridGradientParams(arena);
2617}
2619 constexpr auto arena_bits = ::google::protobuf::internal::EncodePlacementArenaOffsets({
2620 PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.random_projection_seeds_) +
2621 decltype(PrimalDualHybridGradientParams::_impl_.random_projection_seeds_)::
2622 InternalGetArenaOffset(
2623 ::google::protobuf::Message::internal_visibility()),
2624 });
2625 if (arena_bits.has_value()) {
2626 return ::google::protobuf::internal::MessageCreator::CopyInit(
2627 sizeof(PrimalDualHybridGradientParams), alignof(PrimalDualHybridGradientParams), *arena_bits);
2628 } else {
2629 return ::google::protobuf::internal::MessageCreator(&PrimalDualHybridGradientParams::PlacementNew_,
2630 sizeof(PrimalDualHybridGradientParams),
2631 alignof(PrimalDualHybridGradientParams));
2632 }
2633}
2635 return ::google::protobuf::internal::ClassDataFull{
2636 ::google::protobuf::internal::ClassData{
2638 &_table_.header,
2639 nullptr, // OnDemandRegisterArenaDtor
2640 nullptr, // IsInitialized
2641 &PrimalDualHybridGradientParams::MergeImpl,
2642 ::google::protobuf::Message::GetNewImpl<PrimalDualHybridGradientParams>(),
2643#if defined(PROTOBUF_CUSTOM_VTABLE)
2644 &PrimalDualHybridGradientParams::SharedDtor,
2645 ::google::protobuf::Message::GetClearImpl<PrimalDualHybridGradientParams>(), &PrimalDualHybridGradientParams::ByteSizeLong,
2647#endif // PROTOBUF_CUSTOM_VTABLE
2648 PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_._cached_size_),
2649 false,
2650 },
2651 &PrimalDualHybridGradientParams::kDescriptorMethods,
2653 nullptr, // tracker
2654 };
2655}
2656
2657PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
2658 ::google::protobuf::internal::ClassDataFull PrimalDualHybridGradientParams_class_data_ =
2660
2661PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
2663 ::google::protobuf::internal::PrefetchToLocalCache(&PrimalDualHybridGradientParams_class_data_);
2664 ::google::protobuf::internal::PrefetchToLocalCache(PrimalDualHybridGradientParams_class_data_.tc_table);
2666}
2667PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
2668const ::_pbi::TcParseTable<5, 29, 7, 0, 7>
2669PrimalDualHybridGradientParams::_table_ = {
2670 {
2671 PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_._has_bits_),
2672 0, // no _extensions_
2673 34, 248, // max_field_number, fast_idx_mask
2674 offsetof(decltype(_table_), field_lookup_table),
2675 1601536, // skipmap
2676 offsetof(decltype(_table_), field_entries),
2677 29, // num_field_entries
2678 7, // num_aux_entries
2679 offsetof(decltype(_table_), aux_entries),
2681 nullptr, // post_loop_handler
2682 ::_pbi::TcParser::GenericFallback, // fallback
2683 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
2684 ::_pbi::TcParser::GetTable<::operations_research::pdlp::PrimalDualHybridGradientParams>(), // to_prefetch
2685 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
2686 }, {{
2687 {::_pbi::TcParser::MiniParse, {}},
2688 // optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
2689 {::_pbi::TcParser::FastMtS1,
2690 {10, 0, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.termination_criteria_)}},
2691 // optional int32 num_threads = 2 [default = 1];
2692 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PrimalDualHybridGradientParams, _impl_.num_threads_), 13>(),
2693 {16, 13, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.num_threads_)}},
2694 // optional bool record_iteration_stats = 3;
2695 {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(PrimalDualHybridGradientParams, _impl_.record_iteration_stats_), 5>(),
2696 {24, 5, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.record_iteration_stats_)}},
2697 // optional int32 major_iteration_frequency = 4 [default = 64];
2698 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PrimalDualHybridGradientParams, _impl_.major_iteration_frequency_), 14>(),
2699 {32, 14, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.major_iteration_frequency_)}},
2700 // optional int32 termination_check_frequency = 5 [default = 64];
2701 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PrimalDualHybridGradientParams, _impl_.termination_check_frequency_), 15>(),
2702 {40, 15, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.termination_check_frequency_)}},
2703 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.RestartStrategy restart_strategy = 6 [default = ADAPTIVE_HEURISTIC];
2704 {::_pbi::TcParser::FastEr0S1,
2705 {48, 16, 4, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.restart_strategy_)}},
2706 // optional double primal_weight_update_smoothing = 7 [default = 0.5];
2707 {::_pbi::TcParser::FastF64S1,
2708 {57, 17, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.primal_weight_update_smoothing_)}},
2709 // optional double initial_primal_weight = 8;
2710 {::_pbi::TcParser::FastF64S1,
2711 {65, 4, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.initial_primal_weight_)}},
2712 // optional int32 l_inf_ruiz_iterations = 9 [default = 5];
2713 {::_pbi::TcParser::SingularVarintNoZag1<::uint32_t, offsetof(PrimalDualHybridGradientParams, _impl_.l_inf_ruiz_iterations_), 18>(),
2714 {72, 18, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.l_inf_ruiz_iterations_)}},
2715 // optional bool l2_norm_rescaling = 10 [default = true];
2716 {::_pbi::TcParser::SingularVarintNoZag1<bool, offsetof(PrimalDualHybridGradientParams, _impl_.l2_norm_rescaling_), 23>(),
2717 {80, 23, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.l2_norm_rescaling_)}},
2718 // optional double sufficient_reduction_for_restart = 11 [default = 0.1];
2719 {::_pbi::TcParser::FastF64S1,
2720 {89, 20, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.sufficient_reduction_for_restart_)}},
2721 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.LinesearchRule linesearch_rule = 12 [default = ADAPTIVE_LINESEARCH_RULE];
2722 {::_pbi::TcParser::FastEr0S1,
2723 {96, 19, 3, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.linesearch_rule_)}},
2724 {::_pbi::TcParser::MiniParse, {}},
2725 {::_pbi::TcParser::MiniParse, {}},
2726 {::_pbi::TcParser::MiniParse, {}},
2727 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
2728 {::_pbi::TcParser::FastMtS2,
2729 {386, 1, 1, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.presolve_options_)}},
2730 // optional double necessary_reduction_for_restart = 17 [default = 0.9];
2731 {::_pbi::TcParser::FastF64S2,
2732 {393, 21, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.necessary_reduction_for_restart_)}},
2733 // optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
2734 {::_pbi::TcParser::FastMtS2,
2735 {402, 2, 2, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.adaptive_linesearch_parameters_)}},
2736 // optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
2737 {::_pbi::TcParser::FastMtS2,
2738 {410, 3, 3, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.malitsky_pock_parameters_)}},
2739 {::_pbi::TcParser::MiniParse, {}},
2740 {::_pbi::TcParser::MiniParse, {}},
2741 // optional double infinite_constraint_bound_threshold = 22 [default = inf];
2742 {::_pbi::TcParser::FastF64S2,
2743 {433, 22, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.infinite_constraint_bound_threshold_)}},
2744 // optional bool use_diagonal_qp_trust_region_solver = 23 [default = false];
2745 {::_pbi::TcParser::FastV8S2,
2746 {440, 6, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.use_diagonal_qp_trust_region_solver_)}},
2747 // optional double diagonal_qp_trust_region_solver_tolerance = 24 [default = 1e-08];
2748 {::_pbi::TcParser::FastF64S2,
2749 {449, 26, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.diagonal_qp_trust_region_solver_tolerance_)}},
2750 // optional double initial_step_size_scaling = 25 [default = 1];
2751 {::_pbi::TcParser::FastF64S2,
2752 {457, 27, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.initial_step_size_scaling_)}},
2753 // optional int32 verbosity_level = 26 [default = 0];
2754 {::_pbi::TcParser::FastV32S2,
2755 {464, 9, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.verbosity_level_)}},
2756 // optional int32 num_shards = 27 [default = 0];
2757 {::_pbi::TcParser::FastV32S2,
2758 {472, 10, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.num_shards_)}},
2759 // repeated int32 random_projection_seeds = 28 [packed = true];
2760 {::_pbi::TcParser::FastV32P2,
2761 {482, 63, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.random_projection_seeds_)}},
2762 // optional bool handle_some_primal_gradients_on_finite_bounds_as_residuals = 29 [default = true];
2763 {::_pbi::TcParser::FastV8S2,
2764 {488, 24, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.handle_some_primal_gradients_on_finite_bounds_as_residuals_)}},
2765 // optional bool use_feasibility_polishing = 30 [default = false];
2766 {::_pbi::TcParser::FastV8S2,
2767 {496, 7, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.use_feasibility_polishing_)}},
2768 // optional double log_interval_seconds = 31 [default = 0];
2769 {::_pbi::TcParser::FastF64S2,
2770 {505, 12, 0, PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.log_interval_seconds_)}},
2771 }}, {{
2772 33, 0, 1,
2773 65532, 27,
2774 65535, 65535
2775 }}, {{
2776 // optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
2777 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.termination_criteria_), _Internal::kHasBitsOffset + 0, 0,
2778 (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2779 // optional int32 num_threads = 2 [default = 1];
2780 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.num_threads_), _Internal::kHasBitsOffset + 13, 0,
2781 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2782 // optional bool record_iteration_stats = 3;
2783 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.record_iteration_stats_), _Internal::kHasBitsOffset + 5, 0,
2784 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2785 // optional int32 major_iteration_frequency = 4 [default = 64];
2786 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.major_iteration_frequency_), _Internal::kHasBitsOffset + 14, 0,
2787 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2788 // optional int32 termination_check_frequency = 5 [default = 64];
2789 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.termination_check_frequency_), _Internal::kHasBitsOffset + 15, 0,
2790 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2791 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.RestartStrategy restart_strategy = 6 [default = ADAPTIVE_HEURISTIC];
2792 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.restart_strategy_), _Internal::kHasBitsOffset + 16, 4,
2793 (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
2794 // optional double primal_weight_update_smoothing = 7 [default = 0.5];
2795 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.primal_weight_update_smoothing_), _Internal::kHasBitsOffset + 17, 0,
2796 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2797 // optional double initial_primal_weight = 8;
2798 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.initial_primal_weight_), _Internal::kHasBitsOffset + 4, 0,
2799 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2800 // optional int32 l_inf_ruiz_iterations = 9 [default = 5];
2801 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.l_inf_ruiz_iterations_), _Internal::kHasBitsOffset + 18, 0,
2802 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2803 // optional bool l2_norm_rescaling = 10 [default = true];
2804 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.l2_norm_rescaling_), _Internal::kHasBitsOffset + 23, 0,
2805 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2806 // optional double sufficient_reduction_for_restart = 11 [default = 0.1];
2807 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.sufficient_reduction_for_restart_), _Internal::kHasBitsOffset + 20, 0,
2808 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2809 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.LinesearchRule linesearch_rule = 12 [default = ADAPTIVE_LINESEARCH_RULE];
2810 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.linesearch_rule_), _Internal::kHasBitsOffset + 19, 5,
2811 (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
2812 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
2813 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.presolve_options_), _Internal::kHasBitsOffset + 1, 1,
2814 (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2815 // optional double necessary_reduction_for_restart = 17 [default = 0.9];
2816 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.necessary_reduction_for_restart_), _Internal::kHasBitsOffset + 21, 0,
2817 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2818 // optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
2819 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.adaptive_linesearch_parameters_), _Internal::kHasBitsOffset + 2, 2,
2820 (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2821 // optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
2822 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.malitsky_pock_parameters_), _Internal::kHasBitsOffset + 3, 3,
2823 (0 | ::_fl::kFcOptional | ::_fl::kMessage | ::_fl::kTvTable)},
2824 // optional double infinite_constraint_bound_threshold = 22 [default = inf];
2825 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.infinite_constraint_bound_threshold_), _Internal::kHasBitsOffset + 22, 0,
2826 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2827 // optional bool use_diagonal_qp_trust_region_solver = 23 [default = false];
2828 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.use_diagonal_qp_trust_region_solver_), _Internal::kHasBitsOffset + 6, 0,
2829 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2830 // optional double diagonal_qp_trust_region_solver_tolerance = 24 [default = 1e-08];
2831 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.diagonal_qp_trust_region_solver_tolerance_), _Internal::kHasBitsOffset + 26, 0,
2832 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2833 // optional double initial_step_size_scaling = 25 [default = 1];
2834 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.initial_step_size_scaling_), _Internal::kHasBitsOffset + 27, 0,
2835 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2836 // optional int32 verbosity_level = 26 [default = 0];
2837 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.verbosity_level_), _Internal::kHasBitsOffset + 9, 0,
2838 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2839 // optional int32 num_shards = 27 [default = 0];
2840 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.num_shards_), _Internal::kHasBitsOffset + 10, 0,
2841 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
2842 // repeated int32 random_projection_seeds = 28 [packed = true];
2843 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.random_projection_seeds_), -1, 0,
2844 (0 | ::_fl::kFcRepeated | ::_fl::kPackedInt32)},
2845 // optional bool handle_some_primal_gradients_on_finite_bounds_as_residuals = 29 [default = true];
2846 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.handle_some_primal_gradients_on_finite_bounds_as_residuals_), _Internal::kHasBitsOffset + 24, 0,
2847 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2848 // optional bool use_feasibility_polishing = 30 [default = false];
2849 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.use_feasibility_polishing_), _Internal::kHasBitsOffset + 7, 0,
2850 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2851 // optional double log_interval_seconds = 31 [default = 0];
2852 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.log_interval_seconds_), _Internal::kHasBitsOffset + 12, 0,
2853 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
2854 // optional .operations_research.pdlp.SchedulerType scheduler_type = 32 [default = SCHEDULER_TYPE_GOOGLE_THREADPOOL];
2855 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.scheduler_type_), _Internal::kHasBitsOffset + 25, 6,
2856 (0 | ::_fl::kFcOptional | ::_fl::kEnum)},
2857 // optional bool apply_feasibility_polishing_after_limits_reached = 33 [default = false];
2858 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.apply_feasibility_polishing_after_limits_reached_), _Internal::kHasBitsOffset + 8, 0,
2859 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2860 // optional bool apply_feasibility_polishing_if_solver_is_interrupted = 34 [default = false];
2861 {PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.apply_feasibility_polishing_if_solver_is_interrupted_), _Internal::kHasBitsOffset + 11, 0,
2862 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
2863 }},
2864 {{
2865 {::_pbi::TcParser::GetTable<::operations_research::pdlp::TerminationCriteria>()},
2866 {::_pbi::TcParser::GetTable<::operations_research::pdlp::PrimalDualHybridGradientParams_PresolveOptions>()},
2867 {::_pbi::TcParser::GetTable<::operations_research::pdlp::AdaptiveLinesearchParams>()},
2868 {::_pbi::TcParser::GetTable<::operations_research::pdlp::MalitskyPockParams>()},
2869 {0, 4},
2870 {0, 3},
2872 }},
2873 {{
2874 }},
2875};
2876PROTOBUF_NOINLINE void PrimalDualHybridGradientParams::Clear() {
2877// @@protoc_insertion_point(message_clear_start:operations_research.pdlp.PrimalDualHybridGradientParams)
2878 ::google::protobuf::internal::TSanWrite(&_impl_);
2879 ::uint32_t cached_has_bits = 0;
2880 // Prevent compiler warnings about cached_has_bits being unused
2881 (void) cached_has_bits;
2882
2883 _impl_.random_projection_seeds_.Clear();
2884 cached_has_bits = _impl_._has_bits_[0];
2885 if ((cached_has_bits & 0x0000000fu) != 0) {
2886 if ((cached_has_bits & 0x00000001u) != 0) {
2887 ABSL_DCHECK(_impl_.termination_criteria_ != nullptr);
2888 _impl_.termination_criteria_->Clear();
2889 }
2890 if ((cached_has_bits & 0x00000002u) != 0) {
2891 ABSL_DCHECK(_impl_.presolve_options_ != nullptr);
2892 _impl_.presolve_options_->Clear();
2893 }
2894 if ((cached_has_bits & 0x00000004u) != 0) {
2895 ABSL_DCHECK(_impl_.adaptive_linesearch_parameters_ != nullptr);
2896 _impl_.adaptive_linesearch_parameters_->Clear();
2897 }
2898 if ((cached_has_bits & 0x00000008u) != 0) {
2899 ABSL_DCHECK(_impl_.malitsky_pock_parameters_ != nullptr);
2900 _impl_.malitsky_pock_parameters_->Clear();
2901 }
2902 }
2903 if ((cached_has_bits & 0x000000f0u) != 0) {
2904 ::memset(&_impl_.initial_primal_weight_, 0, static_cast<::size_t>(
2905 reinterpret_cast<char*>(&_impl_.use_feasibility_polishing_) -
2906 reinterpret_cast<char*>(&_impl_.initial_primal_weight_)) + sizeof(_impl_.use_feasibility_polishing_));
2907 }
2908 if ((cached_has_bits & 0x0000ff00u) != 0) {
2909 ::memset(&_impl_.apply_feasibility_polishing_after_limits_reached_, 0, static_cast<::size_t>(
2910 reinterpret_cast<char*>(&_impl_.log_interval_seconds_) -
2911 reinterpret_cast<char*>(&_impl_.apply_feasibility_polishing_after_limits_reached_)) + sizeof(_impl_.log_interval_seconds_));
2912 _impl_.num_threads_ = 1;
2913 _impl_.major_iteration_frequency_ = 64;
2914 _impl_.termination_check_frequency_ = 64;
2915 }
2916 if ((cached_has_bits & 0x00ff0000u) != 0) {
2917 _impl_.restart_strategy_ = 3;
2918 _impl_.primal_weight_update_smoothing_ = 0.5;
2919 _impl_.l_inf_ruiz_iterations_ = 5;
2920 _impl_.linesearch_rule_ = 1;
2921 _impl_.sufficient_reduction_for_restart_ = 0.1;
2922 _impl_.necessary_reduction_for_restart_ = 0.9;
2923 _impl_.infinite_constraint_bound_threshold_ = std::numeric_limits<double>::infinity();
2924 _impl_.l2_norm_rescaling_ = true;
2925 }
2926 if ((cached_has_bits & 0x0f000000u) != 0) {
2927 _impl_.handle_some_primal_gradients_on_finite_bounds_as_residuals_ = true;
2928 _impl_.scheduler_type_ = 1;
2929 _impl_.diagonal_qp_trust_region_solver_tolerance_ = 1e-08;
2930 _impl_.initial_step_size_scaling_ = 1;
2931 }
2932 _impl_._has_bits_.Clear();
2933 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
2934}
2935
2936#if defined(PROTOBUF_CUSTOM_VTABLE)
2937::uint8_t* PROTOBUF_NONNULL PrimalDualHybridGradientParams::_InternalSerialize(
2938 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
2939 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
2940 const PrimalDualHybridGradientParams& this_ = static_cast<const PrimalDualHybridGradientParams&>(base);
2941#else // PROTOBUF_CUSTOM_VTABLE
2942::uint8_t* PROTOBUF_NONNULL PrimalDualHybridGradientParams::_InternalSerialize(
2943 ::uint8_t* PROTOBUF_NONNULL target,
2944 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
2945 const PrimalDualHybridGradientParams& this_ = *this;
2946#endif // PROTOBUF_CUSTOM_VTABLE
2947 // @@protoc_insertion_point(serialize_to_array_start:operations_research.pdlp.PrimalDualHybridGradientParams)
2948 ::uint32_t cached_has_bits = 0;
2949 (void)cached_has_bits;
2950
2951 cached_has_bits = this_._impl_._has_bits_[0];
2952 // optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
2953 if ((cached_has_bits & 0x00000001u) != 0) {
2954 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
2955 1, *this_._impl_.termination_criteria_, this_._impl_.termination_criteria_->GetCachedSize(), target,
2956 stream);
2957 }
2958
2959 // optional int32 num_threads = 2 [default = 1];
2960 if ((cached_has_bits & 0x00002000u) != 0) {
2961 target =
2962 ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<2>(
2963 stream, this_._internal_num_threads(), target);
2964 }
2965
2966 // optional bool record_iteration_stats = 3;
2967 if ((cached_has_bits & 0x00000020u) != 0) {
2968 target = stream->EnsureSpace(target);
2969 target = ::_pbi::WireFormatLite::WriteBoolToArray(
2970 3, this_._internal_record_iteration_stats(), target);
2971 }
2972
2973 // optional int32 major_iteration_frequency = 4 [default = 64];
2974 if ((cached_has_bits & 0x00004000u) != 0) {
2975 target =
2976 ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<4>(
2977 stream, this_._internal_major_iteration_frequency(), target);
2978 }
2979
2980 // optional int32 termination_check_frequency = 5 [default = 64];
2981 if ((cached_has_bits & 0x00008000u) != 0) {
2982 target =
2983 ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<5>(
2984 stream, this_._internal_termination_check_frequency(), target);
2985 }
2986
2987 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.RestartStrategy restart_strategy = 6 [default = ADAPTIVE_HEURISTIC];
2988 if ((cached_has_bits & 0x00010000u) != 0) {
2989 target = stream->EnsureSpace(target);
2990 target = ::_pbi::WireFormatLite::WriteEnumToArray(
2991 6, this_._internal_restart_strategy(), target);
2992 }
2993
2994 // optional double primal_weight_update_smoothing = 7 [default = 0.5];
2995 if ((cached_has_bits & 0x00020000u) != 0) {
2996 target = stream->EnsureSpace(target);
2997 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
2998 7, this_._internal_primal_weight_update_smoothing(), target);
2999 }
3000
3001 // optional double initial_primal_weight = 8;
3002 if ((cached_has_bits & 0x00000010u) != 0) {
3003 target = stream->EnsureSpace(target);
3004 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3005 8, this_._internal_initial_primal_weight(), target);
3006 }
3007
3008 // optional int32 l_inf_ruiz_iterations = 9 [default = 5];
3009 if ((cached_has_bits & 0x00040000u) != 0) {
3010 target =
3011 ::google::protobuf::internal::WireFormatLite::WriteInt32ToArrayWithField<9>(
3012 stream, this_._internal_l_inf_ruiz_iterations(), target);
3013 }
3014
3015 // optional bool l2_norm_rescaling = 10 [default = true];
3016 if ((cached_has_bits & 0x00800000u) != 0) {
3017 target = stream->EnsureSpace(target);
3018 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3019 10, this_._internal_l2_norm_rescaling(), target);
3020 }
3021
3022 // optional double sufficient_reduction_for_restart = 11 [default = 0.1];
3023 if ((cached_has_bits & 0x00100000u) != 0) {
3024 target = stream->EnsureSpace(target);
3025 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3026 11, this_._internal_sufficient_reduction_for_restart(), target);
3027 }
3028
3029 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.LinesearchRule linesearch_rule = 12 [default = ADAPTIVE_LINESEARCH_RULE];
3030 if ((cached_has_bits & 0x00080000u) != 0) {
3031 target = stream->EnsureSpace(target);
3032 target = ::_pbi::WireFormatLite::WriteEnumToArray(
3033 12, this_._internal_linesearch_rule(), target);
3034 }
3035
3036 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
3037 if ((cached_has_bits & 0x00000002u) != 0) {
3038 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3039 16, *this_._impl_.presolve_options_, this_._impl_.presolve_options_->GetCachedSize(), target,
3040 stream);
3041 }
3042
3043 // optional double necessary_reduction_for_restart = 17 [default = 0.9];
3044 if ((cached_has_bits & 0x00200000u) != 0) {
3045 target = stream->EnsureSpace(target);
3046 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3047 17, this_._internal_necessary_reduction_for_restart(), target);
3048 }
3049
3050 // optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
3051 if ((cached_has_bits & 0x00000004u) != 0) {
3052 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3053 18, *this_._impl_.adaptive_linesearch_parameters_, this_._impl_.adaptive_linesearch_parameters_->GetCachedSize(), target,
3054 stream);
3055 }
3056
3057 // optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
3058 if ((cached_has_bits & 0x00000008u) != 0) {
3059 target = ::google::protobuf::internal::WireFormatLite::InternalWriteMessage(
3060 19, *this_._impl_.malitsky_pock_parameters_, this_._impl_.malitsky_pock_parameters_->GetCachedSize(), target,
3061 stream);
3062 }
3063
3064 // optional double infinite_constraint_bound_threshold = 22 [default = inf];
3065 if ((cached_has_bits & 0x00400000u) != 0) {
3066 target = stream->EnsureSpace(target);
3067 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3068 22, this_._internal_infinite_constraint_bound_threshold(), target);
3069 }
3070
3071 // optional bool use_diagonal_qp_trust_region_solver = 23 [default = false];
3072 if ((cached_has_bits & 0x00000040u) != 0) {
3073 target = stream->EnsureSpace(target);
3074 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3075 23, this_._internal_use_diagonal_qp_trust_region_solver(), target);
3076 }
3077
3078 // optional double diagonal_qp_trust_region_solver_tolerance = 24 [default = 1e-08];
3079 if ((cached_has_bits & 0x04000000u) != 0) {
3080 target = stream->EnsureSpace(target);
3081 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3082 24, this_._internal_diagonal_qp_trust_region_solver_tolerance(), target);
3083 }
3084
3085 // optional double initial_step_size_scaling = 25 [default = 1];
3086 if ((cached_has_bits & 0x08000000u) != 0) {
3087 target = stream->EnsureSpace(target);
3088 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3089 25, this_._internal_initial_step_size_scaling(), target);
3090 }
3091
3092 // optional int32 verbosity_level = 26 [default = 0];
3093 if ((cached_has_bits & 0x00000200u) != 0) {
3094 target = stream->EnsureSpace(target);
3095 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3096 26, this_._internal_verbosity_level(), target);
3097 }
3098
3099 // optional int32 num_shards = 27 [default = 0];
3100 if ((cached_has_bits & 0x00000400u) != 0) {
3101 target = stream->EnsureSpace(target);
3102 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
3103 27, this_._internal_num_shards(), target);
3104 }
3105
3106 // repeated int32 random_projection_seeds = 28 [packed = true];
3107 {
3108 int byte_size = this_._impl_._random_projection_seeds_cached_byte_size_.Get();
3109 if (byte_size > 0) {
3110 target = stream->WriteInt32Packed(
3111 28, this_._internal_random_projection_seeds(), byte_size, target);
3112 }
3113 }
3114
3115 // optional bool handle_some_primal_gradients_on_finite_bounds_as_residuals = 29 [default = true];
3116 if ((cached_has_bits & 0x01000000u) != 0) {
3117 target = stream->EnsureSpace(target);
3118 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3119 29, this_._internal_handle_some_primal_gradients_on_finite_bounds_as_residuals(), target);
3120 }
3121
3122 // optional bool use_feasibility_polishing = 30 [default = false];
3123 if ((cached_has_bits & 0x00000080u) != 0) {
3124 target = stream->EnsureSpace(target);
3125 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3126 30, this_._internal_use_feasibility_polishing(), target);
3127 }
3128
3129 // optional double log_interval_seconds = 31 [default = 0];
3130 if ((cached_has_bits & 0x00001000u) != 0) {
3131 target = stream->EnsureSpace(target);
3132 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
3133 31, this_._internal_log_interval_seconds(), target);
3134 }
3135
3136 // optional .operations_research.pdlp.SchedulerType scheduler_type = 32 [default = SCHEDULER_TYPE_GOOGLE_THREADPOOL];
3137 if ((cached_has_bits & 0x02000000u) != 0) {
3138 target = stream->EnsureSpace(target);
3139 target = ::_pbi::WireFormatLite::WriteEnumToArray(
3140 32, this_._internal_scheduler_type(), target);
3141 }
3142
3143 // optional bool apply_feasibility_polishing_after_limits_reached = 33 [default = false];
3144 if ((cached_has_bits & 0x00000100u) != 0) {
3145 target = stream->EnsureSpace(target);
3146 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3147 33, this_._internal_apply_feasibility_polishing_after_limits_reached(), target);
3148 }
3149
3150 // optional bool apply_feasibility_polishing_if_solver_is_interrupted = 34 [default = false];
3151 if ((cached_has_bits & 0x00000800u) != 0) {
3152 target = stream->EnsureSpace(target);
3153 target = ::_pbi::WireFormatLite::WriteBoolToArray(
3154 34, this_._internal_apply_feasibility_polishing_if_solver_is_interrupted(), target);
3155 }
3156
3157 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
3158 target =
3159 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
3160 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
3161 }
3162 // @@protoc_insertion_point(serialize_to_array_end:operations_research.pdlp.PrimalDualHybridGradientParams)
3163 return target;
3164}
3165
3166#if defined(PROTOBUF_CUSTOM_VTABLE)
3168 const PrimalDualHybridGradientParams& this_ = static_cast<const PrimalDualHybridGradientParams&>(base);
3169#else // PROTOBUF_CUSTOM_VTABLE
3171 const PrimalDualHybridGradientParams& this_ = *this;
3172#endif // PROTOBUF_CUSTOM_VTABLE
3173 // @@protoc_insertion_point(message_byte_size_start:operations_research.pdlp.PrimalDualHybridGradientParams)
3174 ::size_t total_size = 0;
3175
3176 ::uint32_t cached_has_bits = 0;
3177 // Prevent compiler warnings about cached_has_bits being unused
3178 (void)cached_has_bits;
3179
3180 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
3181 {
3182 // repeated int32 random_projection_seeds = 28 [packed = true];
3183 {
3184 total_size +=
3185 ::_pbi::WireFormatLite::Int32SizeWithPackedTagSize(
3186 this_._internal_random_projection_seeds(), 2,
3187 this_._impl_._random_projection_seeds_cached_byte_size_);
3188 }
3189 }
3190 cached_has_bits = this_._impl_._has_bits_[0];
3191 total_size += ::absl::popcount(0x0c601000u & cached_has_bits) * 10;
3192 total_size += ::absl::popcount(0x00120010u & cached_has_bits) * 9;
3193 total_size += ::absl::popcount(0x010009c0u & cached_has_bits) * 3;
3194 total_size += ::absl::popcount(0x00800020u & cached_has_bits) * 2;
3195 if ((cached_has_bits & 0x0000000fu) != 0) {
3196 // optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
3197 if ((cached_has_bits & 0x00000001u) != 0) {
3198 total_size += 1 +
3199 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.termination_criteria_);
3200 }
3201 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
3202 if ((cached_has_bits & 0x00000002u) != 0) {
3203 total_size += 2 +
3204 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.presolve_options_);
3205 }
3206 // optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
3207 if ((cached_has_bits & 0x00000004u) != 0) {
3208 total_size += 2 +
3209 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.adaptive_linesearch_parameters_);
3210 }
3211 // optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
3212 if ((cached_has_bits & 0x00000008u) != 0) {
3213 total_size += 2 +
3214 ::google::protobuf::internal::WireFormatLite::MessageSize(*this_._impl_.malitsky_pock_parameters_);
3215 }
3216 }
3217 if ((cached_has_bits & 0x0000e600u) != 0) {
3218 // optional int32 verbosity_level = 26 [default = 0];
3219 if ((cached_has_bits & 0x00000200u) != 0) {
3220 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3221 this_._internal_verbosity_level());
3222 }
3223 // optional int32 num_shards = 27 [default = 0];
3224 if ((cached_has_bits & 0x00000400u) != 0) {
3225 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
3226 this_._internal_num_shards());
3227 }
3228 // optional int32 num_threads = 2 [default = 1];
3229 if ((cached_has_bits & 0x00002000u) != 0) {
3230 total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
3231 this_._internal_num_threads());
3232 }
3233 // optional int32 major_iteration_frequency = 4 [default = 64];
3234 if ((cached_has_bits & 0x00004000u) != 0) {
3235 total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
3236 this_._internal_major_iteration_frequency());
3237 }
3238 // optional int32 termination_check_frequency = 5 [default = 64];
3239 if ((cached_has_bits & 0x00008000u) != 0) {
3240 total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
3241 this_._internal_termination_check_frequency());
3242 }
3243 }
3244 if ((cached_has_bits & 0x000d0000u) != 0) {
3245 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.RestartStrategy restart_strategy = 6 [default = ADAPTIVE_HEURISTIC];
3246 if ((cached_has_bits & 0x00010000u) != 0) {
3247 total_size += 1 +
3248 ::_pbi::WireFormatLite::EnumSize(this_._internal_restart_strategy());
3249 }
3250 // optional int32 l_inf_ruiz_iterations = 9 [default = 5];
3251 if ((cached_has_bits & 0x00040000u) != 0) {
3252 total_size += ::_pbi::WireFormatLite::Int32SizePlusOne(
3253 this_._internal_l_inf_ruiz_iterations());
3254 }
3255 // optional .operations_research.pdlp.PrimalDualHybridGradientParams.LinesearchRule linesearch_rule = 12 [default = ADAPTIVE_LINESEARCH_RULE];
3256 if ((cached_has_bits & 0x00080000u) != 0) {
3257 total_size += 1 +
3258 ::_pbi::WireFormatLite::EnumSize(this_._internal_linesearch_rule());
3259 }
3260 }
3261 {
3262 // optional .operations_research.pdlp.SchedulerType scheduler_type = 32 [default = SCHEDULER_TYPE_GOOGLE_THREADPOOL];
3263 if ((cached_has_bits & 0x02000000u) != 0) {
3264 total_size += 2 +
3265 ::_pbi::WireFormatLite::EnumSize(this_._internal_scheduler_type());
3266 }
3267 }
3268 return this_.MaybeComputeUnknownFieldsSize(total_size,
3269 &this_._impl_._cached_size_);
3270}
3271
3272void PrimalDualHybridGradientParams::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
3273 auto* const _this = static_cast<PrimalDualHybridGradientParams*>(&to_msg);
3274 auto& from = static_cast<const PrimalDualHybridGradientParams&>(from_msg);
3275 ::google::protobuf::Arena* arena = _this->GetArena();
3276 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.pdlp.PrimalDualHybridGradientParams)
3277 ABSL_DCHECK_NE(&from, _this);
3278 ::uint32_t cached_has_bits = 0;
3279 (void) cached_has_bits;
3280
3281 _this->_internal_mutable_random_projection_seeds()->MergeFrom(from._internal_random_projection_seeds());
3282 cached_has_bits = from._impl_._has_bits_[0];
3283 if ((cached_has_bits & 0x000000ffu) != 0) {
3284 if ((cached_has_bits & 0x00000001u) != 0) {
3285 ABSL_DCHECK(from._impl_.termination_criteria_ != nullptr);
3286 if (_this->_impl_.termination_criteria_ == nullptr) {
3287 _this->_impl_.termination_criteria_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.termination_criteria_);
3288 } else {
3289 _this->_impl_.termination_criteria_->MergeFrom(*from._impl_.termination_criteria_);
3290 }
3291 }
3292 if ((cached_has_bits & 0x00000002u) != 0) {
3293 ABSL_DCHECK(from._impl_.presolve_options_ != nullptr);
3294 if (_this->_impl_.presolve_options_ == nullptr) {
3295 _this->_impl_.presolve_options_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.presolve_options_);
3296 } else {
3297 _this->_impl_.presolve_options_->MergeFrom(*from._impl_.presolve_options_);
3298 }
3299 }
3300 if ((cached_has_bits & 0x00000004u) != 0) {
3301 ABSL_DCHECK(from._impl_.adaptive_linesearch_parameters_ != nullptr);
3302 if (_this->_impl_.adaptive_linesearch_parameters_ == nullptr) {
3303 _this->_impl_.adaptive_linesearch_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.adaptive_linesearch_parameters_);
3304 } else {
3305 _this->_impl_.adaptive_linesearch_parameters_->MergeFrom(*from._impl_.adaptive_linesearch_parameters_);
3306 }
3307 }
3308 if ((cached_has_bits & 0x00000008u) != 0) {
3309 ABSL_DCHECK(from._impl_.malitsky_pock_parameters_ != nullptr);
3310 if (_this->_impl_.malitsky_pock_parameters_ == nullptr) {
3311 _this->_impl_.malitsky_pock_parameters_ = ::google::protobuf::Message::CopyConstruct(arena, *from._impl_.malitsky_pock_parameters_);
3312 } else {
3313 _this->_impl_.malitsky_pock_parameters_->MergeFrom(*from._impl_.malitsky_pock_parameters_);
3314 }
3315 }
3316 if ((cached_has_bits & 0x00000010u) != 0) {
3317 _this->_impl_.initial_primal_weight_ = from._impl_.initial_primal_weight_;
3318 }
3319 if ((cached_has_bits & 0x00000020u) != 0) {
3320 _this->_impl_.record_iteration_stats_ = from._impl_.record_iteration_stats_;
3321 }
3322 if ((cached_has_bits & 0x00000040u) != 0) {
3323 _this->_impl_.use_diagonal_qp_trust_region_solver_ = from._impl_.use_diagonal_qp_trust_region_solver_;
3324 }
3325 if ((cached_has_bits & 0x00000080u) != 0) {
3326 _this->_impl_.use_feasibility_polishing_ = from._impl_.use_feasibility_polishing_;
3327 }
3328 }
3329 if ((cached_has_bits & 0x0000ff00u) != 0) {
3330 if ((cached_has_bits & 0x00000100u) != 0) {
3331 _this->_impl_.apply_feasibility_polishing_after_limits_reached_ = from._impl_.apply_feasibility_polishing_after_limits_reached_;
3332 }
3333 if ((cached_has_bits & 0x00000200u) != 0) {
3334 _this->_impl_.verbosity_level_ = from._impl_.verbosity_level_;
3335 }
3336 if ((cached_has_bits & 0x00000400u) != 0) {
3337 _this->_impl_.num_shards_ = from._impl_.num_shards_;
3338 }
3339 if ((cached_has_bits & 0x00000800u) != 0) {
3340 _this->_impl_.apply_feasibility_polishing_if_solver_is_interrupted_ = from._impl_.apply_feasibility_polishing_if_solver_is_interrupted_;
3341 }
3342 if ((cached_has_bits & 0x00001000u) != 0) {
3343 _this->_impl_.log_interval_seconds_ = from._impl_.log_interval_seconds_;
3344 }
3345 if ((cached_has_bits & 0x00002000u) != 0) {
3346 _this->_impl_.num_threads_ = from._impl_.num_threads_;
3347 }
3348 if ((cached_has_bits & 0x00004000u) != 0) {
3349 _this->_impl_.major_iteration_frequency_ = from._impl_.major_iteration_frequency_;
3350 }
3351 if ((cached_has_bits & 0x00008000u) != 0) {
3352 _this->_impl_.termination_check_frequency_ = from._impl_.termination_check_frequency_;
3353 }
3354 }
3355 if ((cached_has_bits & 0x00ff0000u) != 0) {
3356 if ((cached_has_bits & 0x00010000u) != 0) {
3357 _this->_impl_.restart_strategy_ = from._impl_.restart_strategy_;
3358 }
3359 if ((cached_has_bits & 0x00020000u) != 0) {
3360 _this->_impl_.primal_weight_update_smoothing_ = from._impl_.primal_weight_update_smoothing_;
3361 }
3362 if ((cached_has_bits & 0x00040000u) != 0) {
3363 _this->_impl_.l_inf_ruiz_iterations_ = from._impl_.l_inf_ruiz_iterations_;
3364 }
3365 if ((cached_has_bits & 0x00080000u) != 0) {
3366 _this->_impl_.linesearch_rule_ = from._impl_.linesearch_rule_;
3367 }
3368 if ((cached_has_bits & 0x00100000u) != 0) {
3369 _this->_impl_.sufficient_reduction_for_restart_ = from._impl_.sufficient_reduction_for_restart_;
3370 }
3371 if ((cached_has_bits & 0x00200000u) != 0) {
3372 _this->_impl_.necessary_reduction_for_restart_ = from._impl_.necessary_reduction_for_restart_;
3373 }
3374 if ((cached_has_bits & 0x00400000u) != 0) {
3375 _this->_impl_.infinite_constraint_bound_threshold_ = from._impl_.infinite_constraint_bound_threshold_;
3376 }
3377 if ((cached_has_bits & 0x00800000u) != 0) {
3378 _this->_impl_.l2_norm_rescaling_ = from._impl_.l2_norm_rescaling_;
3379 }
3380 }
3381 if ((cached_has_bits & 0x0f000000u) != 0) {
3382 if ((cached_has_bits & 0x01000000u) != 0) {
3383 _this->_impl_.handle_some_primal_gradients_on_finite_bounds_as_residuals_ = from._impl_.handle_some_primal_gradients_on_finite_bounds_as_residuals_;
3384 }
3385 if ((cached_has_bits & 0x02000000u) != 0) {
3386 _this->_impl_.scheduler_type_ = from._impl_.scheduler_type_;
3387 }
3388 if ((cached_has_bits & 0x04000000u) != 0) {
3389 _this->_impl_.diagonal_qp_trust_region_solver_tolerance_ = from._impl_.diagonal_qp_trust_region_solver_tolerance_;
3390 }
3391 if ((cached_has_bits & 0x08000000u) != 0) {
3392 _this->_impl_.initial_step_size_scaling_ = from._impl_.initial_step_size_scaling_;
3393 }
3394 }
3395 _this->_impl_._has_bits_[0] |= cached_has_bits;
3396 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
3397}
3398
3400// @@protoc_insertion_point(class_specific_copy_from_start:operations_research.pdlp.PrimalDualHybridGradientParams)
3401 if (&from == this) return;
3402 Clear();
3403 MergeFrom(from);
3404}
3405
3407void PrimalDualHybridGradientParams::InternalSwap(PrimalDualHybridGradientParams* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
3408 using ::std::swap;
3409 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
3410 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
3411 _impl_.random_projection_seeds_.InternalSwap(&other->_impl_.random_projection_seeds_);
3412 ::google::protobuf::internal::memswap<
3413 PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.initial_step_size_scaling_)
3414 + sizeof(PrimalDualHybridGradientParams::_impl_.initial_step_size_scaling_)
3415 - PROTOBUF_FIELD_OFFSET(PrimalDualHybridGradientParams, _impl_.termination_criteria_)>(
3416 reinterpret_cast<char*>(&_impl_.termination_criteria_),
3417 reinterpret_cast<char*>(&other->_impl_.termination_criteria_));
3418}
3419
3420::google::protobuf::Metadata PrimalDualHybridGradientParams::GetMetadata() const {
3421 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
3422}
3423// @@protoc_insertion_point(namespace_scope)
3424} // namespace pdlp
3425} // namespace operations_research
3426namespace google {
3427namespace protobuf {
3428} // namespace protobuf
3429} // namespace google
3430// @@protoc_insertion_point(global_scope)
3431PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::std::false_type
3432 _static_init2_ [[maybe_unused]] =
3433 (::_pbi::AddDescriptors(&descriptor_table_ortools_2fpdlp_2fsolvers_2eproto),
3434 ::std::false_type{});
3435#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[]
::google::protobuf::Metadata GetMetadata() const
friend class ::google::protobuf::MessageLite
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL
void MergeFrom(const AdaptiveLinesearchParams &from)
friend void swap(AdaptiveLinesearchParams &a, AdaptiveLinesearchParams &b)
Definition solvers.pb.h:999
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
const ::google::protobuf::internal::ClassData *PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL
void CopyFrom(const AdaptiveLinesearchParams &from)
static void *PROTOBUF_NONNULL PlacementNew_(const void *PROTOBUF_NONNULL, void *PROTOBUF_NONNULL mem, ::google::protobuf::Arena *PROTOBUF_NULLABLE arena)
friend class ::google::protobuf::MessageLite
Definition solvers.pb.h:913
friend void swap(MalitskyPockParams &a, MalitskyPockParams &b)
Definition solvers.pb.h:780
::google::protobuf::Metadata GetMetadata() const
void CopyFrom(const MalitskyPockParams &from)
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
const ::google::protobuf::internal::ClassData *PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL
static void *PROTOBUF_NONNULL PlacementNew_(const void *PROTOBUF_NONNULL, void *PROTOBUF_NONNULL mem, ::google::protobuf::Arena *PROTOBUF_NULLABLE arena)
static constexpr auto InternalGenerateClassData_()
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL
void MergeFrom(const MalitskyPockParams &from)
Definition solvers.pb.h:803
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
static void *PROTOBUF_NONNULL PlacementNew_(const void *PROTOBUF_NONNULL, void *PROTOBUF_NONNULL mem, ::google::protobuf::Arena *PROTOBUF_NULLABLE arena)
const ::google::protobuf::internal::ClassData *PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL
friend void swap(PrimalDualHybridGradientParams_PresolveOptions &a, PrimalDualHybridGradientParams_PresolveOptions &b)
void MergeFrom(const PrimalDualHybridGradientParams_PresolveOptions &from)
void CopyFrom(const PrimalDualHybridGradientParams_PresolveOptions &from)
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL
void CopyFrom(const PrimalDualHybridGradientParams &from)
const ::google::protobuf::internal::ClassData *PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
static void *PROTOBUF_NONNULL PlacementNew_(const void *PROTOBUF_NONNULL, void *PROTOBUF_NONNULL mem, ::google::protobuf::Arena *PROTOBUF_NULLABLE arena)
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL
friend void swap(PrimalDualHybridGradientParams &a, PrimalDualHybridGradientParams &b)
void MergeFrom(const PrimalDualHybridGradientParams &from)
::google::protobuf::Metadata GetMetadata() const
decltype(::std::declval< TerminationCriteria_DetailedOptimalityCriteria >()._impl_._has_bits_) HasBits
void MergeFrom(const TerminationCriteria_DetailedOptimalityCriteria &from)
Definition solvers.pb.h:545
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL
friend void swap(TerminationCriteria_DetailedOptimalityCriteria &a, TerminationCriteria_DetailedOptimalityCriteria &b)
Definition solvers.pb.h:522
const ::google::protobuf::UnknownFieldSet & unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND
Definition solvers.pb.h:499
const ::google::protobuf::internal::ClassData *PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
void CopyFrom(const TerminationCriteria_DetailedOptimalityCriteria &from)
static void *PROTOBUF_NONNULL PlacementNew_(const void *PROTOBUF_NONNULL, void *PROTOBUF_NONNULL mem, ::google::protobuf::Arena *PROTOBUF_NULLABLE arena)
decltype(::std::declval< TerminationCriteria_SimpleOptimalityCriteria >()._impl_._has_bits_) HasBits
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
friend void swap(TerminationCriteria_SimpleOptimalityCriteria &a, TerminationCriteria_SimpleOptimalityCriteria &b)
Definition solvers.pb.h:316
const ::google::protobuf::UnknownFieldSet & unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND
Definition solvers.pb.h:293
void CopyFrom(const TerminationCriteria_SimpleOptimalityCriteria &from)
void MergeFrom(const TerminationCriteria_SimpleOptimalityCriteria &from)
Definition solvers.pb.h:339
const ::google::protobuf::internal::ClassData *PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL
static void *PROTOBUF_NONNULL PlacementNew_(const void *PROTOBUF_NONNULL, void *PROTOBUF_NONNULL mem, ::google::protobuf::Arena *PROTOBUF_NULLABLE arena)
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL
friend class ::google::protobuf::MessageLite
void set_allocated_detailed_optimality_criteria(::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria *PROTOBUF_NULLABLE value)
const ::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria & detailed_optimality_criteria() const
static void *PROTOBUF_NONNULL PlacementNew_(const void *PROTOBUF_NONNULL, void *PROTOBUF_NONNULL mem, ::google::protobuf::Arena *PROTOBUF_NULLABLE arena)
friend void swap(TerminationCriteria &a, TerminationCriteria &b)
void set_allocated_simple_optimality_criteria(::operations_research::pdlp::TerminationCriteria_SimpleOptimalityCriteria *PROTOBUF_NULLABLE value)
void CopyFrom(const TerminationCriteria &from)
const ::operations_research::pdlp::TerminationCriteria_SimpleOptimalityCriteria & simple_optimality_criteria() const
void MergeFrom(const TerminationCriteria &from)
::google::protobuf::Metadata GetMetadata() const
const ::google::protobuf::internal::ClassData *PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL
const ::google::protobuf::UnknownFieldSet & unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL
OptimalityCriteriaCase optimality_criteria_case() const
friend class ::google::protobuf::Arena
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
PROTOBUF_CONSTINITconst ::_pbi::DescriptorTable descriptor_table_ortools_2fglop_2fparameters_2eproto
Validation utilities for solvers.proto.
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TerminationCriteria_DetailedOptimalityCriteriaDefaultTypeInternal _TerminationCriteria_DetailedOptimalityCriteria_default_instance_
Definition solvers.pb.cc:84
PROTOBUF_CONSTINIT const uint32_t SchedulerType_internal_data_[]
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AdaptiveLinesearchParamsDefaultTypeInternal _AdaptiveLinesearchParams_default_instance_
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull PrimalDualHybridGradientParams_PresolveOptions_class_data_
const ::google::protobuf::EnumDescriptor *PROTOBUF_NONNULL PrimalDualHybridGradientParams_RestartStrategy_descriptor()
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull PrimalDualHybridGradientParams_class_data_
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull TerminationCriteria_DetailedOptimalityCriteria_class_data_
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull AdaptiveLinesearchParams_class_data_
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull MalitskyPockParams_class_data_
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PrimalDualHybridGradientParams_PresolveOptionsDefaultTypeInternal _PrimalDualHybridGradientParams_PresolveOptions_default_instance_
const ::google::protobuf::EnumDescriptor *PROTOBUF_NONNULL SchedulerType_descriptor()
const ::google::protobuf::EnumDescriptor *PROTOBUF_NONNULL OptimalityNorm_descriptor()
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 PrimalDualHybridGradientParamsDefaultTypeInternal _PrimalDualHybridGradientParams_default_instance_
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TerminationCriteriaDefaultTypeInternal _TerminationCriteria_default_instance_
const ::google::protobuf::EnumDescriptor *PROTOBUF_NONNULL PrimalDualHybridGradientParams_LinesearchRule_descriptor()
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull TerminationCriteria_class_data_
PROTOBUF_CONSTINIT const uint32_t PrimalDualHybridGradientParams_RestartStrategy_internal_data_[]
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 TerminationCriteria_SimpleOptimalityCriteriaDefaultTypeInternal _TerminationCriteria_SimpleOptimalityCriteria_default_instance_
Definition solvers.pb.cc:54
PROTOBUF_CONSTINIT const uint32_t OptimalityNorm_internal_data_[]
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull TerminationCriteria_SimpleOptimalityCriteria_class_data_
PROTOBUF_CONSTINIT const uint32_t PrimalDualHybridGradientParams_LinesearchRule_internal_data_[]
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 MalitskyPockParamsDefaultTypeInternal _MalitskyPockParams_default_instance_
In SWIG mode, we don't want anything besides these top-level includes.
STL namespace.
static constexpr ::_pbi::MigrationSchema *PROTOBUF_NULLABLE schemas
PROTOBUF_CONSTINITconst ::_pbi::DescriptorTable descriptor_table_ortools_2fpdlp_2fsolvers_2eproto
static const ::_pb::EnumDescriptor *PROTOBUF_NONNULL file_level_enum_descriptors_ortools_2fpdlp_2fsolvers_2eproto[4]
::absl::once_flag descriptor_table_ortools_2fpdlp_2fsolvers_2eproto_once
static const ::_pbi::DescriptorTable *PROTOBUF_NONNULL const descriptor_table_ortools_2fpdlp_2fsolvers_2eproto_deps[1]
static constexprconst ::_pb::ServiceDescriptor *PROTOBUF_NONNULL *PROTOBUF_NULLABLE file_level_service_descriptors_ortools_2fpdlp_2fsolvers_2eproto
const ::uint32_t TableStruct_ortools_2fpdlp_2fsolvers_2eproto::offsets[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold)
::operations_research::pdlp::TerminationCriteria_SimpleOptimalityCriteria *PROTOBUF_NULLABLE simple_optimality_criteria_
::operations_research::pdlp::TerminationCriteria_DetailedOptimalityCriteria *PROTOBUF_NULLABLE detailed_optimality_criteria_