Google OR-Tools v9.15
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
parameters.pb.cc
Go to the documentation of this file.
1// Generated by the protocol buffer compiler. DO NOT EDIT!
2// NO CHECKED-IN PROTOBUF GENCODE
3// source: ortools/glop/parameters.proto
4// Protobuf C++ Version: 6.33.1
5
7
8#include <algorithm>
9#include <type_traits>
10#include "google/protobuf/io/coded_stream.h"
11#include "google/protobuf/generated_message_tctable_impl.h"
12#include "google/protobuf/extension_set.h"
13#include "google/protobuf/generated_message_util.h"
14#include "google/protobuf/wire_format_lite.h"
15#include "google/protobuf/descriptor.h"
16#include "google/protobuf/generated_message_reflection.h"
17#include "google/protobuf/reflection_ops.h"
18#include "google/protobuf/wire_format.h"
19// @@protoc_insertion_point(includes)
20
21// Must be included last.
22#include "google/protobuf/port_def.inc"
23PROTOBUF_PRAGMA_INIT_SEG
24namespace _pb = ::google::protobuf;
26namespace _fl = ::google::protobuf::internal::field_layout;
27namespace operations_research {
28namespace glop {
29
30inline constexpr GlopParameters::Impl_::Impl_(
31 ::_pbi::ConstantInitialized) noexcept
32 : _cached_size_{0},
33 use_dual_simplex_{false},
34 feasibility_rule_{static_cast< ::operations_research::glop::GlopParameters_PricingRule >(1)},
35 optimization_rule_{static_cast< ::operations_research::glop::GlopParameters_PricingRule >(1)},
36 refactorization_threshold_{1e-09},
37 recompute_reduced_costs_threshold_{1e-08},
38 recompute_edges_norm_threshold_{100},
39 primal_feasibility_tolerance_{1e-08},
40 dual_feasibility_tolerance_{1e-08},
41 ratio_test_zero_threshold_{1e-09},
42 harris_tolerance_ratio_{0.5},
43 small_pivot_threshold_{1e-06},
44 minimum_acceptable_pivot_{1e-06},
46 basis_refactorization_period_{64},
47 use_scaling_{true},
48 use_transposed_matrix_{true},
49 provide_strong_optimal_guarantee_{true},
50 solve_dual_problem_{static_cast< ::operations_research::glop::GlopParameters_SolverBehavior >(2)},
51 dualizer_threshold_{1.5},
52 solution_feasibility_tolerance_{1e-06},
53 lu_factorization_pivot_threshold_{0.01},
54 max_time_in_seconds_{std::numeric_limits<double>::infinity()},
55 max_number_of_iterations_{::int64_t{-1}},
56 markowitz_singularity_threshold_{1e-15},
57 markowitz_zlatev_parameter_{3},
58 num_omp_threads_{1},
59 preprocessor_zero_tolerance_{1e-09},
60 allow_simplex_algorithm_change_{false},
61 perturb_costs_in_dual_simplex_{false},
62 log_search_progress_{false},
63 dual_price_prioritize_norm_{false},
64 use_absl_random_{false},
65 devex_weights_reset_period_{150},
66 use_preprocessing_{true},
67 use_middle_product_form_update_{true},
68 initialize_devex_with_column_norms_{true},
69 exploit_singleton_column_in_initial_basis_{true},
70 dual_small_pivot_threshold_{0.0001},
71 objective_lower_limit_{-std::numeric_limits<double>::infinity()},
72 objective_upper_limit_{std::numeric_limits<double>::infinity()},
73 degenerate_ministep_factor_{0.01},
74 max_deterministic_time_{std::numeric_limits<double>::infinity()},
75 random_seed_{1},
76 scaling_method_{static_cast< ::operations_research::glop::GlopParameters_ScalingAlgorithm >(1)},
77 drop_tolerance_{1e-14},
78 relative_cost_perturbation_{1e-05},
79 relative_max_cost_perturbation_{1e-07},
80 max_number_of_reoptimizations_{40},
81 initial_condition_number_threshold_{1e+50},
83 change_status_to_imprecise_{true},
84 use_dedicated_dual_feasibility_algorithm_{true},
85 dynamically_adjust_refactorization_period_{true},
86 push_to_vertex_{true},
87 crossover_bound_snapping_distance_{std::numeric_limits<double>::infinity()},
88 max_valid_magnitude_{1e+30},
89 drop_magnitude_{1e-30},
90 log_to_stdout_{true},
91 use_implied_free_preprocessor_{true} {}
92
93template <typename>
94PROTOBUF_CONSTEXPR GlopParameters::GlopParameters(::_pbi::ConstantInitialized)
95#if defined(PROTOBUF_CUSTOM_VTABLE)
96 : ::google::protobuf::Message(GlopParameters_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} // namespace glop
113} // namespace operations_research
114static const ::_pb::EnumDescriptor* PROTOBUF_NONNULL
116static constexpr const ::_pb::ServiceDescriptor* PROTOBUF_NONNULL* PROTOBUF_NULLABLE
118const ::uint32_t
120 protodesc_cold) = {
121 0x081, // bitmap
122 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_._has_bits_),
123 62, // hasbit index offset
124 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.scaling_method_),
125 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.feasibility_rule_),
126 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.optimization_rule_),
127 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.refactorization_threshold_),
128 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.recompute_reduced_costs_threshold_),
129 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.recompute_edges_norm_threshold_),
130 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.primal_feasibility_tolerance_),
131 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.dual_feasibility_tolerance_),
132 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.ratio_test_zero_threshold_),
133 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.harris_tolerance_ratio_),
134 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.small_pivot_threshold_),
135 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.minimum_acceptable_pivot_),
136 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.drop_tolerance_),
137 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.use_scaling_),
138 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.cost_scaling_),
139 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.initial_basis_),
140 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.use_transposed_matrix_),
141 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.basis_refactorization_period_),
142 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.dynamically_adjust_refactorization_period_),
143 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.solve_dual_problem_),
144 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.dualizer_threshold_),
145 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.solution_feasibility_tolerance_),
146 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.provide_strong_optimal_guarantee_),
147 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.change_status_to_imprecise_),
148 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.max_number_of_reoptimizations_),
149 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.lu_factorization_pivot_threshold_),
150 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.max_time_in_seconds_),
151 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.max_deterministic_time_),
152 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.max_number_of_iterations_),
153 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.markowitz_zlatev_parameter_),
154 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.markowitz_singularity_threshold_),
155 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.use_dual_simplex_),
156 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.allow_simplex_algorithm_change_),
157 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.devex_weights_reset_period_),
158 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.use_preprocessing_),
159 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.use_middle_product_form_update_),
160 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.initialize_devex_with_column_norms_),
161 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.exploit_singleton_column_in_initial_basis_),
162 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.dual_small_pivot_threshold_),
163 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.preprocessor_zero_tolerance_),
164 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.objective_lower_limit_),
165 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.objective_upper_limit_),
166 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.degenerate_ministep_factor_),
167 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.random_seed_),
168 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.use_absl_random_),
169 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.num_omp_threads_),
170 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.perturb_costs_in_dual_simplex_),
171 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.use_dedicated_dual_feasibility_algorithm_),
172 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.relative_cost_perturbation_),
173 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.relative_max_cost_perturbation_),
174 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.initial_condition_number_threshold_),
175 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.log_search_progress_),
176 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.log_to_stdout_),
177 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.crossover_bound_snapping_distance_),
178 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.push_to_vertex_),
179 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.use_implied_free_preprocessor_),
180 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.max_valid_magnitude_),
181 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.drop_magnitude_),
182 PROTOBUF_FIELD_OFFSET(::operations_research::glop::GlopParameters, _impl_.dual_price_prioritize_norm_),
183 43,
184 1,
185 2,
186 3,
187 4,
188 5,
189 6,
190 7,
191 8,
192 9,
193 10,
194 11,
195 44,
196 14,
197 49,
198 12,
199 15,
200 13,
201 52,
202 17,
203 18,
204 19,
205 16,
206 50,
207 47,
208 20,
209 21,
210 41,
211 22,
212 24,
213 23,
214 0,
215 27,
216 32,
217 33,
218 34,
219 35,
220 36,
221 37,
222 26,
223 38,
224 39,
225 40,
226 42,
227 31,
228 25,
229 28,
230 51,
231 45,
232 46,
233 48,
234 29,
235 57,
236 54,
237 53,
238 58,
239 55,
240 56,
241 30,
242};
243
244static const ::_pbi::MigrationSchema
245 schemas[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
247};
248static const ::_pb::Message* PROTOBUF_NONNULL const file_default_instances[] = {
250};
251const char descriptor_table_protodef_ortools_2fglop_2fparameters_2eproto[] ABSL_ATTRIBUTE_SECTION_VARIABLE(
252 protodesc_cold) = {
253 "\n\035ortools/glop/parameters.proto\022\030operati"
254 "ons_research.glop\"\360\030\n\016GlopParameters\022`\n\016"
255 "scaling_method\0309 \001(\01629.operations_resear"
256 "ch.glop.GlopParameters.ScalingAlgorithm:"
257 "\rEQUILIBRATION\022]\n\020feasibility_rule\030\001 \001(\016"
258 "24.operations_research.glop.GlopParamete"
259 "rs.PricingRule:\rSTEEPEST_EDGE\022^\n\021optimiz"
260 "ation_rule\030\002 \001(\01624.operations_research.g"
261 "lop.GlopParameters.PricingRule:\rSTEEPEST"
262 "_EDGE\022(\n\031refactorization_threshold\030\006 \001(\001"
263 ":\0051e-09\0220\n!recompute_reduced_costs_thres"
264 "hold\030\010 \001(\001:\0051e-08\022+\n\036recompute_edges_nor"
265 "m_threshold\030\t \001(\001:\003100\022+\n\034primal_feasibi"
266 "lity_tolerance\030\n \001(\001:\0051e-08\022)\n\032dual_feas"
267 "ibility_tolerance\030\013 \001(\001:\0051e-08\022(\n\031ratio_"
268 "test_zero_threshold\030\014 \001(\001:\0051e-09\022#\n\026harr"
269 "is_tolerance_ratio\030\r \001(\001:\0030.5\022$\n\025small_p"
270 "ivot_threshold\030\016 \001(\001:\0051e-06\022\'\n\030minimum_a"
271 "cceptable_pivot\030\017 \001(\001:\0051e-06\022\035\n\016drop_tol"
272 "erance\0304 \001(\001:\0051e-14\022\031\n\013use_scaling\030\020 \001(\010"
273 ":\004true\022m\n\014cost_scaling\030< \001(\0162=.operation"
274 "s_research.glop.GlopParameters.CostScali"
275 "ngAlgorithm:\030CONTAIN_ONE_COST_SCALING\022a\n"
276 "\rinitial_basis\030\021 \001(\0162>.operations_resear"
277 "ch.glop.GlopParameters.InitialBasisHeuri"
278 "stic:\nTRIANGULAR\022#\n\025use_transposed_matri"
279 "x\030\022 \001(\010:\004true\022(\n\034basis_refactorization_p"
280 "eriod\030\023 \001(\005:\00264\0227\n)dynamically_adjust_re"
281 "factorization_period\030\? \001(\010:\004true\022f\n\022solv"
282 "e_dual_problem\030\024 \001(\01627.operations_resear"
283 "ch.glop.GlopParameters.SolverBehavior:\021L"
284 "ET_SOLVER_DECIDE\022\037\n\022dualizer_threshold\030\025"
285 " \001(\001:\0031.5\022-\n\036solution_feasibility_tolera"
286 "nce\030\026 \001(\001:\0051e-06\022.\n provide_strong_optim"
287 "al_guarantee\030\030 \001(\010:\004true\022(\n\032change_statu"
288 "s_to_imprecise\030: \001(\010:\004true\022)\n\035max_number"
289 "_of_reoptimizations\0308 \001(\001:\00240\022.\n lu_fact"
290 "orization_pivot_threshold\030\031 \001(\001:\0040.01\022 \n"
291 "\023max_time_in_seconds\030\032 \001(\001:\003inf\022#\n\026max_d"
292 "eterministic_time\030- \001(\001:\003inf\022$\n\030max_numb"
293 "er_of_iterations\030\033 \001(\003:\002-1\022%\n\032markowitz_"
294 "zlatev_parameter\030\035 \001(\005:\0013\022.\n\037markowitz_s"
295 "ingularity_threshold\030\036 \001(\001:\0051e-15\022\037\n\020use"
296 "_dual_simplex\030\037 \001(\010:\005false\022-\n\036allow_simp"
297 "lex_algorithm_change\030 \001(\010:\005false\022\'\n\032dev"
298 "ex_weights_reset_period\030! \001(\005:\003150\022\037\n\021us"
299 "e_preprocessing\030\" \001(\010:\004true\022,\n\036use_middl"
300 "e_product_form_update\030# \001(\010:\004true\0220\n\"ini"
301 "tialize_devex_with_column_norms\030$ \001(\010:\004t"
302 "rue\0227\n)exploit_singleton_column_in_initi"
303 "al_basis\030% \001(\010:\004true\022*\n\032dual_small_pivot"
304 "_threshold\030& \001(\001:\0060.0001\022*\n\033preprocessor"
305 "_zero_tolerance\030\' \001(\001:\0051e-09\022#\n\025objectiv"
306 "e_lower_limit\030( \001(\001:\004-inf\022\"\n\025objective_u"
307 "pper_limit\030) \001(\001:\003inf\022(\n\032degenerate_mini"
308 "step_factor\030* \001(\001:\0040.01\022\026\n\013random_seed\030+"
309 " \001(\005:\0011\022\036\n\017use_absl_random\030H \001(\010:\005false\022"
310 "\032\n\017num_omp_threads\030, \001(\005:\0011\022,\n\035perturb_c"
311 "osts_in_dual_simplex\0305 \001(\010:\005false\0226\n(use"
312 "_dedicated_dual_feasibility_algorithm\030> "
313 "\001(\010:\004true\022)\n\032relative_cost_perturbation\030"
314 "6 \001(\001:\0051e-05\022-\n\036relative_max_cost_pertur"
315 "bation\0307 \001(\001:\0051e-07\0221\n\"initial_condition"
316 "_number_threshold\030; \001(\001:\0051e+50\022\"\n\023log_se"
317 "arch_progress\030= \001(\010:\005false\022\033\n\rlog_to_std"
318 "out\030B \001(\010:\004true\022.\n!crossover_bound_snapp"
319 "ing_distance\030@ \001(\001:\003inf\022\034\n\016push_to_verte"
320 "x\030A \001(\010:\004true\022+\n\035use_implied_free_prepro"
321 "cessor\030C \001(\010:\004true\022\"\n\023max_valid_magnitud"
322 "e\030F \001(\001:\0051e+30\022\035\n\016drop_magnitude\030G \001(\001:\005"
323 "1e-30\022)\n\032dual_price_prioritize_norm\030E \001("
324 "\010:\005false\"F\n\020ScalingAlgorithm\022\013\n\007DEFAULT\020"
325 "\000\022\021\n\rEQUILIBRATION\020\001\022\022\n\016LINEAR_PROGRAM\020\002"
326 "\"D\n\016SolverBehavior\022\r\n\tALWAYS_DO\020\000\022\014\n\010NEV"
327 "ER_DO\020\001\022\025\n\021LET_SOLVER_DECIDE\020\002\"8\n\013Pricin"
328 "gRule\022\013\n\007DANTZIG\020\000\022\021\n\rSTEEPEST_EDGE\020\001\022\t\n"
329 "\005DEVEX\020\002\"G\n\025InitialBasisHeuristic\022\010\n\004NON"
330 "E\020\000\022\t\n\005BIXBY\020\001\022\016\n\nTRIANGULAR\020\002\022\t\n\005MAROS\020"
331 "\003\"y\n\024CostScalingAlgorithm\022\023\n\017NO_COST_SCA"
332 "LING\020\000\022\034\n\030CONTAIN_ONE_COST_SCALING\020\001\022\025\n\021"
333 "MEAN_COST_SCALING\020\002\022\027\n\023MEDIAN_COST_SCALI"
334 "NG\020\003B1\n\027com.google.ortools.glopP\001\252\002\023Goog"
335 "le.OrTools.Glop"
336};
338PROTOBUF_CONSTINIT const ::_pbi::DescriptorTable descriptor_table_ortools_2fglop_2fparameters_2eproto = {
339 false,
340 false,
341 3295,
342 descriptor_table_protodef_ortools_2fglop_2fparameters_2eproto,
343 "ortools/glop/parameters.proto",
345 nullptr,
346 0,
347 1,
348 schemas,
353};
354namespace operations_research {
355namespace glop {
356const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL GlopParameters_ScalingAlgorithm_descriptor() {
357 ::google::protobuf::internal::AssignDescriptors(&descriptor_table_ortools_2fglop_2fparameters_2eproto);
359}
360PROTOBUF_CONSTINIT const uint32_t GlopParameters_ScalingAlgorithm_internal_data_[] = {
361 196608u, 0u, };
362const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL GlopParameters_SolverBehavior_descriptor() {
363 ::google::protobuf::internal::AssignDescriptors(&descriptor_table_ortools_2fglop_2fparameters_2eproto);
365}
366PROTOBUF_CONSTINIT const uint32_t GlopParameters_SolverBehavior_internal_data_[] = {
367 196608u, 0u, };
368const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL GlopParameters_PricingRule_descriptor() {
369 ::google::protobuf::internal::AssignDescriptors(&descriptor_table_ortools_2fglop_2fparameters_2eproto);
371}
372PROTOBUF_CONSTINIT const uint32_t GlopParameters_PricingRule_internal_data_[] = {
373 196608u, 0u, };
374const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL GlopParameters_InitialBasisHeuristic_descriptor() {
375 ::google::protobuf::internal::AssignDescriptors(&descriptor_table_ortools_2fglop_2fparameters_2eproto);
377}
378PROTOBUF_CONSTINIT const uint32_t GlopParameters_InitialBasisHeuristic_internal_data_[] = {
379 262144u, 0u, };
380const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL GlopParameters_CostScalingAlgorithm_descriptor() {
381 ::google::protobuf::internal::AssignDescriptors(&descriptor_table_ortools_2fglop_2fparameters_2eproto);
383}
384PROTOBUF_CONSTINIT const uint32_t GlopParameters_CostScalingAlgorithm_internal_data_[] = {
385 262144u, 0u, };
386// ===================================================================
387
388class GlopParameters::_Internal {
389 public:
390 using HasBits =
391 decltype(::std::declval<GlopParameters>()._impl_._has_bits_);
392 static constexpr ::int32_t kHasBitsOffset =
393 8 * PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_._has_bits_);
394};
395
396GlopParameters::GlopParameters(::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
397#if defined(PROTOBUF_CUSTOM_VTABLE)
398 : ::google::protobuf::Message(arena, GlopParameters_class_data_.base()) {
399#else // PROTOBUF_CUSTOM_VTABLE
400 : ::google::protobuf::Message(arena) {
401#endif // PROTOBUF_CUSTOM_VTABLE
402 SharedCtor(arena);
403 // @@protoc_insertion_point(arena_constructor:operations_research.glop.GlopParameters)
404}
406 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GlopParameters& from)
407#if defined(PROTOBUF_CUSTOM_VTABLE)
408 : ::google::protobuf::Message(arena, GlopParameters_class_data_.base()),
409#else // PROTOBUF_CUSTOM_VTABLE
410 : ::google::protobuf::Message(arena),
411#endif // PROTOBUF_CUSTOM_VTABLE
412 _impl_(from._impl_) {
413 _internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
414 from._internal_metadata_);
415}
416PROTOBUF_NDEBUG_INLINE GlopParameters::Impl_::Impl_(
417 [[maybe_unused]] ::google::protobuf::internal::InternalVisibility visibility,
418 [[maybe_unused]] ::google::protobuf::Arena* PROTOBUF_NULLABLE arena)
419 : _cached_size_{0},
420 feasibility_rule_{static_cast< ::operations_research::glop::GlopParameters_PricingRule >(1)},
421 optimization_rule_{static_cast< ::operations_research::glop::GlopParameters_PricingRule >(1)},
422 refactorization_threshold_{1e-09},
423 recompute_reduced_costs_threshold_{1e-08},
424 recompute_edges_norm_threshold_{100},
425 primal_feasibility_tolerance_{1e-08},
426 dual_feasibility_tolerance_{1e-08},
427 ratio_test_zero_threshold_{1e-09},
428 harris_tolerance_ratio_{0.5},
429 small_pivot_threshold_{1e-06},
430 minimum_acceptable_pivot_{1e-06},
431 initial_basis_{static_cast< ::operations_research::glop::GlopParameters_InitialBasisHeuristic >(2)},
432 basis_refactorization_period_{64},
433 use_scaling_{true},
434 use_transposed_matrix_{true},
435 provide_strong_optimal_guarantee_{true},
436 solve_dual_problem_{static_cast< ::operations_research::glop::GlopParameters_SolverBehavior >(2)},
437 dualizer_threshold_{1.5},
438 solution_feasibility_tolerance_{1e-06},
439 lu_factorization_pivot_threshold_{0.01},
440 max_time_in_seconds_{std::numeric_limits<double>::infinity()},
441 max_number_of_iterations_{::int64_t{-1}},
442 markowitz_singularity_threshold_{1e-15},
443 markowitz_zlatev_parameter_{3},
444 num_omp_threads_{1},
445 preprocessor_zero_tolerance_{1e-09},
446 devex_weights_reset_period_{150},
447 use_preprocessing_{true},
448 use_middle_product_form_update_{true},
449 initialize_devex_with_column_norms_{true},
450 exploit_singleton_column_in_initial_basis_{true},
451 dual_small_pivot_threshold_{0.0001},
452 objective_lower_limit_{-std::numeric_limits<double>::infinity()},
453 objective_upper_limit_{std::numeric_limits<double>::infinity()},
454 degenerate_ministep_factor_{0.01},
455 max_deterministic_time_{std::numeric_limits<double>::infinity()},
456 random_seed_{1},
457 scaling_method_{static_cast< ::operations_research::glop::GlopParameters_ScalingAlgorithm >(1)},
458 drop_tolerance_{1e-14},
459 relative_cost_perturbation_{1e-05},
460 relative_max_cost_perturbation_{1e-07},
461 max_number_of_reoptimizations_{40},
462 initial_condition_number_threshold_{1e+50},
463 cost_scaling_{static_cast< ::operations_research::glop::GlopParameters_CostScalingAlgorithm >(1)},
464 change_status_to_imprecise_{true},
465 use_dedicated_dual_feasibility_algorithm_{true},
466 dynamically_adjust_refactorization_period_{true},
467 push_to_vertex_{true},
468 crossover_bound_snapping_distance_{std::numeric_limits<double>::infinity()},
469 max_valid_magnitude_{1e+30},
470 drop_magnitude_{1e-30},
471 log_to_stdout_{true},
472 use_implied_free_preprocessor_{true} {}
473
474inline void GlopParameters::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
475 new (&_impl_) Impl_(internal_visibility(), arena);
476 _impl_.use_dual_simplex_ = {};
477 ::memset(reinterpret_cast<char*>(&_impl_) +
478 offsetof(Impl_, allow_simplex_algorithm_change_),
479 0,
480 offsetof(Impl_, use_absl_random_) -
481 offsetof(Impl_, allow_simplex_algorithm_change_) +
482 sizeof(Impl_::use_absl_random_));
483}
485 // @@protoc_insertion_point(destructor:operations_research.glop.GlopParameters)
486 SharedDtor(*this);
487}
488inline void GlopParameters::SharedDtor(MessageLite& self) {
489 GlopParameters& this_ = static_cast<GlopParameters&>(self);
490 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
491 this_.CheckHasBitConsistency();
492 }
493 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
494 ABSL_DCHECK(this_.GetArena() == nullptr);
495 this_._impl_.~Impl_();
496}
497
498inline void* PROTOBUF_NONNULL GlopParameters::PlacementNew_(
499 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
500 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
501 return ::new (mem) GlopParameters(arena);
502}
503constexpr auto GlopParameters::InternalNewImpl_() {
504 return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(GlopParameters),
505 alignof(GlopParameters));
506}
508 return ::google::protobuf::internal::ClassDataFull{
509 ::google::protobuf::internal::ClassData{
511 &_table_.header,
512 nullptr, // OnDemandRegisterArenaDtor
513 nullptr, // IsInitialized
514 &GlopParameters::MergeImpl,
515 ::google::protobuf::Message::GetNewImpl<GlopParameters>(),
516#if defined(PROTOBUF_CUSTOM_VTABLE)
517 &GlopParameters::SharedDtor,
518 ::google::protobuf::Message::GetClearImpl<GlopParameters>(), &GlopParameters::ByteSizeLong,
520#endif // PROTOBUF_CUSTOM_VTABLE
521 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_._cached_size_),
522 false,
523 },
524 &GlopParameters::kDescriptorMethods,
526 nullptr, // tracker
527 };
528}
529
530PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
531 ::google::protobuf::internal::ClassDataFull GlopParameters_class_data_ =
533
534PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
535GlopParameters::GetClassData() const {
536 ::google::protobuf::internal::PrefetchToLocalCache(&GlopParameters_class_data_);
537 ::google::protobuf::internal::PrefetchToLocalCache(GlopParameters_class_data_.tc_table);
538 return GlopParameters_class_data_.base();
539}
540PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
541const ::_pbi::TcParseTable<5, 59, 6, 0, 11>
542GlopParameters::_table_ = {
543 {
544 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_._has_bits_),
545 0, // no _extensions_
546 72, 248, // max_field_number, fast_idx_mask
547 offsetof(decltype(_table_), field_lookup_table),
548 138412124, // skipmap
549 offsetof(decltype(_table_), field_entries),
550 59, // num_field_entries
551 6, // num_aux_entries
552 offsetof(decltype(_table_), aux_entries),
554 nullptr, // post_loop_handler
555 ::_pbi::TcParser::GenericFallback, // fallback
556 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
557 ::_pbi::TcParser::GetTable<::operations_research::glop::GlopParameters>(), // to_prefetch
558 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
559 }, {{
560 {::_pbi::TcParser::MiniParse, {}},
561 // optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];
562 {::_pbi::TcParser::FastEr0S1,
563 {8, 1, 2,
564 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.feasibility_rule_)}},
565 // optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];
566 {::_pbi::TcParser::FastEr0S1,
567 {16, 2, 2,
568 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.optimization_rule_)}},
569 {::_pbi::TcParser::MiniParse, {}},
570 {::_pbi::TcParser::MiniParse, {}},
571 {::_pbi::TcParser::MiniParse, {}},
572 // optional double refactorization_threshold = 6 [default = 1e-09];
573 {::_pbi::TcParser::FastF64S1,
574 {49, 3, 0,
575 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.refactorization_threshold_)}},
576 {::_pbi::TcParser::MiniParse, {}},
577 // optional double recompute_reduced_costs_threshold = 8 [default = 1e-08];
578 {::_pbi::TcParser::FastF64S1,
579 {65, 4, 0,
580 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.recompute_reduced_costs_threshold_)}},
581 // optional double recompute_edges_norm_threshold = 9 [default = 100];
582 {::_pbi::TcParser::FastF64S1,
583 {73, 5, 0,
584 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.recompute_edges_norm_threshold_)}},
585 // optional double primal_feasibility_tolerance = 10 [default = 1e-08];
586 {::_pbi::TcParser::FastF64S1,
587 {81, 6, 0,
588 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.primal_feasibility_tolerance_)}},
589 // optional double dual_feasibility_tolerance = 11 [default = 1e-08];
590 {::_pbi::TcParser::FastF64S1,
591 {89, 7, 0,
592 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dual_feasibility_tolerance_)}},
593 // optional double ratio_test_zero_threshold = 12 [default = 1e-09];
594 {::_pbi::TcParser::FastF64S1,
595 {97, 8, 0,
596 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.ratio_test_zero_threshold_)}},
597 // optional double harris_tolerance_ratio = 13 [default = 0.5];
598 {::_pbi::TcParser::FastF64S1,
599 {105, 9, 0,
600 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.harris_tolerance_ratio_)}},
601 // optional double small_pivot_threshold = 14 [default = 1e-06];
602 {::_pbi::TcParser::FastF64S1,
603 {113, 10, 0,
604 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.small_pivot_threshold_)}},
605 // optional double minimum_acceptable_pivot = 15 [default = 1e-06];
606 {::_pbi::TcParser::FastF64S1,
607 {121, 11, 0,
608 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.minimum_acceptable_pivot_)}},
609 // optional bool use_scaling = 16 [default = true];
610 {::_pbi::TcParser::FastV8S2,
611 {384, 14, 0,
612 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_scaling_)}},
613 // optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];
614 {::_pbi::TcParser::FastEr0S2,
615 {392, 12, 3,
616 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.initial_basis_)}},
617 // optional bool use_transposed_matrix = 18 [default = true];
618 {::_pbi::TcParser::FastV8S2,
619 {400, 15, 0,
620 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_transposed_matrix_)}},
621 // optional int32 basis_refactorization_period = 19 [default = 64];
622 {::_pbi::TcParser::FastV32S2,
623 {408, 13, 0,
624 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.basis_refactorization_period_)}},
625 // optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];
626 {::_pbi::TcParser::FastEr0S2,
627 {416, 17, 2,
628 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.solve_dual_problem_)}},
629 // optional double dualizer_threshold = 21 [default = 1.5];
630 {::_pbi::TcParser::FastF64S2,
631 {425, 18, 0,
632 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dualizer_threshold_)}},
633 // optional double solution_feasibility_tolerance = 22 [default = 1e-06];
634 {::_pbi::TcParser::FastF64S2,
635 {433, 19, 0,
636 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.solution_feasibility_tolerance_)}},
637 // optional double preprocessor_zero_tolerance = 39 [default = 1e-09];
638 {::_pbi::TcParser::FastF64S2,
639 {697, 26, 0,
640 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.preprocessor_zero_tolerance_)}},
641 // optional bool provide_strong_optimal_guarantee = 24 [default = true];
642 {::_pbi::TcParser::FastV8S2,
643 {448, 16, 0,
644 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.provide_strong_optimal_guarantee_)}},
645 // optional double lu_factorization_pivot_threshold = 25 [default = 0.01];
646 {::_pbi::TcParser::FastF64S2,
647 {457, 20, 0,
648 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.lu_factorization_pivot_threshold_)}},
649 // optional double max_time_in_seconds = 26 [default = inf];
650 {::_pbi::TcParser::FastF64S2,
651 {465, 21, 0,
652 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_time_in_seconds_)}},
653 // optional int64 max_number_of_iterations = 27 [default = -1];
654 {::_pbi::TcParser::FastV64S2,
655 {472, 22, 0,
656 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_number_of_iterations_)}},
657 // optional int32 num_omp_threads = 44 [default = 1];
658 {::_pbi::TcParser::FastV32S2,
659 {736, 25, 0,
660 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.num_omp_threads_)}},
661 // optional int32 markowitz_zlatev_parameter = 29 [default = 3];
662 {::_pbi::TcParser::FastV32S2,
663 {488, 24, 0,
664 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.markowitz_zlatev_parameter_)}},
665 // optional double markowitz_singularity_threshold = 30 [default = 1e-15];
666 {::_pbi::TcParser::FastF64S2,
667 {497, 23, 0,
668 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.markowitz_singularity_threshold_)}},
669 // optional bool use_dual_simplex = 31 [default = false];
670 {::_pbi::TcParser::FastV8S2,
671 {504, 0, 0,
672 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_dual_simplex_)}},
673 }}, {{
674 33, 0, 3,
675 57344, 26,
676 7, 39,
677 65288, 52,
678 65535, 65535
679 }}, {{
680 // optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];
681 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.feasibility_rule_), _Internal::kHasBitsOffset + 1, 0, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
682 // optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];
683 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.optimization_rule_), _Internal::kHasBitsOffset + 2, 1, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
684 // optional double refactorization_threshold = 6 [default = 1e-09];
685 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.refactorization_threshold_), _Internal::kHasBitsOffset + 3, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
686 // optional double recompute_reduced_costs_threshold = 8 [default = 1e-08];
687 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.recompute_reduced_costs_threshold_), _Internal::kHasBitsOffset + 4, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
688 // optional double recompute_edges_norm_threshold = 9 [default = 100];
689 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.recompute_edges_norm_threshold_), _Internal::kHasBitsOffset + 5, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
690 // optional double primal_feasibility_tolerance = 10 [default = 1e-08];
691 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.primal_feasibility_tolerance_), _Internal::kHasBitsOffset + 6, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
692 // optional double dual_feasibility_tolerance = 11 [default = 1e-08];
693 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dual_feasibility_tolerance_), _Internal::kHasBitsOffset + 7, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
694 // optional double ratio_test_zero_threshold = 12 [default = 1e-09];
695 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.ratio_test_zero_threshold_), _Internal::kHasBitsOffset + 8, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
696 // optional double harris_tolerance_ratio = 13 [default = 0.5];
697 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.harris_tolerance_ratio_), _Internal::kHasBitsOffset + 9, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
698 // optional double small_pivot_threshold = 14 [default = 1e-06];
699 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.small_pivot_threshold_), _Internal::kHasBitsOffset + 10, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
700 // optional double minimum_acceptable_pivot = 15 [default = 1e-06];
701 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.minimum_acceptable_pivot_), _Internal::kHasBitsOffset + 11, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
702 // optional bool use_scaling = 16 [default = true];
703 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_scaling_), _Internal::kHasBitsOffset + 14, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
704 // optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];
705 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.initial_basis_), _Internal::kHasBitsOffset + 12, 2, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
706 // optional bool use_transposed_matrix = 18 [default = true];
707 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_transposed_matrix_), _Internal::kHasBitsOffset + 15, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
708 // optional int32 basis_refactorization_period = 19 [default = 64];
709 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.basis_refactorization_period_), _Internal::kHasBitsOffset + 13, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
710 // optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];
711 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.solve_dual_problem_), _Internal::kHasBitsOffset + 17, 3, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
712 // optional double dualizer_threshold = 21 [default = 1.5];
713 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dualizer_threshold_), _Internal::kHasBitsOffset + 18, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
714 // optional double solution_feasibility_tolerance = 22 [default = 1e-06];
715 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.solution_feasibility_tolerance_), _Internal::kHasBitsOffset + 19, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
716 // optional bool provide_strong_optimal_guarantee = 24 [default = true];
717 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.provide_strong_optimal_guarantee_), _Internal::kHasBitsOffset + 16, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
718 // optional double lu_factorization_pivot_threshold = 25 [default = 0.01];
719 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.lu_factorization_pivot_threshold_), _Internal::kHasBitsOffset + 20, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
720 // optional double max_time_in_seconds = 26 [default = inf];
721 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_time_in_seconds_), _Internal::kHasBitsOffset + 21, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
722 // optional int64 max_number_of_iterations = 27 [default = -1];
723 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_number_of_iterations_), _Internal::kHasBitsOffset + 22, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt64)},
724 // optional int32 markowitz_zlatev_parameter = 29 [default = 3];
725 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.markowitz_zlatev_parameter_), _Internal::kHasBitsOffset + 24, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
726 // optional double markowitz_singularity_threshold = 30 [default = 1e-15];
727 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.markowitz_singularity_threshold_), _Internal::kHasBitsOffset + 23, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
728 // optional bool use_dual_simplex = 31 [default = false];
729 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_dual_simplex_), _Internal::kHasBitsOffset + 0, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
730 // optional bool allow_simplex_algorithm_change = 32 [default = false];
731 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.allow_simplex_algorithm_change_), _Internal::kHasBitsOffset + 27, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
732 // optional int32 devex_weights_reset_period = 33 [default = 150];
733 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.devex_weights_reset_period_), _Internal::kHasBitsOffset + 32, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
734 // optional bool use_preprocessing = 34 [default = true];
735 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_preprocessing_), _Internal::kHasBitsOffset + 33, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
736 // optional bool use_middle_product_form_update = 35 [default = true];
737 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_middle_product_form_update_), _Internal::kHasBitsOffset + 34, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
738 // optional bool initialize_devex_with_column_norms = 36 [default = true];
739 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.initialize_devex_with_column_norms_), _Internal::kHasBitsOffset + 35, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
740 // optional bool exploit_singleton_column_in_initial_basis = 37 [default = true];
741 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.exploit_singleton_column_in_initial_basis_), _Internal::kHasBitsOffset + 36, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
742 // optional double dual_small_pivot_threshold = 38 [default = 0.0001];
743 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dual_small_pivot_threshold_), _Internal::kHasBitsOffset + 37, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
744 // optional double preprocessor_zero_tolerance = 39 [default = 1e-09];
745 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.preprocessor_zero_tolerance_), _Internal::kHasBitsOffset + 26, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
746 // optional double objective_lower_limit = 40 [default = -inf];
747 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.objective_lower_limit_), _Internal::kHasBitsOffset + 38, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
748 // optional double objective_upper_limit = 41 [default = inf];
749 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.objective_upper_limit_), _Internal::kHasBitsOffset + 39, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
750 // optional double degenerate_ministep_factor = 42 [default = 0.01];
751 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.degenerate_ministep_factor_), _Internal::kHasBitsOffset + 40, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
752 // optional int32 random_seed = 43 [default = 1];
753 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.random_seed_), _Internal::kHasBitsOffset + 42, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
754 // optional int32 num_omp_threads = 44 [default = 1];
755 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.num_omp_threads_), _Internal::kHasBitsOffset + 25, 0, (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
756 // optional double max_deterministic_time = 45 [default = inf];
757 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_deterministic_time_), _Internal::kHasBitsOffset + 41, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
758 // optional double drop_tolerance = 52 [default = 1e-14];
759 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.drop_tolerance_), _Internal::kHasBitsOffset + 44, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
760 // optional bool perturb_costs_in_dual_simplex = 53 [default = false];
761 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.perturb_costs_in_dual_simplex_), _Internal::kHasBitsOffset + 28, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
762 // optional double relative_cost_perturbation = 54 [default = 1e-05];
763 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.relative_cost_perturbation_), _Internal::kHasBitsOffset + 45, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
764 // optional double relative_max_cost_perturbation = 55 [default = 1e-07];
765 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.relative_max_cost_perturbation_), _Internal::kHasBitsOffset + 46, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
766 // optional double max_number_of_reoptimizations = 56 [default = 40];
767 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_number_of_reoptimizations_), _Internal::kHasBitsOffset + 47, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
768 // optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];
769 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.scaling_method_), _Internal::kHasBitsOffset + 43, 4, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
770 // optional bool change_status_to_imprecise = 58 [default = true];
771 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.change_status_to_imprecise_), _Internal::kHasBitsOffset + 50, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
772 // optional double initial_condition_number_threshold = 59 [default = 1e+50];
773 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.initial_condition_number_threshold_), _Internal::kHasBitsOffset + 48, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
774 // optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];
775 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.cost_scaling_), _Internal::kHasBitsOffset + 49, 5, (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
776 // optional bool log_search_progress = 61 [default = false];
777 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.log_search_progress_), _Internal::kHasBitsOffset + 29, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
778 // optional bool use_dedicated_dual_feasibility_algorithm = 62 [default = true];
779 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_dedicated_dual_feasibility_algorithm_), _Internal::kHasBitsOffset + 51, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
780 // optional bool dynamically_adjust_refactorization_period = 63 [default = true];
781 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dynamically_adjust_refactorization_period_), _Internal::kHasBitsOffset + 52, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
782 // optional double crossover_bound_snapping_distance = 64 [default = inf];
783 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.crossover_bound_snapping_distance_), _Internal::kHasBitsOffset + 54, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
784 // optional bool push_to_vertex = 65 [default = true];
785 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.push_to_vertex_), _Internal::kHasBitsOffset + 53, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
786 // optional bool log_to_stdout = 66 [default = true];
787 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.log_to_stdout_), _Internal::kHasBitsOffset + 57, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
788 // optional bool use_implied_free_preprocessor = 67 [default = true];
789 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_implied_free_preprocessor_), _Internal::kHasBitsOffset + 58, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
790 // optional bool dual_price_prioritize_norm = 69 [default = false];
791 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dual_price_prioritize_norm_), _Internal::kHasBitsOffset + 30, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
792 // optional double max_valid_magnitude = 70 [default = 1e+30];
793 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_valid_magnitude_), _Internal::kHasBitsOffset + 55, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
794 // optional double drop_magnitude = 71 [default = 1e-30];
795 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.drop_magnitude_), _Internal::kHasBitsOffset + 56, 0, (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
796 // optional bool use_absl_random = 72 [default = false];
797 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_absl_random_), _Internal::kHasBitsOffset + 31, 0, (0 | ::_fl::kFcOptional | ::_fl::kBool)},
798 }},
799 {{
800 {0, 2},
801 {0, 2},
802 {0, 3},
803 {0, 2},
804 {0, 2},
805 {0, 3},
806 }},
807 {{
808 }},
809};
810PROTOBUF_NOINLINE void GlopParameters::Clear() {
811// @@protoc_insertion_point(message_clear_start:operations_research.glop.GlopParameters)
812 ::google::protobuf::internal::TSanWrite(&_impl_);
813 ::uint32_t cached_has_bits = 0;
814 // Prevent compiler warnings about cached_has_bits being unused
815 (void) cached_has_bits;
816
817 cached_has_bits = _impl_._has_bits_[0];
818 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
819 _impl_.use_dual_simplex_ = false;
820 _impl_.feasibility_rule_ = 1;
821 _impl_.optimization_rule_ = 1;
822 _impl_.refactorization_threshold_ = 1e-09;
823 _impl_.recompute_reduced_costs_threshold_ = 1e-08;
824 _impl_.recompute_edges_norm_threshold_ = 100;
825 _impl_.primal_feasibility_tolerance_ = 1e-08;
826 _impl_.dual_feasibility_tolerance_ = 1e-08;
827 }
828 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
829 _impl_.ratio_test_zero_threshold_ = 1e-09;
830 _impl_.harris_tolerance_ratio_ = 0.5;
831 _impl_.small_pivot_threshold_ = 1e-06;
832 _impl_.minimum_acceptable_pivot_ = 1e-06;
833 _impl_.initial_basis_ = 2;
834 _impl_.basis_refactorization_period_ = 64;
835 _impl_.use_scaling_ = true;
836 _impl_.use_transposed_matrix_ = true;
837 }
838 if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
839 _impl_.provide_strong_optimal_guarantee_ = true;
840 _impl_.solve_dual_problem_ = 2;
841 _impl_.dualizer_threshold_ = 1.5;
842 _impl_.solution_feasibility_tolerance_ = 1e-06;
843 _impl_.lu_factorization_pivot_threshold_ = 0.01;
844 _impl_.max_time_in_seconds_ = std::numeric_limits<double>::infinity();
845 _impl_.max_number_of_iterations_ = ::int64_t{-1};
846 _impl_.markowitz_singularity_threshold_ = 1e-15;
847 }
848 if (BatchCheckHasBit(cached_has_bits, 0x07000000U)) {
849 _impl_.markowitz_zlatev_parameter_ = 3;
850 _impl_.num_omp_threads_ = 1;
851 _impl_.preprocessor_zero_tolerance_ = 1e-09;
852 }
853 if (BatchCheckHasBit(cached_has_bits, 0xf8000000U)) {
854 ::memset(&_impl_.allow_simplex_algorithm_change_, 0, static_cast<::size_t>(
855 reinterpret_cast<char*>(&_impl_.use_absl_random_) -
856 reinterpret_cast<char*>(&_impl_.allow_simplex_algorithm_change_)) + sizeof(_impl_.use_absl_random_));
857 }
858 cached_has_bits = _impl_._has_bits_[1];
859 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
860 _impl_.devex_weights_reset_period_ = 150;
861 _impl_.use_preprocessing_ = true;
862 _impl_.use_middle_product_form_update_ = true;
863 _impl_.initialize_devex_with_column_norms_ = true;
864 _impl_.exploit_singleton_column_in_initial_basis_ = true;
865 _impl_.dual_small_pivot_threshold_ = 0.0001;
866 _impl_.objective_lower_limit_ = -std::numeric_limits<double>::infinity();
867 _impl_.objective_upper_limit_ = std::numeric_limits<double>::infinity();
868 }
869 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
870 _impl_.degenerate_ministep_factor_ = 0.01;
871 _impl_.max_deterministic_time_ = std::numeric_limits<double>::infinity();
872 _impl_.random_seed_ = 1;
873 _impl_.scaling_method_ = 1;
874 _impl_.drop_tolerance_ = 1e-14;
875 _impl_.relative_cost_perturbation_ = 1e-05;
876 _impl_.relative_max_cost_perturbation_ = 1e-07;
877 _impl_.max_number_of_reoptimizations_ = 40;
878 }
879 if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
880 _impl_.initial_condition_number_threshold_ = 1e+50;
881 _impl_.cost_scaling_ = 1;
882 _impl_.change_status_to_imprecise_ = true;
883 _impl_.use_dedicated_dual_feasibility_algorithm_ = true;
884 _impl_.dynamically_adjust_refactorization_period_ = true;
885 _impl_.push_to_vertex_ = true;
886 _impl_.crossover_bound_snapping_distance_ = std::numeric_limits<double>::infinity();
887 _impl_.max_valid_magnitude_ = 1e+30;
888 }
889 if (BatchCheckHasBit(cached_has_bits, 0x07000000U)) {
890 _impl_.drop_magnitude_ = 1e-30;
891 _impl_.log_to_stdout_ = true;
892 _impl_.use_implied_free_preprocessor_ = true;
893 }
894 _impl_._has_bits_.Clear();
895 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
896}
897
898#if defined(PROTOBUF_CUSTOM_VTABLE)
899::uint8_t* PROTOBUF_NONNULL GlopParameters::_InternalSerialize(
900 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
901 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
902 const GlopParameters& this_ = static_cast<const GlopParameters&>(base);
903#else // PROTOBUF_CUSTOM_VTABLE
904::uint8_t* PROTOBUF_NONNULL GlopParameters::_InternalSerialize(
905 ::uint8_t* PROTOBUF_NONNULL target,
906 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
907 const GlopParameters& this_ = *this;
908#endif // PROTOBUF_CUSTOM_VTABLE
909 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
910 this_.CheckHasBitConsistency();
911 }
912 // @@protoc_insertion_point(serialize_to_array_start:operations_research.glop.GlopParameters)
913 ::uint32_t cached_has_bits = 0;
914 (void)cached_has_bits;
915
916 cached_has_bits = this_._impl_._has_bits_[0];
917 // optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];
918 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
919 target = stream->EnsureSpace(target);
920 target = ::_pbi::WireFormatLite::WriteEnumToArray(
921 1, this_._internal_feasibility_rule(), target);
922 }
923
924 // optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];
925 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
926 target = stream->EnsureSpace(target);
927 target = ::_pbi::WireFormatLite::WriteEnumToArray(
928 2, this_._internal_optimization_rule(), target);
929 }
930
931 // optional double refactorization_threshold = 6 [default = 1e-09];
932 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
933 target = stream->EnsureSpace(target);
934 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
935 6, this_._internal_refactorization_threshold(), target);
936 }
937
938 // optional double recompute_reduced_costs_threshold = 8 [default = 1e-08];
939 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
940 target = stream->EnsureSpace(target);
941 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
942 8, this_._internal_recompute_reduced_costs_threshold(), target);
943 }
944
945 // optional double recompute_edges_norm_threshold = 9 [default = 100];
946 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
947 target = stream->EnsureSpace(target);
948 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
949 9, this_._internal_recompute_edges_norm_threshold(), target);
950 }
951
952 // optional double primal_feasibility_tolerance = 10 [default = 1e-08];
953 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
954 target = stream->EnsureSpace(target);
955 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
956 10, this_._internal_primal_feasibility_tolerance(), target);
957 }
958
959 // optional double dual_feasibility_tolerance = 11 [default = 1e-08];
960 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
961 target = stream->EnsureSpace(target);
962 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
963 11, this_._internal_dual_feasibility_tolerance(), target);
964 }
965
966 // optional double ratio_test_zero_threshold = 12 [default = 1e-09];
967 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
968 target = stream->EnsureSpace(target);
969 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
970 12, this_._internal_ratio_test_zero_threshold(), target);
971 }
972
973 // optional double harris_tolerance_ratio = 13 [default = 0.5];
974 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
975 target = stream->EnsureSpace(target);
976 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
977 13, this_._internal_harris_tolerance_ratio(), target);
978 }
979
980 // optional double small_pivot_threshold = 14 [default = 1e-06];
981 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
982 target = stream->EnsureSpace(target);
983 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
984 14, this_._internal_small_pivot_threshold(), target);
985 }
986
987 // optional double minimum_acceptable_pivot = 15 [default = 1e-06];
988 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
989 target = stream->EnsureSpace(target);
990 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
991 15, this_._internal_minimum_acceptable_pivot(), target);
992 }
993
994 // optional bool use_scaling = 16 [default = true];
995 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
996 target = stream->EnsureSpace(target);
997 target = ::_pbi::WireFormatLite::WriteBoolToArray(
998 16, this_._internal_use_scaling(), target);
999 }
1000
1001 // optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];
1002 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
1003 target = stream->EnsureSpace(target);
1004 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1005 17, this_._internal_initial_basis(), target);
1006 }
1007
1008 // optional bool use_transposed_matrix = 18 [default = true];
1009 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
1010 target = stream->EnsureSpace(target);
1011 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1012 18, this_._internal_use_transposed_matrix(), target);
1013 }
1014
1015 // optional int32 basis_refactorization_period = 19 [default = 64];
1016 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
1017 target = stream->EnsureSpace(target);
1018 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
1019 19, this_._internal_basis_refactorization_period(), target);
1020 }
1021
1022 // optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];
1023 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
1024 target = stream->EnsureSpace(target);
1025 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1026 20, this_._internal_solve_dual_problem(), target);
1027 }
1028
1029 // optional double dualizer_threshold = 21 [default = 1.5];
1030 if (CheckHasBit(cached_has_bits, 0x00040000U)) {
1031 target = stream->EnsureSpace(target);
1032 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1033 21, this_._internal_dualizer_threshold(), target);
1034 }
1035
1036 // optional double solution_feasibility_tolerance = 22 [default = 1e-06];
1037 if (CheckHasBit(cached_has_bits, 0x00080000U)) {
1038 target = stream->EnsureSpace(target);
1039 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1040 22, this_._internal_solution_feasibility_tolerance(), target);
1041 }
1042
1043 // optional bool provide_strong_optimal_guarantee = 24 [default = true];
1044 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
1045 target = stream->EnsureSpace(target);
1046 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1047 24, this_._internal_provide_strong_optimal_guarantee(), target);
1048 }
1049
1050 // optional double lu_factorization_pivot_threshold = 25 [default = 0.01];
1051 if (CheckHasBit(cached_has_bits, 0x00100000U)) {
1052 target = stream->EnsureSpace(target);
1053 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1054 25, this_._internal_lu_factorization_pivot_threshold(), target);
1055 }
1056
1057 // optional double max_time_in_seconds = 26 [default = inf];
1058 if (CheckHasBit(cached_has_bits, 0x00200000U)) {
1059 target = stream->EnsureSpace(target);
1060 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1061 26, this_._internal_max_time_in_seconds(), target);
1062 }
1063
1064 // optional int64 max_number_of_iterations = 27 [default = -1];
1065 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
1066 target = stream->EnsureSpace(target);
1067 target = ::_pbi::WireFormatLite::WriteInt64ToArray(
1068 27, this_._internal_max_number_of_iterations(), target);
1069 }
1070
1071 // optional int32 markowitz_zlatev_parameter = 29 [default = 3];
1072 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
1073 target = stream->EnsureSpace(target);
1074 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
1075 29, this_._internal_markowitz_zlatev_parameter(), target);
1076 }
1077
1078 // optional double markowitz_singularity_threshold = 30 [default = 1e-15];
1079 if (CheckHasBit(cached_has_bits, 0x00800000U)) {
1080 target = stream->EnsureSpace(target);
1081 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1082 30, this_._internal_markowitz_singularity_threshold(), target);
1083 }
1084
1085 // optional bool use_dual_simplex = 31 [default = false];
1086 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1087 target = stream->EnsureSpace(target);
1088 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1089 31, this_._internal_use_dual_simplex(), target);
1090 }
1091
1092 // optional bool allow_simplex_algorithm_change = 32 [default = false];
1093 if (CheckHasBit(cached_has_bits, 0x08000000U)) {
1094 target = stream->EnsureSpace(target);
1095 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1096 32, this_._internal_allow_simplex_algorithm_change(), target);
1097 }
1098
1099 cached_has_bits = this_._impl_._has_bits_[1];
1100 // optional int32 devex_weights_reset_period = 33 [default = 150];
1101 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1102 target = stream->EnsureSpace(target);
1103 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
1104 33, this_._internal_devex_weights_reset_period(), target);
1105 }
1106
1107 // optional bool use_preprocessing = 34 [default = true];
1108 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
1109 target = stream->EnsureSpace(target);
1110 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1111 34, this_._internal_use_preprocessing(), target);
1112 }
1113
1114 // optional bool use_middle_product_form_update = 35 [default = true];
1115 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
1116 target = stream->EnsureSpace(target);
1117 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1118 35, this_._internal_use_middle_product_form_update(), target);
1119 }
1120
1121 // optional bool initialize_devex_with_column_norms = 36 [default = true];
1122 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
1123 target = stream->EnsureSpace(target);
1124 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1125 36, this_._internal_initialize_devex_with_column_norms(), target);
1126 }
1127
1128 // optional bool exploit_singleton_column_in_initial_basis = 37 [default = true];
1129 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
1130 target = stream->EnsureSpace(target);
1131 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1132 37, this_._internal_exploit_singleton_column_in_initial_basis(), target);
1133 }
1134
1135 // optional double dual_small_pivot_threshold = 38 [default = 0.0001];
1136 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
1137 target = stream->EnsureSpace(target);
1138 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1139 38, this_._internal_dual_small_pivot_threshold(), target);
1140 }
1141
1142 cached_has_bits = this_._impl_._has_bits_[0];
1143 // optional double preprocessor_zero_tolerance = 39 [default = 1e-09];
1144 if (CheckHasBit(cached_has_bits, 0x04000000U)) {
1145 target = stream->EnsureSpace(target);
1146 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1147 39, this_._internal_preprocessor_zero_tolerance(), target);
1148 }
1149
1150 cached_has_bits = this_._impl_._has_bits_[1];
1151 // optional double objective_lower_limit = 40 [default = -inf];
1152 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
1153 target = stream->EnsureSpace(target);
1154 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1155 40, this_._internal_objective_lower_limit(), target);
1156 }
1157
1158 // optional double objective_upper_limit = 41 [default = inf];
1159 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
1160 target = stream->EnsureSpace(target);
1161 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1162 41, this_._internal_objective_upper_limit(), target);
1163 }
1164
1165 // optional double degenerate_ministep_factor = 42 [default = 0.01];
1166 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
1167 target = stream->EnsureSpace(target);
1168 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1169 42, this_._internal_degenerate_ministep_factor(), target);
1170 }
1171
1172 // optional int32 random_seed = 43 [default = 1];
1173 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
1174 target = stream->EnsureSpace(target);
1175 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
1176 43, this_._internal_random_seed(), target);
1177 }
1178
1179 cached_has_bits = this_._impl_._has_bits_[0];
1180 // optional int32 num_omp_threads = 44 [default = 1];
1181 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
1182 target = stream->EnsureSpace(target);
1183 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
1184 44, this_._internal_num_omp_threads(), target);
1185 }
1186
1187 cached_has_bits = this_._impl_._has_bits_[1];
1188 // optional double max_deterministic_time = 45 [default = inf];
1189 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
1190 target = stream->EnsureSpace(target);
1191 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1192 45, this_._internal_max_deterministic_time(), target);
1193 }
1194
1195 // optional double drop_tolerance = 52 [default = 1e-14];
1196 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
1197 target = stream->EnsureSpace(target);
1198 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1199 52, this_._internal_drop_tolerance(), target);
1200 }
1201
1202 cached_has_bits = this_._impl_._has_bits_[0];
1203 // optional bool perturb_costs_in_dual_simplex = 53 [default = false];
1204 if (CheckHasBit(cached_has_bits, 0x10000000U)) {
1205 target = stream->EnsureSpace(target);
1206 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1207 53, this_._internal_perturb_costs_in_dual_simplex(), target);
1208 }
1209
1210 cached_has_bits = this_._impl_._has_bits_[1];
1211 // optional double relative_cost_perturbation = 54 [default = 1e-05];
1212 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
1213 target = stream->EnsureSpace(target);
1214 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1215 54, this_._internal_relative_cost_perturbation(), target);
1216 }
1217
1218 // optional double relative_max_cost_perturbation = 55 [default = 1e-07];
1219 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
1220 target = stream->EnsureSpace(target);
1221 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1222 55, this_._internal_relative_max_cost_perturbation(), target);
1223 }
1224
1225 // optional double max_number_of_reoptimizations = 56 [default = 40];
1226 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
1227 target = stream->EnsureSpace(target);
1228 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1229 56, this_._internal_max_number_of_reoptimizations(), target);
1230 }
1231
1232 // optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];
1233 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
1234 target = stream->EnsureSpace(target);
1235 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1236 57, this_._internal_scaling_method(), target);
1237 }
1238
1239 // optional bool change_status_to_imprecise = 58 [default = true];
1240 if (CheckHasBit(cached_has_bits, 0x00040000U)) {
1241 target = stream->EnsureSpace(target);
1242 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1243 58, this_._internal_change_status_to_imprecise(), target);
1244 }
1245
1246 // optional double initial_condition_number_threshold = 59 [default = 1e+50];
1247 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
1248 target = stream->EnsureSpace(target);
1249 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1250 59, this_._internal_initial_condition_number_threshold(), target);
1251 }
1252
1253 // optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];
1254 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
1255 target = stream->EnsureSpace(target);
1256 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1257 60, this_._internal_cost_scaling(), target);
1258 }
1259
1260 cached_has_bits = this_._impl_._has_bits_[0];
1261 // optional bool log_search_progress = 61 [default = false];
1262 if (CheckHasBit(cached_has_bits, 0x20000000U)) {
1263 target = stream->EnsureSpace(target);
1264 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1265 61, this_._internal_log_search_progress(), target);
1266 }
1267
1268 cached_has_bits = this_._impl_._has_bits_[1];
1269 // optional bool use_dedicated_dual_feasibility_algorithm = 62 [default = true];
1270 if (CheckHasBit(cached_has_bits, 0x00080000U)) {
1271 target = stream->EnsureSpace(target);
1272 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1273 62, this_._internal_use_dedicated_dual_feasibility_algorithm(), target);
1274 }
1275
1276 // optional bool dynamically_adjust_refactorization_period = 63 [default = true];
1277 if (CheckHasBit(cached_has_bits, 0x00100000U)) {
1278 target = stream->EnsureSpace(target);
1279 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1280 63, this_._internal_dynamically_adjust_refactorization_period(), target);
1281 }
1282
1283 // optional double crossover_bound_snapping_distance = 64 [default = inf];
1284 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
1285 target = stream->EnsureSpace(target);
1286 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1287 64, this_._internal_crossover_bound_snapping_distance(), target);
1288 }
1289
1290 // optional bool push_to_vertex = 65 [default = true];
1291 if (CheckHasBit(cached_has_bits, 0x00200000U)) {
1292 target = stream->EnsureSpace(target);
1293 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1294 65, this_._internal_push_to_vertex(), target);
1295 }
1296
1297 // optional bool log_to_stdout = 66 [default = true];
1298 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
1299 target = stream->EnsureSpace(target);
1300 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1301 66, this_._internal_log_to_stdout(), target);
1302 }
1303
1304 // optional bool use_implied_free_preprocessor = 67 [default = true];
1305 if (CheckHasBit(cached_has_bits, 0x04000000U)) {
1306 target = stream->EnsureSpace(target);
1307 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1308 67, this_._internal_use_implied_free_preprocessor(), target);
1309 }
1310
1311 cached_has_bits = this_._impl_._has_bits_[0];
1312 // optional bool dual_price_prioritize_norm = 69 [default = false];
1313 if (CheckHasBit(cached_has_bits, 0x40000000U)) {
1314 target = stream->EnsureSpace(target);
1315 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1316 69, this_._internal_dual_price_prioritize_norm(), target);
1317 }
1318
1319 cached_has_bits = this_._impl_._has_bits_[1];
1320 // optional double max_valid_magnitude = 70 [default = 1e+30];
1321 if (CheckHasBit(cached_has_bits, 0x00800000U)) {
1322 target = stream->EnsureSpace(target);
1323 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1324 70, this_._internal_max_valid_magnitude(), target);
1325 }
1326
1327 // optional double drop_magnitude = 71 [default = 1e-30];
1328 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
1329 target = stream->EnsureSpace(target);
1330 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1331 71, this_._internal_drop_magnitude(), target);
1332 }
1333
1334 cached_has_bits = this_._impl_._has_bits_[0];
1335 // optional bool use_absl_random = 72 [default = false];
1336 if (CheckHasBit(cached_has_bits, 0x80000000U)) {
1337 target = stream->EnsureSpace(target);
1338 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1339 72, this_._internal_use_absl_random(), target);
1340 }
1341
1342 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
1343 target =
1344 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
1345 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
1346 }
1347 // @@protoc_insertion_point(serialize_to_array_end:operations_research.glop.GlopParameters)
1348 return target;
1349}
1350
1351#if defined(PROTOBUF_CUSTOM_VTABLE)
1353 const GlopParameters& this_ = static_cast<const GlopParameters&>(base);
1354#else // PROTOBUF_CUSTOM_VTABLE
1355::size_t GlopParameters::ByteSizeLong() const {
1356 const GlopParameters& this_ = *this;
1357#endif // PROTOBUF_CUSTOM_VTABLE
1358 // @@protoc_insertion_point(message_byte_size_start:operations_research.glop.GlopParameters)
1359 ::size_t total_size = 0;
1360
1361 ::uint32_t cached_has_bits = 0;
1362 // Prevent compiler warnings about cached_has_bits being unused
1363 (void)cached_has_bits;
1364
1365 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
1366 cached_has_bits = this_._impl_._has_bits_[0];
1367 total_size += ::absl::popcount(0x04bc0000U & cached_has_bits) * 10;
1368 total_size += ::absl::popcount(0x00000ff8U & cached_has_bits) * 9;
1369 total_size += ::absl::popcount(0xf801c001U & cached_has_bits) * 3;
1370 if (BatchCheckHasBit(cached_has_bits, 0x00000006U)) {
1371 // optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];
1372 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
1373 total_size += 1 +
1374 ::_pbi::WireFormatLite::EnumSize(this_._internal_feasibility_rule());
1375 }
1376 // optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];
1377 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
1378 total_size += 1 +
1379 ::_pbi::WireFormatLite::EnumSize(this_._internal_optimization_rule());
1380 }
1381 }
1382 if (BatchCheckHasBit(cached_has_bits, 0x00003000U)) {
1383 // optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];
1384 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
1385 total_size += 2 +
1386 ::_pbi::WireFormatLite::EnumSize(this_._internal_initial_basis());
1387 }
1388 // optional int32 basis_refactorization_period = 19 [default = 64];
1389 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
1390 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
1391 this_._internal_basis_refactorization_period());
1392 }
1393 }
1394 if (BatchCheckHasBit(cached_has_bits, 0x00420000U)) {
1395 // optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];
1396 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
1397 total_size += 2 +
1398 ::_pbi::WireFormatLite::EnumSize(this_._internal_solve_dual_problem());
1399 }
1400 // optional int64 max_number_of_iterations = 27 [default = -1];
1401 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
1402 total_size += 2 + ::_pbi::WireFormatLite::Int64Size(
1403 this_._internal_max_number_of_iterations());
1404 }
1405 }
1406 if (BatchCheckHasBit(cached_has_bits, 0x03000000U)) {
1407 // optional int32 markowitz_zlatev_parameter = 29 [default = 3];
1408 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
1409 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
1410 this_._internal_markowitz_zlatev_parameter());
1411 }
1412 // optional int32 num_omp_threads = 44 [default = 1];
1413 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
1414 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
1415 this_._internal_num_omp_threads());
1416 }
1417 }
1418 cached_has_bits = this_._impl_._has_bits_[1];
1419 total_size += ::absl::popcount(0x01c1f3e0U & cached_has_bits) * 10;
1420 total_size += ::absl::popcount(0x063c001eU & cached_has_bits) * 3;
1421 {
1422 // optional int32 devex_weights_reset_period = 33 [default = 150];
1423 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1424 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
1425 this_._internal_devex_weights_reset_period());
1426 }
1427 }
1428 if (BatchCheckHasBit(cached_has_bits, 0x00000c00U)) {
1429 // optional int32 random_seed = 43 [default = 1];
1430 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
1431 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
1432 this_._internal_random_seed());
1433 }
1434 // optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];
1435 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
1436 total_size += 2 +
1437 ::_pbi::WireFormatLite::EnumSize(this_._internal_scaling_method());
1438 }
1439 }
1440 {
1441 // optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];
1442 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
1443 total_size += 2 +
1444 ::_pbi::WireFormatLite::EnumSize(this_._internal_cost_scaling());
1445 }
1446 }
1447 return this_.MaybeComputeUnknownFieldsSize(total_size,
1448 &this_._impl_._cached_size_);
1449}
1450
1451void GlopParameters::MergeImpl(::google::protobuf::MessageLite& to_msg,
1452 const ::google::protobuf::MessageLite& from_msg) {
1453 auto* const _this =
1454 static_cast<GlopParameters*>(&to_msg);
1455 auto& from = static_cast<const GlopParameters&>(from_msg);
1456 if constexpr (::_pbi::DebugHardenCheckHasBitConsistency()) {
1457 from.CheckHasBitConsistency();
1458 }
1459 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.glop.GlopParameters)
1460 ABSL_DCHECK_NE(&from, _this);
1461 ::uint32_t cached_has_bits = 0;
1462 (void)cached_has_bits;
1463
1464 cached_has_bits = from._impl_._has_bits_[0];
1465 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
1466 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1467 _this->_impl_.use_dual_simplex_ = from._impl_.use_dual_simplex_;
1468 }
1469 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
1470 _this->_impl_.feasibility_rule_ = from._impl_.feasibility_rule_;
1471 }
1472 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
1473 _this->_impl_.optimization_rule_ = from._impl_.optimization_rule_;
1474 }
1475 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
1476 _this->_impl_.refactorization_threshold_ = from._impl_.refactorization_threshold_;
1477 }
1478 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
1479 _this->_impl_.recompute_reduced_costs_threshold_ = from._impl_.recompute_reduced_costs_threshold_;
1480 }
1481 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
1482 _this->_impl_.recompute_edges_norm_threshold_ = from._impl_.recompute_edges_norm_threshold_;
1483 }
1484 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
1485 _this->_impl_.primal_feasibility_tolerance_ = from._impl_.primal_feasibility_tolerance_;
1486 }
1487 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
1488 _this->_impl_.dual_feasibility_tolerance_ = from._impl_.dual_feasibility_tolerance_;
1489 }
1490 }
1491 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
1492 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
1493 _this->_impl_.ratio_test_zero_threshold_ = from._impl_.ratio_test_zero_threshold_;
1494 }
1495 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
1496 _this->_impl_.harris_tolerance_ratio_ = from._impl_.harris_tolerance_ratio_;
1497 }
1498 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
1499 _this->_impl_.small_pivot_threshold_ = from._impl_.small_pivot_threshold_;
1500 }
1501 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
1502 _this->_impl_.minimum_acceptable_pivot_ = from._impl_.minimum_acceptable_pivot_;
1503 }
1504 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
1505 _this->_impl_.initial_basis_ = from._impl_.initial_basis_;
1506 }
1507 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
1508 _this->_impl_.basis_refactorization_period_ = from._impl_.basis_refactorization_period_;
1509 }
1510 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
1511 _this->_impl_.use_scaling_ = from._impl_.use_scaling_;
1512 }
1513 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
1514 _this->_impl_.use_transposed_matrix_ = from._impl_.use_transposed_matrix_;
1515 }
1516 }
1517 if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
1518 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
1519 _this->_impl_.provide_strong_optimal_guarantee_ = from._impl_.provide_strong_optimal_guarantee_;
1520 }
1521 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
1522 _this->_impl_.solve_dual_problem_ = from._impl_.solve_dual_problem_;
1523 }
1524 if (CheckHasBit(cached_has_bits, 0x00040000U)) {
1525 _this->_impl_.dualizer_threshold_ = from._impl_.dualizer_threshold_;
1526 }
1527 if (CheckHasBit(cached_has_bits, 0x00080000U)) {
1528 _this->_impl_.solution_feasibility_tolerance_ = from._impl_.solution_feasibility_tolerance_;
1529 }
1530 if (CheckHasBit(cached_has_bits, 0x00100000U)) {
1531 _this->_impl_.lu_factorization_pivot_threshold_ = from._impl_.lu_factorization_pivot_threshold_;
1532 }
1533 if (CheckHasBit(cached_has_bits, 0x00200000U)) {
1534 _this->_impl_.max_time_in_seconds_ = from._impl_.max_time_in_seconds_;
1535 }
1536 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
1537 _this->_impl_.max_number_of_iterations_ = from._impl_.max_number_of_iterations_;
1538 }
1539 if (CheckHasBit(cached_has_bits, 0x00800000U)) {
1540 _this->_impl_.markowitz_singularity_threshold_ = from._impl_.markowitz_singularity_threshold_;
1541 }
1542 }
1543 if (BatchCheckHasBit(cached_has_bits, 0xff000000U)) {
1544 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
1545 _this->_impl_.markowitz_zlatev_parameter_ = from._impl_.markowitz_zlatev_parameter_;
1546 }
1547 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
1548 _this->_impl_.num_omp_threads_ = from._impl_.num_omp_threads_;
1549 }
1550 if (CheckHasBit(cached_has_bits, 0x04000000U)) {
1551 _this->_impl_.preprocessor_zero_tolerance_ = from._impl_.preprocessor_zero_tolerance_;
1552 }
1553 if (CheckHasBit(cached_has_bits, 0x08000000U)) {
1554 _this->_impl_.allow_simplex_algorithm_change_ = from._impl_.allow_simplex_algorithm_change_;
1555 }
1556 if (CheckHasBit(cached_has_bits, 0x10000000U)) {
1557 _this->_impl_.perturb_costs_in_dual_simplex_ = from._impl_.perturb_costs_in_dual_simplex_;
1558 }
1559 if (CheckHasBit(cached_has_bits, 0x20000000U)) {
1560 _this->_impl_.log_search_progress_ = from._impl_.log_search_progress_;
1561 }
1562 if (CheckHasBit(cached_has_bits, 0x40000000U)) {
1563 _this->_impl_.dual_price_prioritize_norm_ = from._impl_.dual_price_prioritize_norm_;
1564 }
1565 if (CheckHasBit(cached_has_bits, 0x80000000U)) {
1566 _this->_impl_.use_absl_random_ = from._impl_.use_absl_random_;
1567 }
1568 }
1569 cached_has_bits = from._impl_._has_bits_[1];
1570 if (BatchCheckHasBit(cached_has_bits, 0x000000ffU)) {
1571 if (CheckHasBit(cached_has_bits, 0x00000001U)) {
1572 _this->_impl_.devex_weights_reset_period_ = from._impl_.devex_weights_reset_period_;
1573 }
1574 if (CheckHasBit(cached_has_bits, 0x00000002U)) {
1575 _this->_impl_.use_preprocessing_ = from._impl_.use_preprocessing_;
1576 }
1577 if (CheckHasBit(cached_has_bits, 0x00000004U)) {
1578 _this->_impl_.use_middle_product_form_update_ = from._impl_.use_middle_product_form_update_;
1579 }
1580 if (CheckHasBit(cached_has_bits, 0x00000008U)) {
1581 _this->_impl_.initialize_devex_with_column_norms_ = from._impl_.initialize_devex_with_column_norms_;
1582 }
1583 if (CheckHasBit(cached_has_bits, 0x00000010U)) {
1584 _this->_impl_.exploit_singleton_column_in_initial_basis_ = from._impl_.exploit_singleton_column_in_initial_basis_;
1585 }
1586 if (CheckHasBit(cached_has_bits, 0x00000020U)) {
1587 _this->_impl_.dual_small_pivot_threshold_ = from._impl_.dual_small_pivot_threshold_;
1588 }
1589 if (CheckHasBit(cached_has_bits, 0x00000040U)) {
1590 _this->_impl_.objective_lower_limit_ = from._impl_.objective_lower_limit_;
1591 }
1592 if (CheckHasBit(cached_has_bits, 0x00000080U)) {
1593 _this->_impl_.objective_upper_limit_ = from._impl_.objective_upper_limit_;
1594 }
1595 }
1596 if (BatchCheckHasBit(cached_has_bits, 0x0000ff00U)) {
1597 if (CheckHasBit(cached_has_bits, 0x00000100U)) {
1598 _this->_impl_.degenerate_ministep_factor_ = from._impl_.degenerate_ministep_factor_;
1599 }
1600 if (CheckHasBit(cached_has_bits, 0x00000200U)) {
1601 _this->_impl_.max_deterministic_time_ = from._impl_.max_deterministic_time_;
1602 }
1603 if (CheckHasBit(cached_has_bits, 0x00000400U)) {
1604 _this->_impl_.random_seed_ = from._impl_.random_seed_;
1605 }
1606 if (CheckHasBit(cached_has_bits, 0x00000800U)) {
1607 _this->_impl_.scaling_method_ = from._impl_.scaling_method_;
1608 }
1609 if (CheckHasBit(cached_has_bits, 0x00001000U)) {
1610 _this->_impl_.drop_tolerance_ = from._impl_.drop_tolerance_;
1611 }
1612 if (CheckHasBit(cached_has_bits, 0x00002000U)) {
1613 _this->_impl_.relative_cost_perturbation_ = from._impl_.relative_cost_perturbation_;
1614 }
1615 if (CheckHasBit(cached_has_bits, 0x00004000U)) {
1616 _this->_impl_.relative_max_cost_perturbation_ = from._impl_.relative_max_cost_perturbation_;
1617 }
1618 if (CheckHasBit(cached_has_bits, 0x00008000U)) {
1619 _this->_impl_.max_number_of_reoptimizations_ = from._impl_.max_number_of_reoptimizations_;
1620 }
1621 }
1622 if (BatchCheckHasBit(cached_has_bits, 0x00ff0000U)) {
1623 if (CheckHasBit(cached_has_bits, 0x00010000U)) {
1624 _this->_impl_.initial_condition_number_threshold_ = from._impl_.initial_condition_number_threshold_;
1625 }
1626 if (CheckHasBit(cached_has_bits, 0x00020000U)) {
1627 _this->_impl_.cost_scaling_ = from._impl_.cost_scaling_;
1628 }
1629 if (CheckHasBit(cached_has_bits, 0x00040000U)) {
1630 _this->_impl_.change_status_to_imprecise_ = from._impl_.change_status_to_imprecise_;
1631 }
1632 if (CheckHasBit(cached_has_bits, 0x00080000U)) {
1633 _this->_impl_.use_dedicated_dual_feasibility_algorithm_ = from._impl_.use_dedicated_dual_feasibility_algorithm_;
1634 }
1635 if (CheckHasBit(cached_has_bits, 0x00100000U)) {
1636 _this->_impl_.dynamically_adjust_refactorization_period_ = from._impl_.dynamically_adjust_refactorization_period_;
1637 }
1638 if (CheckHasBit(cached_has_bits, 0x00200000U)) {
1639 _this->_impl_.push_to_vertex_ = from._impl_.push_to_vertex_;
1640 }
1641 if (CheckHasBit(cached_has_bits, 0x00400000U)) {
1642 _this->_impl_.crossover_bound_snapping_distance_ = from._impl_.crossover_bound_snapping_distance_;
1643 }
1644 if (CheckHasBit(cached_has_bits, 0x00800000U)) {
1645 _this->_impl_.max_valid_magnitude_ = from._impl_.max_valid_magnitude_;
1646 }
1647 }
1648 if (BatchCheckHasBit(cached_has_bits, 0x07000000U)) {
1649 if (CheckHasBit(cached_has_bits, 0x01000000U)) {
1650 _this->_impl_.drop_magnitude_ = from._impl_.drop_magnitude_;
1651 }
1652 if (CheckHasBit(cached_has_bits, 0x02000000U)) {
1653 _this->_impl_.log_to_stdout_ = from._impl_.log_to_stdout_;
1654 }
1655 if (CheckHasBit(cached_has_bits, 0x04000000U)) {
1656 _this->_impl_.use_implied_free_preprocessor_ = from._impl_.use_implied_free_preprocessor_;
1657 }
1658 }
1659 _this->_impl_._has_bits_.Or(from._impl_._has_bits_);
1660 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(
1661 from._internal_metadata_);
1662}
1663
1664void GlopParameters::CopyFrom(const GlopParameters& from) {
1665 // @@protoc_insertion_point(class_specific_copy_from_start:operations_research.glop.GlopParameters)
1666 if (&from == this) return;
1667 Clear();
1668 MergeFrom(from);
1669}
1670
1671
1672void GlopParameters::InternalSwap(GlopParameters* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
1673 using ::std::swap;
1674 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
1675 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
1676 swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]);
1677 ::google::protobuf::internal::memswap<
1678 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_implied_free_preprocessor_)
1679 + sizeof(GlopParameters::_impl_.use_implied_free_preprocessor_)
1680 - PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_dual_simplex_)>(
1681 reinterpret_cast<char*>(&_impl_.use_dual_simplex_),
1682 reinterpret_cast<char*>(&other->_impl_.use_dual_simplex_));
1683}
1684
1685::google::protobuf::Metadata GlopParameters::GetMetadata() const {
1686 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
1687}
1688// @@protoc_insertion_point(namespace_scope)
1689} // namespace glop
1690} // namespace operations_research
1691namespace google {
1692namespace protobuf {
1693} // namespace protobuf
1694} // namespace google
1695// @@protoc_insertion_point(global_scope)
1696PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::std::false_type
1697 _static_init2_ [[maybe_unused]] =
1699 ::std::false_type{});
1700#include "google/protobuf/port_undef.inc"
static PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 ::std::false_type _static_init2_
static const ::_pb::Message *PROTOBUF_NONNULL const file_default_instances[]
decltype(::std::declval< GlopParameters >()._impl_._has_bits_) HasBits
friend class ::google::protobuf::MessageLite
::uint8_t *PROTOBUF_NONNULL _InternalSerialize(::uint8_t *PROTOBUF_NONNULL target, ::google::protobuf::io::EpsCopyOutputStream *PROTOBUF_NONNULL stream) const final
const ::google::protobuf::UnknownFieldSet & unknown_fields() const ABSL_ATTRIBUTE_LIFETIME_BOUND
ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL
::google::protobuf::Metadata GetMetadata() const
friend void swap(GlopParameters &a, GlopParameters &b)
void MergeFrom(const GlopParameters &from)
void CopyFrom(const GlopParameters &from)
static constexpr auto InternalGenerateClassData_()
static constexpr ::_pbi::MigrationSchema *PROTOBUF_NULLABLE schemas
const ::uint32_t TableStruct_ortools_2fglop_2fparameters_2eproto::offsets[] ABSL_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold)
::absl::once_flag descriptor_table_ortools_2fglop_2fparameters_2eproto_once
static const ::_pb::EnumDescriptor *PROTOBUF_NONNULL file_level_enum_descriptors_ortools_2fglop_2fparameters_2eproto[5]
PROTOBUF_CONSTINITconst ::_pbi::DescriptorTable descriptor_table_ortools_2fglop_2fparameters_2eproto
static constexprconst ::_pb::ServiceDescriptor *PROTOBUF_NONNULL *PROTOBUF_NULLABLE file_level_service_descriptors_ortools_2fglop_2fparameters_2eproto
PROTOBUF_CONSTINIT const uint32_t GlopParameters_ScalingAlgorithm_internal_data_[]
PROTOBUF_CONSTINIT const uint32_t GlopParameters_PricingRule_internal_data_[]
const ::google::protobuf::EnumDescriptor *PROTOBUF_NONNULL GlopParameters_InitialBasisHeuristic_descriptor()
const ::google::protobuf::EnumDescriptor *PROTOBUF_NONNULL GlopParameters_PricingRule_descriptor()
PROTOBUF_CONSTINIT const uint32_t GlopParameters_CostScalingAlgorithm_internal_data_[]
PROTOBUF_CONSTINIT const uint32_t GlopParameters_SolverBehavior_internal_data_[]
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT OR_PROTO_DLL PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 GlopParametersDefaultTypeInternal _GlopParameters_default_instance_
const ::google::protobuf::EnumDescriptor *PROTOBUF_NONNULL GlopParameters_ScalingAlgorithm_descriptor()
const ::google::protobuf::EnumDescriptor *PROTOBUF_NONNULL GlopParameters_CostScalingAlgorithm_descriptor()
const ::google::protobuf::EnumDescriptor *PROTOBUF_NONNULL GlopParameters_SolverBehavior_descriptor()
PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const::google::protobuf::internal::ClassDataFull GlopParameters_class_data_
PROTOBUF_CONSTINIT const uint32_t GlopParameters_InitialBasisHeuristic_internal_data_[]
OR-Tools root namespace.
STL namespace.