Google OR-Tools v9.14
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.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 glop {
29
30inline constexpr GlopParameters::Impl_::Impl_(
31 ::_pbi::ConstantInitialized) noexcept
32 : _cached_size_{0},
33 use_dual_simplex_{false},
34 allow_simplex_algorithm_change_{false},
35 perturb_costs_in_dual_simplex_{false},
36 log_search_progress_{false},
37 dual_price_prioritize_norm_{false},
38 use_absl_random_{false},
39 feasibility_rule_{static_cast< ::operations_research::glop::GlopParameters_PricingRule >(1)},
40 optimization_rule_{static_cast< ::operations_research::glop::GlopParameters_PricingRule >(1)},
41 refactorization_threshold_{1e-09},
42 recompute_reduced_costs_threshold_{1e-08},
43 recompute_edges_norm_threshold_{100},
44 primal_feasibility_tolerance_{1e-08},
45 dual_feasibility_tolerance_{1e-08},
46 ratio_test_zero_threshold_{1e-09},
47 harris_tolerance_ratio_{0.5},
48 small_pivot_threshold_{1e-06},
49 minimum_acceptable_pivot_{1e-06},
51 basis_refactorization_period_{64},
52 dualizer_threshold_{1.5},
53 solution_feasibility_tolerance_{1e-06},
54 solve_dual_problem_{static_cast< ::operations_research::glop::GlopParameters_SolverBehavior >(2)},
55 use_scaling_{true},
56 use_transposed_matrix_{true},
57 provide_strong_optimal_guarantee_{true},
58 use_preprocessing_{true},
59 lu_factorization_pivot_threshold_{0.01},
60 max_time_in_seconds_{std::numeric_limits<double>::infinity()},
61 max_number_of_iterations_{::int64_t{-1}},
62 markowitz_singularity_threshold_{1e-15},
63 markowitz_zlatev_parameter_{3},
64 devex_weights_reset_period_{150},
65 dual_small_pivot_threshold_{0.0001},
66 preprocessor_zero_tolerance_{1e-09},
67 objective_lower_limit_{-std::numeric_limits<double>::infinity()},
68 objective_upper_limit_{std::numeric_limits<double>::infinity()},
69 use_middle_product_form_update_{true},
70 initialize_devex_with_column_norms_{true},
71 exploit_singleton_column_in_initial_basis_{true},
72 change_status_to_imprecise_{true},
73 random_seed_{1},
74 degenerate_ministep_factor_{0.01},
75 max_deterministic_time_{std::numeric_limits<double>::infinity()},
76 num_omp_threads_{1},
77 scaling_method_{static_cast< ::operations_research::glop::GlopParameters_ScalingAlgorithm >(1)},
78 drop_tolerance_{1e-14},
79 relative_cost_perturbation_{1e-05},
80 relative_max_cost_perturbation_{1e-07},
81 max_number_of_reoptimizations_{40},
82 initial_condition_number_threshold_{1e+50},
84 use_dedicated_dual_feasibility_algorithm_{true},
85 dynamically_adjust_refactorization_period_{true},
86 push_to_vertex_{true},
87 log_to_stdout_{true},
88 crossover_bound_snapping_distance_{std::numeric_limits<double>::infinity()},
89 max_valid_magnitude_{1e+30},
90 drop_magnitude_{1e-30},
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 44,
184 6,
185 7,
186 8,
187 9,
188 10,
189 11,
190 12,
191 13,
192 14,
193 15,
194 16,
195 45,
196 22,
197 50,
198 17,
199 23,
200 18,
201 52,
202 21,
203 19,
204 20,
205 24,
206 39,
207 48,
208 26,
209 27,
210 42,
211 28,
212 30,
213 29,
214 0,
215 1,
216 31,
217 25,
218 36,
219 37,
220 38,
221 32,
222 33,
223 34,
224 35,
225 41,
226 40,
227 5,
228 43,
229 2,
230 51,
231 46,
232 47,
233 49,
234 3,
235 54,
236 55,
237 53,
238 58,
239 56,
240 57,
241 4,
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 ::google::protobuf::internal::InternalVisibility visibility,
418 ::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 dualizer_threshold_{1.5},
434 solution_feasibility_tolerance_{1e-06},
435 solve_dual_problem_{static_cast< ::operations_research::glop::GlopParameters_SolverBehavior >(2)},
436 use_scaling_{true},
437 use_transposed_matrix_{true},
438 provide_strong_optimal_guarantee_{true},
439 use_preprocessing_{true},
440 lu_factorization_pivot_threshold_{0.01},
441 max_time_in_seconds_{std::numeric_limits<double>::infinity()},
442 max_number_of_iterations_{::int64_t{-1}},
443 markowitz_singularity_threshold_{1e-15},
444 markowitz_zlatev_parameter_{3},
445 devex_weights_reset_period_{150},
446 dual_small_pivot_threshold_{0.0001},
447 preprocessor_zero_tolerance_{1e-09},
448 objective_lower_limit_{-std::numeric_limits<double>::infinity()},
449 objective_upper_limit_{std::numeric_limits<double>::infinity()},
450 use_middle_product_form_update_{true},
451 initialize_devex_with_column_norms_{true},
452 exploit_singleton_column_in_initial_basis_{true},
453 change_status_to_imprecise_{true},
454 random_seed_{1},
455 degenerate_ministep_factor_{0.01},
456 max_deterministic_time_{std::numeric_limits<double>::infinity()},
457 num_omp_threads_{1},
458 scaling_method_{static_cast< ::operations_research::glop::GlopParameters_ScalingAlgorithm >(1)},
459 drop_tolerance_{1e-14},
460 relative_cost_perturbation_{1e-05},
461 relative_max_cost_perturbation_{1e-07},
462 max_number_of_reoptimizations_{40},
463 initial_condition_number_threshold_{1e+50},
464 cost_scaling_{static_cast< ::operations_research::glop::GlopParameters_CostScalingAlgorithm >(1)},
465 use_dedicated_dual_feasibility_algorithm_{true},
466 dynamically_adjust_refactorization_period_{true},
467 push_to_vertex_{true},
468 log_to_stdout_{true},
469 crossover_bound_snapping_distance_{std::numeric_limits<double>::infinity()},
470 max_valid_magnitude_{1e+30},
471 drop_magnitude_{1e-30},
472 use_implied_free_preprocessor_{true} {}
473
474inline void GlopParameters::SharedCtor(::_pb::Arena* PROTOBUF_NULLABLE arena) {
475 new (&_impl_) Impl_(internal_visibility(), arena);
476 ::memset(reinterpret_cast<char *>(&_impl_) +
477 offsetof(Impl_, use_dual_simplex_),
478 0,
479 offsetof(Impl_, use_absl_random_) -
480 offsetof(Impl_, use_dual_simplex_) +
481 sizeof(Impl_::use_absl_random_));
482}
484 // @@protoc_insertion_point(destructor:operations_research.glop.GlopParameters)
485 SharedDtor(*this);
486}
487inline void GlopParameters::SharedDtor(MessageLite& self) {
488 GlopParameters& this_ = static_cast<GlopParameters&>(self);
489 this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
490 ABSL_DCHECK(this_.GetArena() == nullptr);
491 this_._impl_.~Impl_();
492}
493
494inline void* PROTOBUF_NONNULL GlopParameters::PlacementNew_(
495 const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
496 ::google::protobuf::Arena* PROTOBUF_NULLABLE arena) {
497 return ::new (mem) GlopParameters(arena);
498}
499constexpr auto GlopParameters::InternalNewImpl_() {
500 return ::google::protobuf::internal::MessageCreator::CopyInit(sizeof(GlopParameters),
501 alignof(GlopParameters));
502}
504 return ::google::protobuf::internal::ClassDataFull{
505 ::google::protobuf::internal::ClassData{
507 &_table_.header,
508 nullptr, // OnDemandRegisterArenaDtor
509 nullptr, // IsInitialized
510 &GlopParameters::MergeImpl,
511 ::google::protobuf::Message::GetNewImpl<GlopParameters>(),
512#if defined(PROTOBUF_CUSTOM_VTABLE)
513 &GlopParameters::SharedDtor,
514 ::google::protobuf::Message::GetClearImpl<GlopParameters>(), &GlopParameters::ByteSizeLong,
516#endif // PROTOBUF_CUSTOM_VTABLE
517 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_._cached_size_),
518 false,
519 },
520 &GlopParameters::kDescriptorMethods,
522 nullptr, // tracker
523 };
524}
525
526PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 const
527 ::google::protobuf::internal::ClassDataFull GlopParameters_class_data_ =
529
530PROTOBUF_ATTRIBUTE_WEAK const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
532 ::google::protobuf::internal::PrefetchToLocalCache(&GlopParameters_class_data_);
533 ::google::protobuf::internal::PrefetchToLocalCache(GlopParameters_class_data_.tc_table);
534 return GlopParameters_class_data_.base();
535}
536PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1
537const ::_pbi::TcParseTable<5, 59, 6, 0, 11>
538GlopParameters::_table_ = {
539 {
540 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_._has_bits_),
541 0, // no _extensions_
542 72, 248, // max_field_number, fast_idx_mask
543 offsetof(decltype(_table_), field_lookup_table),
544 138412124, // skipmap
545 offsetof(decltype(_table_), field_entries),
546 59, // num_field_entries
547 6, // num_aux_entries
548 offsetof(decltype(_table_), aux_entries),
550 nullptr, // post_loop_handler
551 ::_pbi::TcParser::GenericFallback, // fallback
552 #ifdef PROTOBUF_PREFETCH_PARSE_TABLE
553 ::_pbi::TcParser::GetTable<::operations_research::glop::GlopParameters>(), // to_prefetch
554 #endif // PROTOBUF_PREFETCH_PARSE_TABLE
555 }, {{
556 {::_pbi::TcParser::MiniParse, {}},
557 // optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];
558 {::_pbi::TcParser::FastEr0S1,
559 {8, 6, 2, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.feasibility_rule_)}},
560 // optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];
561 {::_pbi::TcParser::FastEr0S1,
562 {16, 7, 2, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.optimization_rule_)}},
563 {::_pbi::TcParser::MiniParse, {}},
564 {::_pbi::TcParser::MiniParse, {}},
565 {::_pbi::TcParser::MiniParse, {}},
566 // optional double refactorization_threshold = 6 [default = 1e-09];
567 {::_pbi::TcParser::FastF64S1,
568 {49, 8, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.refactorization_threshold_)}},
569 {::_pbi::TcParser::MiniParse, {}},
570 // optional double recompute_reduced_costs_threshold = 8 [default = 1e-08];
571 {::_pbi::TcParser::FastF64S1,
572 {65, 9, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.recompute_reduced_costs_threshold_)}},
573 // optional double recompute_edges_norm_threshold = 9 [default = 100];
574 {::_pbi::TcParser::FastF64S1,
575 {73, 10, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.recompute_edges_norm_threshold_)}},
576 // optional double primal_feasibility_tolerance = 10 [default = 1e-08];
577 {::_pbi::TcParser::FastF64S1,
578 {81, 11, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.primal_feasibility_tolerance_)}},
579 // optional double dual_feasibility_tolerance = 11 [default = 1e-08];
580 {::_pbi::TcParser::FastF64S1,
581 {89, 12, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dual_feasibility_tolerance_)}},
582 // optional double ratio_test_zero_threshold = 12 [default = 1e-09];
583 {::_pbi::TcParser::FastF64S1,
584 {97, 13, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.ratio_test_zero_threshold_)}},
585 // optional double harris_tolerance_ratio = 13 [default = 0.5];
586 {::_pbi::TcParser::FastF64S1,
587 {105, 14, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.harris_tolerance_ratio_)}},
588 // optional double small_pivot_threshold = 14 [default = 1e-06];
589 {::_pbi::TcParser::FastF64S1,
590 {113, 15, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.small_pivot_threshold_)}},
591 // optional double minimum_acceptable_pivot = 15 [default = 1e-06];
592 {::_pbi::TcParser::FastF64S1,
593 {121, 16, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.minimum_acceptable_pivot_)}},
594 // optional bool use_scaling = 16 [default = true];
595 {::_pbi::TcParser::FastV8S2,
596 {384, 22, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_scaling_)}},
597 // optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];
598 {::_pbi::TcParser::FastEr0S2,
599 {392, 17, 3, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.initial_basis_)}},
600 // optional bool use_transposed_matrix = 18 [default = true];
601 {::_pbi::TcParser::FastV8S2,
602 {400, 23, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_transposed_matrix_)}},
603 // optional int32 basis_refactorization_period = 19 [default = 64];
604 {::_pbi::TcParser::FastV32S2,
605 {408, 18, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.basis_refactorization_period_)}},
606 // optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];
607 {::_pbi::TcParser::FastEr0S2,
608 {416, 21, 2, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.solve_dual_problem_)}},
609 // optional double dualizer_threshold = 21 [default = 1.5];
610 {::_pbi::TcParser::FastF64S2,
611 {425, 19, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dualizer_threshold_)}},
612 // optional double solution_feasibility_tolerance = 22 [default = 1e-06];
613 {::_pbi::TcParser::FastF64S2,
614 {433, 20, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.solution_feasibility_tolerance_)}},
615 {::_pbi::TcParser::MiniParse, {}},
616 // optional bool provide_strong_optimal_guarantee = 24 [default = true];
617 {::_pbi::TcParser::FastV8S2,
618 {448, 24, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.provide_strong_optimal_guarantee_)}},
619 // optional double lu_factorization_pivot_threshold = 25 [default = 0.01];
620 {::_pbi::TcParser::FastF64S2,
621 {457, 26, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.lu_factorization_pivot_threshold_)}},
622 // optional double max_time_in_seconds = 26 [default = inf];
623 {::_pbi::TcParser::FastF64S2,
624 {465, 27, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_time_in_seconds_)}},
625 // optional int64 max_number_of_iterations = 27 [default = -1];
626 {::_pbi::TcParser::FastV64S2,
627 {472, 28, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_number_of_iterations_)}},
628 {::_pbi::TcParser::MiniParse, {}},
629 // optional int32 markowitz_zlatev_parameter = 29 [default = 3];
630 {::_pbi::TcParser::FastV32S2,
631 {488, 30, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.markowitz_zlatev_parameter_)}},
632 // optional double markowitz_singularity_threshold = 30 [default = 1e-15];
633 {::_pbi::TcParser::FastF64S2,
634 {497, 29, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.markowitz_singularity_threshold_)}},
635 // optional bool use_dual_simplex = 31 [default = false];
636 {::_pbi::TcParser::FastV8S2,
637 {504, 0, 0, PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_dual_simplex_)}},
638 }}, {{
639 33, 0, 3,
640 57344, 26,
641 7, 39,
642 65288, 52,
643 65535, 65535
644 }}, {{
645 // optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];
646 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.feasibility_rule_), _Internal::kHasBitsOffset + 6, 0,
647 (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
648 // optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];
649 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.optimization_rule_), _Internal::kHasBitsOffset + 7, 1,
650 (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
651 // optional double refactorization_threshold = 6 [default = 1e-09];
652 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.refactorization_threshold_), _Internal::kHasBitsOffset + 8, 0,
653 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
654 // optional double recompute_reduced_costs_threshold = 8 [default = 1e-08];
655 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.recompute_reduced_costs_threshold_), _Internal::kHasBitsOffset + 9, 0,
656 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
657 // optional double recompute_edges_norm_threshold = 9 [default = 100];
658 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.recompute_edges_norm_threshold_), _Internal::kHasBitsOffset + 10, 0,
659 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
660 // optional double primal_feasibility_tolerance = 10 [default = 1e-08];
661 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.primal_feasibility_tolerance_), _Internal::kHasBitsOffset + 11, 0,
662 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
663 // optional double dual_feasibility_tolerance = 11 [default = 1e-08];
664 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dual_feasibility_tolerance_), _Internal::kHasBitsOffset + 12, 0,
665 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
666 // optional double ratio_test_zero_threshold = 12 [default = 1e-09];
667 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.ratio_test_zero_threshold_), _Internal::kHasBitsOffset + 13, 0,
668 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
669 // optional double harris_tolerance_ratio = 13 [default = 0.5];
670 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.harris_tolerance_ratio_), _Internal::kHasBitsOffset + 14, 0,
671 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
672 // optional double small_pivot_threshold = 14 [default = 1e-06];
673 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.small_pivot_threshold_), _Internal::kHasBitsOffset + 15, 0,
674 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
675 // optional double minimum_acceptable_pivot = 15 [default = 1e-06];
676 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.minimum_acceptable_pivot_), _Internal::kHasBitsOffset + 16, 0,
677 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
678 // optional bool use_scaling = 16 [default = true];
679 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_scaling_), _Internal::kHasBitsOffset + 22, 0,
680 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
681 // optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];
682 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.initial_basis_), _Internal::kHasBitsOffset + 17, 2,
683 (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
684 // optional bool use_transposed_matrix = 18 [default = true];
685 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_transposed_matrix_), _Internal::kHasBitsOffset + 23, 0,
686 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
687 // optional int32 basis_refactorization_period = 19 [default = 64];
688 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.basis_refactorization_period_), _Internal::kHasBitsOffset + 18, 0,
689 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
690 // optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];
691 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.solve_dual_problem_), _Internal::kHasBitsOffset + 21, 3,
692 (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
693 // optional double dualizer_threshold = 21 [default = 1.5];
694 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dualizer_threshold_), _Internal::kHasBitsOffset + 19, 0,
695 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
696 // optional double solution_feasibility_tolerance = 22 [default = 1e-06];
697 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.solution_feasibility_tolerance_), _Internal::kHasBitsOffset + 20, 0,
698 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
699 // optional bool provide_strong_optimal_guarantee = 24 [default = true];
700 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.provide_strong_optimal_guarantee_), _Internal::kHasBitsOffset + 24, 0,
701 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
702 // optional double lu_factorization_pivot_threshold = 25 [default = 0.01];
703 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.lu_factorization_pivot_threshold_), _Internal::kHasBitsOffset + 26, 0,
704 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
705 // optional double max_time_in_seconds = 26 [default = inf];
706 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_time_in_seconds_), _Internal::kHasBitsOffset + 27, 0,
707 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
708 // optional int64 max_number_of_iterations = 27 [default = -1];
709 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_number_of_iterations_), _Internal::kHasBitsOffset + 28, 0,
710 (0 | ::_fl::kFcOptional | ::_fl::kInt64)},
711 // optional int32 markowitz_zlatev_parameter = 29 [default = 3];
712 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.markowitz_zlatev_parameter_), _Internal::kHasBitsOffset + 30, 0,
713 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
714 // optional double markowitz_singularity_threshold = 30 [default = 1e-15];
715 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.markowitz_singularity_threshold_), _Internal::kHasBitsOffset + 29, 0,
716 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
717 // optional bool use_dual_simplex = 31 [default = false];
718 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_dual_simplex_), _Internal::kHasBitsOffset + 0, 0,
719 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
720 // optional bool allow_simplex_algorithm_change = 32 [default = false];
721 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.allow_simplex_algorithm_change_), _Internal::kHasBitsOffset + 1, 0,
722 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
723 // optional int32 devex_weights_reset_period = 33 [default = 150];
724 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.devex_weights_reset_period_), _Internal::kHasBitsOffset + 31, 0,
725 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
726 // optional bool use_preprocessing = 34 [default = true];
727 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_preprocessing_), _Internal::kHasBitsOffset + 25, 0,
728 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
729 // optional bool use_middle_product_form_update = 35 [default = true];
730 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_middle_product_form_update_), _Internal::kHasBitsOffset + 36, 0,
731 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
732 // optional bool initialize_devex_with_column_norms = 36 [default = true];
733 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.initialize_devex_with_column_norms_), _Internal::kHasBitsOffset + 37, 0,
734 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
735 // optional bool exploit_singleton_column_in_initial_basis = 37 [default = true];
736 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.exploit_singleton_column_in_initial_basis_), _Internal::kHasBitsOffset + 38, 0,
737 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
738 // optional double dual_small_pivot_threshold = 38 [default = 0.0001];
739 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dual_small_pivot_threshold_), _Internal::kHasBitsOffset + 32, 0,
740 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
741 // optional double preprocessor_zero_tolerance = 39 [default = 1e-09];
742 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.preprocessor_zero_tolerance_), _Internal::kHasBitsOffset + 33, 0,
743 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
744 // optional double objective_lower_limit = 40 [default = -inf];
745 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.objective_lower_limit_), _Internal::kHasBitsOffset + 34, 0,
746 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
747 // optional double objective_upper_limit = 41 [default = inf];
748 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.objective_upper_limit_), _Internal::kHasBitsOffset + 35, 0,
749 (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 + 41, 0,
752 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
753 // optional int32 random_seed = 43 [default = 1];
754 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.random_seed_), _Internal::kHasBitsOffset + 40, 0,
755 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
756 // optional int32 num_omp_threads = 44 [default = 1];
757 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.num_omp_threads_), _Internal::kHasBitsOffset + 43, 0,
758 (0 | ::_fl::kFcOptional | ::_fl::kInt32)},
759 // optional double max_deterministic_time = 45 [default = inf];
760 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_deterministic_time_), _Internal::kHasBitsOffset + 42, 0,
761 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
762 // optional double drop_tolerance = 52 [default = 1e-14];
763 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.drop_tolerance_), _Internal::kHasBitsOffset + 45, 0,
764 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
765 // optional bool perturb_costs_in_dual_simplex = 53 [default = false];
766 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.perturb_costs_in_dual_simplex_), _Internal::kHasBitsOffset + 2, 0,
767 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
768 // optional double relative_cost_perturbation = 54 [default = 1e-05];
769 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.relative_cost_perturbation_), _Internal::kHasBitsOffset + 46, 0,
770 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
771 // optional double relative_max_cost_perturbation = 55 [default = 1e-07];
772 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.relative_max_cost_perturbation_), _Internal::kHasBitsOffset + 47, 0,
773 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
774 // optional double max_number_of_reoptimizations = 56 [default = 40];
775 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_number_of_reoptimizations_), _Internal::kHasBitsOffset + 48, 0,
776 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
777 // optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];
778 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.scaling_method_), _Internal::kHasBitsOffset + 44, 4,
779 (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
780 // optional bool change_status_to_imprecise = 58 [default = true];
781 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.change_status_to_imprecise_), _Internal::kHasBitsOffset + 39, 0,
782 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
783 // optional double initial_condition_number_threshold = 59 [default = 1e+50];
784 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.initial_condition_number_threshold_), _Internal::kHasBitsOffset + 49, 0,
785 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
786 // optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];
787 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.cost_scaling_), _Internal::kHasBitsOffset + 50, 5,
788 (0 | ::_fl::kFcOptional | ::_fl::kEnumRange)},
789 // optional bool log_search_progress = 61 [default = false];
790 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.log_search_progress_), _Internal::kHasBitsOffset + 3, 0,
791 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
792 // optional bool use_dedicated_dual_feasibility_algorithm = 62 [default = true];
793 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_dedicated_dual_feasibility_algorithm_), _Internal::kHasBitsOffset + 51, 0,
794 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
795 // optional bool dynamically_adjust_refactorization_period = 63 [default = true];
796 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dynamically_adjust_refactorization_period_), _Internal::kHasBitsOffset + 52, 0,
797 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
798 // optional double crossover_bound_snapping_distance = 64 [default = inf];
799 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.crossover_bound_snapping_distance_), _Internal::kHasBitsOffset + 55, 0,
800 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
801 // optional bool push_to_vertex = 65 [default = true];
802 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.push_to_vertex_), _Internal::kHasBitsOffset + 53, 0,
803 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
804 // optional bool log_to_stdout = 66 [default = true];
805 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.log_to_stdout_), _Internal::kHasBitsOffset + 54, 0,
806 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
807 // optional bool use_implied_free_preprocessor = 67 [default = true];
808 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_implied_free_preprocessor_), _Internal::kHasBitsOffset + 58, 0,
809 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
810 // optional bool dual_price_prioritize_norm = 69 [default = false];
811 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.dual_price_prioritize_norm_), _Internal::kHasBitsOffset + 4, 0,
812 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
813 // optional double max_valid_magnitude = 70 [default = 1e+30];
814 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.max_valid_magnitude_), _Internal::kHasBitsOffset + 56, 0,
815 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
816 // optional double drop_magnitude = 71 [default = 1e-30];
817 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.drop_magnitude_), _Internal::kHasBitsOffset + 57, 0,
818 (0 | ::_fl::kFcOptional | ::_fl::kDouble)},
819 // optional bool use_absl_random = 72 [default = false];
820 {PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_absl_random_), _Internal::kHasBitsOffset + 5, 0,
821 (0 | ::_fl::kFcOptional | ::_fl::kBool)},
822 }},
823 {{
824 {0, 2},
825 {0, 2},
826 {0, 3},
827 {0, 2},
828 {0, 2},
829 {0, 3},
830 }},
831 {{
832 }},
833};
834PROTOBUF_NOINLINE void GlopParameters::Clear() {
835// @@protoc_insertion_point(message_clear_start:operations_research.glop.GlopParameters)
836 ::google::protobuf::internal::TSanWrite(&_impl_);
837 ::uint32_t cached_has_bits = 0;
838 // Prevent compiler warnings about cached_has_bits being unused
839 (void) cached_has_bits;
840
841 cached_has_bits = _impl_._has_bits_[0];
842 if ((cached_has_bits & 0x000000ffu) != 0) {
843 ::memset(&_impl_.use_dual_simplex_, 0, static_cast<::size_t>(
844 reinterpret_cast<char*>(&_impl_.use_absl_random_) -
845 reinterpret_cast<char*>(&_impl_.use_dual_simplex_)) + sizeof(_impl_.use_absl_random_));
846 _impl_.feasibility_rule_ = 1;
847 _impl_.optimization_rule_ = 1;
848 }
849 if ((cached_has_bits & 0x0000ff00u) != 0) {
850 _impl_.refactorization_threshold_ = 1e-09;
851 _impl_.recompute_reduced_costs_threshold_ = 1e-08;
852 _impl_.recompute_edges_norm_threshold_ = 100;
853 _impl_.primal_feasibility_tolerance_ = 1e-08;
854 _impl_.dual_feasibility_tolerance_ = 1e-08;
855 _impl_.ratio_test_zero_threshold_ = 1e-09;
856 _impl_.harris_tolerance_ratio_ = 0.5;
857 _impl_.small_pivot_threshold_ = 1e-06;
858 }
859 if ((cached_has_bits & 0x00ff0000u) != 0) {
860 _impl_.minimum_acceptable_pivot_ = 1e-06;
861 _impl_.initial_basis_ = 2;
862 _impl_.basis_refactorization_period_ = 64;
863 _impl_.dualizer_threshold_ = 1.5;
864 _impl_.solution_feasibility_tolerance_ = 1e-06;
865 _impl_.solve_dual_problem_ = 2;
866 _impl_.use_scaling_ = true;
867 _impl_.use_transposed_matrix_ = true;
868 }
869 if ((cached_has_bits & 0xff000000u) != 0) {
870 _impl_.provide_strong_optimal_guarantee_ = true;
871 _impl_.use_preprocessing_ = true;
872 _impl_.lu_factorization_pivot_threshold_ = 0.01;
873 _impl_.max_time_in_seconds_ = std::numeric_limits<double>::infinity();
874 _impl_.max_number_of_iterations_ = ::int64_t{-1};
875 _impl_.markowitz_singularity_threshold_ = 1e-15;
876 _impl_.markowitz_zlatev_parameter_ = 3;
877 _impl_.devex_weights_reset_period_ = 150;
878 }
879 cached_has_bits = _impl_._has_bits_[1];
880 if ((cached_has_bits & 0x000000ffu) != 0) {
881 _impl_.dual_small_pivot_threshold_ = 0.0001;
882 _impl_.preprocessor_zero_tolerance_ = 1e-09;
883 _impl_.objective_lower_limit_ = -std::numeric_limits<double>::infinity();
884 _impl_.objective_upper_limit_ = std::numeric_limits<double>::infinity();
885 _impl_.use_middle_product_form_update_ = true;
886 _impl_.initialize_devex_with_column_norms_ = true;
887 _impl_.exploit_singleton_column_in_initial_basis_ = true;
888 _impl_.change_status_to_imprecise_ = true;
889 }
890 if ((cached_has_bits & 0x0000ff00u) != 0) {
891 _impl_.random_seed_ = 1;
892 _impl_.degenerate_ministep_factor_ = 0.01;
893 _impl_.max_deterministic_time_ = std::numeric_limits<double>::infinity();
894 _impl_.num_omp_threads_ = 1;
895 _impl_.scaling_method_ = 1;
896 _impl_.drop_tolerance_ = 1e-14;
897 _impl_.relative_cost_perturbation_ = 1e-05;
898 _impl_.relative_max_cost_perturbation_ = 1e-07;
899 }
900 if ((cached_has_bits & 0x00ff0000u) != 0) {
901 _impl_.max_number_of_reoptimizations_ = 40;
902 _impl_.initial_condition_number_threshold_ = 1e+50;
903 _impl_.cost_scaling_ = 1;
904 _impl_.use_dedicated_dual_feasibility_algorithm_ = true;
905 _impl_.dynamically_adjust_refactorization_period_ = true;
906 _impl_.push_to_vertex_ = true;
907 _impl_.log_to_stdout_ = true;
908 _impl_.crossover_bound_snapping_distance_ = std::numeric_limits<double>::infinity();
909 }
910 if ((cached_has_bits & 0x07000000u) != 0) {
911 _impl_.max_valid_magnitude_ = 1e+30;
912 _impl_.drop_magnitude_ = 1e-30;
913 _impl_.use_implied_free_preprocessor_ = true;
914 }
915 _impl_._has_bits_.Clear();
916 _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
917}
918
919#if defined(PROTOBUF_CUSTOM_VTABLE)
920::uint8_t* PROTOBUF_NONNULL GlopParameters::_InternalSerialize(
921 const ::google::protobuf::MessageLite& base, ::uint8_t* PROTOBUF_NONNULL target,
922 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) {
923 const GlopParameters& this_ = static_cast<const GlopParameters&>(base);
924#else // PROTOBUF_CUSTOM_VTABLE
925::uint8_t* PROTOBUF_NONNULL GlopParameters::_InternalSerialize(
926 ::uint8_t* PROTOBUF_NONNULL target,
927 ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
928 const GlopParameters& this_ = *this;
929#endif // PROTOBUF_CUSTOM_VTABLE
930 // @@protoc_insertion_point(serialize_to_array_start:operations_research.glop.GlopParameters)
931 ::uint32_t cached_has_bits = 0;
932 (void)cached_has_bits;
933
934 cached_has_bits = this_._impl_._has_bits_[0];
935 // optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];
936 if ((cached_has_bits & 0x00000040u) != 0) {
937 target = stream->EnsureSpace(target);
938 target = ::_pbi::WireFormatLite::WriteEnumToArray(
939 1, this_._internal_feasibility_rule(), target);
940 }
941
942 // optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];
943 if ((cached_has_bits & 0x00000080u) != 0) {
944 target = stream->EnsureSpace(target);
945 target = ::_pbi::WireFormatLite::WriteEnumToArray(
946 2, this_._internal_optimization_rule(), target);
947 }
948
949 // optional double refactorization_threshold = 6 [default = 1e-09];
950 if ((cached_has_bits & 0x00000100u) != 0) {
951 target = stream->EnsureSpace(target);
952 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
953 6, this_._internal_refactorization_threshold(), target);
954 }
955
956 // optional double recompute_reduced_costs_threshold = 8 [default = 1e-08];
957 if ((cached_has_bits & 0x00000200u) != 0) {
958 target = stream->EnsureSpace(target);
959 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
960 8, this_._internal_recompute_reduced_costs_threshold(), target);
961 }
962
963 // optional double recompute_edges_norm_threshold = 9 [default = 100];
964 if ((cached_has_bits & 0x00000400u) != 0) {
965 target = stream->EnsureSpace(target);
966 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
967 9, this_._internal_recompute_edges_norm_threshold(), target);
968 }
969
970 // optional double primal_feasibility_tolerance = 10 [default = 1e-08];
971 if ((cached_has_bits & 0x00000800u) != 0) {
972 target = stream->EnsureSpace(target);
973 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
974 10, this_._internal_primal_feasibility_tolerance(), target);
975 }
976
977 // optional double dual_feasibility_tolerance = 11 [default = 1e-08];
978 if ((cached_has_bits & 0x00001000u) != 0) {
979 target = stream->EnsureSpace(target);
980 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
981 11, this_._internal_dual_feasibility_tolerance(), target);
982 }
983
984 // optional double ratio_test_zero_threshold = 12 [default = 1e-09];
985 if ((cached_has_bits & 0x00002000u) != 0) {
986 target = stream->EnsureSpace(target);
987 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
988 12, this_._internal_ratio_test_zero_threshold(), target);
989 }
990
991 // optional double harris_tolerance_ratio = 13 [default = 0.5];
992 if ((cached_has_bits & 0x00004000u) != 0) {
993 target = stream->EnsureSpace(target);
994 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
995 13, this_._internal_harris_tolerance_ratio(), target);
996 }
997
998 // optional double small_pivot_threshold = 14 [default = 1e-06];
999 if ((cached_has_bits & 0x00008000u) != 0) {
1000 target = stream->EnsureSpace(target);
1001 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1002 14, this_._internal_small_pivot_threshold(), target);
1003 }
1004
1005 // optional double minimum_acceptable_pivot = 15 [default = 1e-06];
1006 if ((cached_has_bits & 0x00010000u) != 0) {
1007 target = stream->EnsureSpace(target);
1008 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1009 15, this_._internal_minimum_acceptable_pivot(), target);
1010 }
1011
1012 // optional bool use_scaling = 16 [default = true];
1013 if ((cached_has_bits & 0x00400000u) != 0) {
1014 target = stream->EnsureSpace(target);
1015 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1016 16, this_._internal_use_scaling(), target);
1017 }
1018
1019 // optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];
1020 if ((cached_has_bits & 0x00020000u) != 0) {
1021 target = stream->EnsureSpace(target);
1022 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1023 17, this_._internal_initial_basis(), target);
1024 }
1025
1026 // optional bool use_transposed_matrix = 18 [default = true];
1027 if ((cached_has_bits & 0x00800000u) != 0) {
1028 target = stream->EnsureSpace(target);
1029 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1030 18, this_._internal_use_transposed_matrix(), target);
1031 }
1032
1033 // optional int32 basis_refactorization_period = 19 [default = 64];
1034 if ((cached_has_bits & 0x00040000u) != 0) {
1035 target = stream->EnsureSpace(target);
1036 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
1037 19, this_._internal_basis_refactorization_period(), target);
1038 }
1039
1040 // optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];
1041 if ((cached_has_bits & 0x00200000u) != 0) {
1042 target = stream->EnsureSpace(target);
1043 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1044 20, this_._internal_solve_dual_problem(), target);
1045 }
1046
1047 // optional double dualizer_threshold = 21 [default = 1.5];
1048 if ((cached_has_bits & 0x00080000u) != 0) {
1049 target = stream->EnsureSpace(target);
1050 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1051 21, this_._internal_dualizer_threshold(), target);
1052 }
1053
1054 // optional double solution_feasibility_tolerance = 22 [default = 1e-06];
1055 if ((cached_has_bits & 0x00100000u) != 0) {
1056 target = stream->EnsureSpace(target);
1057 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1058 22, this_._internal_solution_feasibility_tolerance(), target);
1059 }
1060
1061 // optional bool provide_strong_optimal_guarantee = 24 [default = true];
1062 if ((cached_has_bits & 0x01000000u) != 0) {
1063 target = stream->EnsureSpace(target);
1064 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1065 24, this_._internal_provide_strong_optimal_guarantee(), target);
1066 }
1067
1068 // optional double lu_factorization_pivot_threshold = 25 [default = 0.01];
1069 if ((cached_has_bits & 0x04000000u) != 0) {
1070 target = stream->EnsureSpace(target);
1071 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1072 25, this_._internal_lu_factorization_pivot_threshold(), target);
1073 }
1074
1075 // optional double max_time_in_seconds = 26 [default = inf];
1076 if ((cached_has_bits & 0x08000000u) != 0) {
1077 target = stream->EnsureSpace(target);
1078 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1079 26, this_._internal_max_time_in_seconds(), target);
1080 }
1081
1082 // optional int64 max_number_of_iterations = 27 [default = -1];
1083 if ((cached_has_bits & 0x10000000u) != 0) {
1084 target = stream->EnsureSpace(target);
1085 target = ::_pbi::WireFormatLite::WriteInt64ToArray(
1086 27, this_._internal_max_number_of_iterations(), target);
1087 }
1088
1089 // optional int32 markowitz_zlatev_parameter = 29 [default = 3];
1090 if ((cached_has_bits & 0x40000000u) != 0) {
1091 target = stream->EnsureSpace(target);
1092 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
1093 29, this_._internal_markowitz_zlatev_parameter(), target);
1094 }
1095
1096 // optional double markowitz_singularity_threshold = 30 [default = 1e-15];
1097 if ((cached_has_bits & 0x20000000u) != 0) {
1098 target = stream->EnsureSpace(target);
1099 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1100 30, this_._internal_markowitz_singularity_threshold(), target);
1101 }
1102
1103 // optional bool use_dual_simplex = 31 [default = false];
1104 if ((cached_has_bits & 0x00000001u) != 0) {
1105 target = stream->EnsureSpace(target);
1106 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1107 31, this_._internal_use_dual_simplex(), target);
1108 }
1109
1110 // optional bool allow_simplex_algorithm_change = 32 [default = false];
1111 if ((cached_has_bits & 0x00000002u) != 0) {
1112 target = stream->EnsureSpace(target);
1113 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1114 32, this_._internal_allow_simplex_algorithm_change(), target);
1115 }
1116
1117 // optional int32 devex_weights_reset_period = 33 [default = 150];
1118 if ((cached_has_bits & 0x80000000u) != 0) {
1119 target = stream->EnsureSpace(target);
1120 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
1121 33, this_._internal_devex_weights_reset_period(), target);
1122 }
1123
1124 // optional bool use_preprocessing = 34 [default = true];
1125 if ((cached_has_bits & 0x02000000u) != 0) {
1126 target = stream->EnsureSpace(target);
1127 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1128 34, this_._internal_use_preprocessing(), target);
1129 }
1130
1131 cached_has_bits = this_._impl_._has_bits_[1];
1132 // optional bool use_middle_product_form_update = 35 [default = true];
1133 if ((cached_has_bits & 0x00000010u) != 0) {
1134 target = stream->EnsureSpace(target);
1135 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1136 35, this_._internal_use_middle_product_form_update(), target);
1137 }
1138
1139 // optional bool initialize_devex_with_column_norms = 36 [default = true];
1140 if ((cached_has_bits & 0x00000020u) != 0) {
1141 target = stream->EnsureSpace(target);
1142 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1143 36, this_._internal_initialize_devex_with_column_norms(), target);
1144 }
1145
1146 // optional bool exploit_singleton_column_in_initial_basis = 37 [default = true];
1147 if ((cached_has_bits & 0x00000040u) != 0) {
1148 target = stream->EnsureSpace(target);
1149 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1150 37, this_._internal_exploit_singleton_column_in_initial_basis(), target);
1151 }
1152
1153 // optional double dual_small_pivot_threshold = 38 [default = 0.0001];
1154 if ((cached_has_bits & 0x00000001u) != 0) {
1155 target = stream->EnsureSpace(target);
1156 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1157 38, this_._internal_dual_small_pivot_threshold(), target);
1158 }
1159
1160 // optional double preprocessor_zero_tolerance = 39 [default = 1e-09];
1161 if ((cached_has_bits & 0x00000002u) != 0) {
1162 target = stream->EnsureSpace(target);
1163 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1164 39, this_._internal_preprocessor_zero_tolerance(), target);
1165 }
1166
1167 // optional double objective_lower_limit = 40 [default = -inf];
1168 if ((cached_has_bits & 0x00000004u) != 0) {
1169 target = stream->EnsureSpace(target);
1170 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1171 40, this_._internal_objective_lower_limit(), target);
1172 }
1173
1174 // optional double objective_upper_limit = 41 [default = inf];
1175 if ((cached_has_bits & 0x00000008u) != 0) {
1176 target = stream->EnsureSpace(target);
1177 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1178 41, this_._internal_objective_upper_limit(), target);
1179 }
1180
1181 // optional double degenerate_ministep_factor = 42 [default = 0.01];
1182 if ((cached_has_bits & 0x00000200u) != 0) {
1183 target = stream->EnsureSpace(target);
1184 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1185 42, this_._internal_degenerate_ministep_factor(), target);
1186 }
1187
1188 // optional int32 random_seed = 43 [default = 1];
1189 if ((cached_has_bits & 0x00000100u) != 0) {
1190 target = stream->EnsureSpace(target);
1191 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
1192 43, this_._internal_random_seed(), target);
1193 }
1194
1195 // optional int32 num_omp_threads = 44 [default = 1];
1196 if ((cached_has_bits & 0x00000800u) != 0) {
1197 target = stream->EnsureSpace(target);
1198 target = ::_pbi::WireFormatLite::WriteInt32ToArray(
1199 44, this_._internal_num_omp_threads(), target);
1200 }
1201
1202 // optional double max_deterministic_time = 45 [default = inf];
1203 if ((cached_has_bits & 0x00000400u) != 0) {
1204 target = stream->EnsureSpace(target);
1205 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1206 45, this_._internal_max_deterministic_time(), target);
1207 }
1208
1209 // optional double drop_tolerance = 52 [default = 1e-14];
1210 if ((cached_has_bits & 0x00002000u) != 0) {
1211 target = stream->EnsureSpace(target);
1212 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1213 52, this_._internal_drop_tolerance(), target);
1214 }
1215
1216 cached_has_bits = this_._impl_._has_bits_[0];
1217 // optional bool perturb_costs_in_dual_simplex = 53 [default = false];
1218 if ((cached_has_bits & 0x00000004u) != 0) {
1219 target = stream->EnsureSpace(target);
1220 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1221 53, this_._internal_perturb_costs_in_dual_simplex(), target);
1222 }
1223
1224 cached_has_bits = this_._impl_._has_bits_[1];
1225 // optional double relative_cost_perturbation = 54 [default = 1e-05];
1226 if ((cached_has_bits & 0x00004000u) != 0) {
1227 target = stream->EnsureSpace(target);
1228 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1229 54, this_._internal_relative_cost_perturbation(), target);
1230 }
1231
1232 // optional double relative_max_cost_perturbation = 55 [default = 1e-07];
1233 if ((cached_has_bits & 0x00008000u) != 0) {
1234 target = stream->EnsureSpace(target);
1235 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1236 55, this_._internal_relative_max_cost_perturbation(), target);
1237 }
1238
1239 // optional double max_number_of_reoptimizations = 56 [default = 40];
1240 if ((cached_has_bits & 0x00010000u) != 0) {
1241 target = stream->EnsureSpace(target);
1242 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1243 56, this_._internal_max_number_of_reoptimizations(), target);
1244 }
1245
1246 // optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];
1247 if ((cached_has_bits & 0x00001000u) != 0) {
1248 target = stream->EnsureSpace(target);
1249 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1250 57, this_._internal_scaling_method(), target);
1251 }
1252
1253 // optional bool change_status_to_imprecise = 58 [default = true];
1254 if ((cached_has_bits & 0x00000080u) != 0) {
1255 target = stream->EnsureSpace(target);
1256 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1257 58, this_._internal_change_status_to_imprecise(), target);
1258 }
1259
1260 // optional double initial_condition_number_threshold = 59 [default = 1e+50];
1261 if ((cached_has_bits & 0x00020000u) != 0) {
1262 target = stream->EnsureSpace(target);
1263 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1264 59, this_._internal_initial_condition_number_threshold(), target);
1265 }
1266
1267 // optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];
1268 if ((cached_has_bits & 0x00040000u) != 0) {
1269 target = stream->EnsureSpace(target);
1270 target = ::_pbi::WireFormatLite::WriteEnumToArray(
1271 60, this_._internal_cost_scaling(), target);
1272 }
1273
1274 cached_has_bits = this_._impl_._has_bits_[0];
1275 // optional bool log_search_progress = 61 [default = false];
1276 if ((cached_has_bits & 0x00000008u) != 0) {
1277 target = stream->EnsureSpace(target);
1278 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1279 61, this_._internal_log_search_progress(), target);
1280 }
1281
1282 cached_has_bits = this_._impl_._has_bits_[1];
1283 // optional bool use_dedicated_dual_feasibility_algorithm = 62 [default = true];
1284 if ((cached_has_bits & 0x00080000u) != 0) {
1285 target = stream->EnsureSpace(target);
1286 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1287 62, this_._internal_use_dedicated_dual_feasibility_algorithm(), target);
1288 }
1289
1290 // optional bool dynamically_adjust_refactorization_period = 63 [default = true];
1291 if ((cached_has_bits & 0x00100000u) != 0) {
1292 target = stream->EnsureSpace(target);
1293 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1294 63, this_._internal_dynamically_adjust_refactorization_period(), target);
1295 }
1296
1297 // optional double crossover_bound_snapping_distance = 64 [default = inf];
1298 if ((cached_has_bits & 0x00800000u) != 0) {
1299 target = stream->EnsureSpace(target);
1300 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1301 64, this_._internal_crossover_bound_snapping_distance(), target);
1302 }
1303
1304 // optional bool push_to_vertex = 65 [default = true];
1305 if ((cached_has_bits & 0x00200000u) != 0) {
1306 target = stream->EnsureSpace(target);
1307 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1308 65, this_._internal_push_to_vertex(), target);
1309 }
1310
1311 // optional bool log_to_stdout = 66 [default = true];
1312 if ((cached_has_bits & 0x00400000u) != 0) {
1313 target = stream->EnsureSpace(target);
1314 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1315 66, this_._internal_log_to_stdout(), target);
1316 }
1317
1318 // optional bool use_implied_free_preprocessor = 67 [default = true];
1319 if ((cached_has_bits & 0x04000000u) != 0) {
1320 target = stream->EnsureSpace(target);
1321 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1322 67, this_._internal_use_implied_free_preprocessor(), target);
1323 }
1324
1325 cached_has_bits = this_._impl_._has_bits_[0];
1326 // optional bool dual_price_prioritize_norm = 69 [default = false];
1327 if ((cached_has_bits & 0x00000010u) != 0) {
1328 target = stream->EnsureSpace(target);
1329 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1330 69, this_._internal_dual_price_prioritize_norm(), target);
1331 }
1332
1333 cached_has_bits = this_._impl_._has_bits_[1];
1334 // optional double max_valid_magnitude = 70 [default = 1e+30];
1335 if ((cached_has_bits & 0x01000000u) != 0) {
1336 target = stream->EnsureSpace(target);
1337 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1338 70, this_._internal_max_valid_magnitude(), target);
1339 }
1340
1341 // optional double drop_magnitude = 71 [default = 1e-30];
1342 if ((cached_has_bits & 0x02000000u) != 0) {
1343 target = stream->EnsureSpace(target);
1344 target = ::_pbi::WireFormatLite::WriteDoubleToArray(
1345 71, this_._internal_drop_magnitude(), target);
1346 }
1347
1348 cached_has_bits = this_._impl_._has_bits_[0];
1349 // optional bool use_absl_random = 72 [default = false];
1350 if ((cached_has_bits & 0x00000020u) != 0) {
1351 target = stream->EnsureSpace(target);
1352 target = ::_pbi::WireFormatLite::WriteBoolToArray(
1353 72, this_._internal_use_absl_random(), target);
1354 }
1355
1356 if (ABSL_PREDICT_FALSE(this_._internal_metadata_.have_unknown_fields())) {
1357 target =
1358 ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
1359 this_._internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance), target, stream);
1360 }
1361 // @@protoc_insertion_point(serialize_to_array_end:operations_research.glop.GlopParameters)
1362 return target;
1363}
1364
1365#if defined(PROTOBUF_CUSTOM_VTABLE)
1367 const GlopParameters& this_ = static_cast<const GlopParameters&>(base);
1368#else // PROTOBUF_CUSTOM_VTABLE
1369::size_t GlopParameters::ByteSizeLong() const {
1370 const GlopParameters& this_ = *this;
1371#endif // PROTOBUF_CUSTOM_VTABLE
1372 // @@protoc_insertion_point(message_byte_size_start:operations_research.glop.GlopParameters)
1373 ::size_t total_size = 0;
1374
1375 ::uint32_t cached_has_bits = 0;
1376 // Prevent compiler warnings about cached_has_bits being unused
1377 (void)cached_has_bits;
1378
1379 ::_pbi::Prefetch5LinesFrom7Lines(&this_);
1380 cached_has_bits = this_._impl_._has_bits_[0];
1381 total_size += ::absl::popcount(0x2c180000u & cached_has_bits) * 10;
1382 total_size += ::absl::popcount(0x0001ff00u & cached_has_bits) * 9;
1383 total_size += ::absl::popcount(0x03c0003fu & cached_has_bits) * 3;
1384 if ((cached_has_bits & 0x000000c0u) != 0) {
1385 // optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];
1386 if ((cached_has_bits & 0x00000040u) != 0) {
1387 total_size += 1 +
1388 ::_pbi::WireFormatLite::EnumSize(this_._internal_feasibility_rule());
1389 }
1390 // optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];
1391 if ((cached_has_bits & 0x00000080u) != 0) {
1392 total_size += 1 +
1393 ::_pbi::WireFormatLite::EnumSize(this_._internal_optimization_rule());
1394 }
1395 }
1396 if ((cached_has_bits & 0x00260000u) != 0) {
1397 // optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];
1398 if ((cached_has_bits & 0x00020000u) != 0) {
1399 total_size += 2 +
1400 ::_pbi::WireFormatLite::EnumSize(this_._internal_initial_basis());
1401 }
1402 // optional int32 basis_refactorization_period = 19 [default = 64];
1403 if ((cached_has_bits & 0x00040000u) != 0) {
1404 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
1405 this_._internal_basis_refactorization_period());
1406 }
1407 // optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];
1408 if ((cached_has_bits & 0x00200000u) != 0) {
1409 total_size += 2 +
1410 ::_pbi::WireFormatLite::EnumSize(this_._internal_solve_dual_problem());
1411 }
1412 }
1413 if ((cached_has_bits & 0xd0000000u) != 0) {
1414 // optional int64 max_number_of_iterations = 27 [default = -1];
1415 if ((cached_has_bits & 0x10000000u) != 0) {
1416 total_size += 2 + ::_pbi::WireFormatLite::Int64Size(
1417 this_._internal_max_number_of_iterations());
1418 }
1419 // optional int32 markowitz_zlatev_parameter = 29 [default = 3];
1420 if ((cached_has_bits & 0x40000000u) != 0) {
1421 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
1422 this_._internal_markowitz_zlatev_parameter());
1423 }
1424 // optional int32 devex_weights_reset_period = 33 [default = 150];
1425 if ((cached_has_bits & 0x80000000u) != 0) {
1426 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
1427 this_._internal_devex_weights_reset_period());
1428 }
1429 }
1430 cached_has_bits = this_._impl_._has_bits_[1];
1431 total_size += ::absl::popcount(0x0383e60fu & cached_has_bits) * 10;
1432 total_size += ::absl::popcount(0x047800f0u & cached_has_bits) * 3;
1433 if ((cached_has_bits & 0x00001900u) != 0) {
1434 // optional int32 random_seed = 43 [default = 1];
1435 if ((cached_has_bits & 0x00000100u) != 0) {
1436 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
1437 this_._internal_random_seed());
1438 }
1439 // optional int32 num_omp_threads = 44 [default = 1];
1440 if ((cached_has_bits & 0x00000800u) != 0) {
1441 total_size += 2 + ::_pbi::WireFormatLite::Int32Size(
1442 this_._internal_num_omp_threads());
1443 }
1444 // optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];
1445 if ((cached_has_bits & 0x00001000u) != 0) {
1446 total_size += 2 +
1447 ::_pbi::WireFormatLite::EnumSize(this_._internal_scaling_method());
1448 }
1449 }
1450 {
1451 // optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];
1452 if ((cached_has_bits & 0x00040000u) != 0) {
1453 total_size += 2 +
1454 ::_pbi::WireFormatLite::EnumSize(this_._internal_cost_scaling());
1455 }
1456 }
1457 return this_.MaybeComputeUnknownFieldsSize(total_size,
1458 &this_._impl_._cached_size_);
1459}
1460
1461void GlopParameters::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
1462 auto* const _this = static_cast<GlopParameters*>(&to_msg);
1463 auto& from = static_cast<const GlopParameters&>(from_msg);
1464 // @@protoc_insertion_point(class_specific_merge_from_start:operations_research.glop.GlopParameters)
1465 ABSL_DCHECK_NE(&from, _this);
1466 ::uint32_t cached_has_bits = 0;
1467 (void) cached_has_bits;
1468
1469 cached_has_bits = from._impl_._has_bits_[0];
1470 if ((cached_has_bits & 0x000000ffu) != 0) {
1471 if ((cached_has_bits & 0x00000001u) != 0) {
1472 _this->_impl_.use_dual_simplex_ = from._impl_.use_dual_simplex_;
1473 }
1474 if ((cached_has_bits & 0x00000002u) != 0) {
1475 _this->_impl_.allow_simplex_algorithm_change_ = from._impl_.allow_simplex_algorithm_change_;
1476 }
1477 if ((cached_has_bits & 0x00000004u) != 0) {
1478 _this->_impl_.perturb_costs_in_dual_simplex_ = from._impl_.perturb_costs_in_dual_simplex_;
1479 }
1480 if ((cached_has_bits & 0x00000008u) != 0) {
1481 _this->_impl_.log_search_progress_ = from._impl_.log_search_progress_;
1482 }
1483 if ((cached_has_bits & 0x00000010u) != 0) {
1484 _this->_impl_.dual_price_prioritize_norm_ = from._impl_.dual_price_prioritize_norm_;
1485 }
1486 if ((cached_has_bits & 0x00000020u) != 0) {
1487 _this->_impl_.use_absl_random_ = from._impl_.use_absl_random_;
1488 }
1489 if ((cached_has_bits & 0x00000040u) != 0) {
1490 _this->_impl_.feasibility_rule_ = from._impl_.feasibility_rule_;
1491 }
1492 if ((cached_has_bits & 0x00000080u) != 0) {
1493 _this->_impl_.optimization_rule_ = from._impl_.optimization_rule_;
1494 }
1495 }
1496 if ((cached_has_bits & 0x0000ff00u) != 0) {
1497 if ((cached_has_bits & 0x00000100u) != 0) {
1498 _this->_impl_.refactorization_threshold_ = from._impl_.refactorization_threshold_;
1499 }
1500 if ((cached_has_bits & 0x00000200u) != 0) {
1501 _this->_impl_.recompute_reduced_costs_threshold_ = from._impl_.recompute_reduced_costs_threshold_;
1502 }
1503 if ((cached_has_bits & 0x00000400u) != 0) {
1504 _this->_impl_.recompute_edges_norm_threshold_ = from._impl_.recompute_edges_norm_threshold_;
1505 }
1506 if ((cached_has_bits & 0x00000800u) != 0) {
1507 _this->_impl_.primal_feasibility_tolerance_ = from._impl_.primal_feasibility_tolerance_;
1508 }
1509 if ((cached_has_bits & 0x00001000u) != 0) {
1510 _this->_impl_.dual_feasibility_tolerance_ = from._impl_.dual_feasibility_tolerance_;
1511 }
1512 if ((cached_has_bits & 0x00002000u) != 0) {
1513 _this->_impl_.ratio_test_zero_threshold_ = from._impl_.ratio_test_zero_threshold_;
1514 }
1515 if ((cached_has_bits & 0x00004000u) != 0) {
1516 _this->_impl_.harris_tolerance_ratio_ = from._impl_.harris_tolerance_ratio_;
1517 }
1518 if ((cached_has_bits & 0x00008000u) != 0) {
1519 _this->_impl_.small_pivot_threshold_ = from._impl_.small_pivot_threshold_;
1520 }
1521 }
1522 if ((cached_has_bits & 0x00ff0000u) != 0) {
1523 if ((cached_has_bits & 0x00010000u) != 0) {
1524 _this->_impl_.minimum_acceptable_pivot_ = from._impl_.minimum_acceptable_pivot_;
1525 }
1526 if ((cached_has_bits & 0x00020000u) != 0) {
1527 _this->_impl_.initial_basis_ = from._impl_.initial_basis_;
1528 }
1529 if ((cached_has_bits & 0x00040000u) != 0) {
1530 _this->_impl_.basis_refactorization_period_ = from._impl_.basis_refactorization_period_;
1531 }
1532 if ((cached_has_bits & 0x00080000u) != 0) {
1533 _this->_impl_.dualizer_threshold_ = from._impl_.dualizer_threshold_;
1534 }
1535 if ((cached_has_bits & 0x00100000u) != 0) {
1536 _this->_impl_.solution_feasibility_tolerance_ = from._impl_.solution_feasibility_tolerance_;
1537 }
1538 if ((cached_has_bits & 0x00200000u) != 0) {
1539 _this->_impl_.solve_dual_problem_ = from._impl_.solve_dual_problem_;
1540 }
1541 if ((cached_has_bits & 0x00400000u) != 0) {
1542 _this->_impl_.use_scaling_ = from._impl_.use_scaling_;
1543 }
1544 if ((cached_has_bits & 0x00800000u) != 0) {
1545 _this->_impl_.use_transposed_matrix_ = from._impl_.use_transposed_matrix_;
1546 }
1547 }
1548 if ((cached_has_bits & 0xff000000u) != 0) {
1549 if ((cached_has_bits & 0x01000000u) != 0) {
1550 _this->_impl_.provide_strong_optimal_guarantee_ = from._impl_.provide_strong_optimal_guarantee_;
1551 }
1552 if ((cached_has_bits & 0x02000000u) != 0) {
1553 _this->_impl_.use_preprocessing_ = from._impl_.use_preprocessing_;
1554 }
1555 if ((cached_has_bits & 0x04000000u) != 0) {
1556 _this->_impl_.lu_factorization_pivot_threshold_ = from._impl_.lu_factorization_pivot_threshold_;
1557 }
1558 if ((cached_has_bits & 0x08000000u) != 0) {
1559 _this->_impl_.max_time_in_seconds_ = from._impl_.max_time_in_seconds_;
1560 }
1561 if ((cached_has_bits & 0x10000000u) != 0) {
1562 _this->_impl_.max_number_of_iterations_ = from._impl_.max_number_of_iterations_;
1563 }
1564 if ((cached_has_bits & 0x20000000u) != 0) {
1565 _this->_impl_.markowitz_singularity_threshold_ = from._impl_.markowitz_singularity_threshold_;
1566 }
1567 if ((cached_has_bits & 0x40000000u) != 0) {
1568 _this->_impl_.markowitz_zlatev_parameter_ = from._impl_.markowitz_zlatev_parameter_;
1569 }
1570 if ((cached_has_bits & 0x80000000u) != 0) {
1571 _this->_impl_.devex_weights_reset_period_ = from._impl_.devex_weights_reset_period_;
1572 }
1573 }
1574 cached_has_bits = from._impl_._has_bits_[1];
1575 if ((cached_has_bits & 0x000000ffu) != 0) {
1576 if ((cached_has_bits & 0x00000001u) != 0) {
1577 _this->_impl_.dual_small_pivot_threshold_ = from._impl_.dual_small_pivot_threshold_;
1578 }
1579 if ((cached_has_bits & 0x00000002u) != 0) {
1580 _this->_impl_.preprocessor_zero_tolerance_ = from._impl_.preprocessor_zero_tolerance_;
1581 }
1582 if ((cached_has_bits & 0x00000004u) != 0) {
1583 _this->_impl_.objective_lower_limit_ = from._impl_.objective_lower_limit_;
1584 }
1585 if ((cached_has_bits & 0x00000008u) != 0) {
1586 _this->_impl_.objective_upper_limit_ = from._impl_.objective_upper_limit_;
1587 }
1588 if ((cached_has_bits & 0x00000010u) != 0) {
1589 _this->_impl_.use_middle_product_form_update_ = from._impl_.use_middle_product_form_update_;
1590 }
1591 if ((cached_has_bits & 0x00000020u) != 0) {
1592 _this->_impl_.initialize_devex_with_column_norms_ = from._impl_.initialize_devex_with_column_norms_;
1593 }
1594 if ((cached_has_bits & 0x00000040u) != 0) {
1595 _this->_impl_.exploit_singleton_column_in_initial_basis_ = from._impl_.exploit_singleton_column_in_initial_basis_;
1596 }
1597 if ((cached_has_bits & 0x00000080u) != 0) {
1598 _this->_impl_.change_status_to_imprecise_ = from._impl_.change_status_to_imprecise_;
1599 }
1600 }
1601 if ((cached_has_bits & 0x0000ff00u) != 0) {
1602 if ((cached_has_bits & 0x00000100u) != 0) {
1603 _this->_impl_.random_seed_ = from._impl_.random_seed_;
1604 }
1605 if ((cached_has_bits & 0x00000200u) != 0) {
1606 _this->_impl_.degenerate_ministep_factor_ = from._impl_.degenerate_ministep_factor_;
1607 }
1608 if ((cached_has_bits & 0x00000400u) != 0) {
1609 _this->_impl_.max_deterministic_time_ = from._impl_.max_deterministic_time_;
1610 }
1611 if ((cached_has_bits & 0x00000800u) != 0) {
1612 _this->_impl_.num_omp_threads_ = from._impl_.num_omp_threads_;
1613 }
1614 if ((cached_has_bits & 0x00001000u) != 0) {
1615 _this->_impl_.scaling_method_ = from._impl_.scaling_method_;
1616 }
1617 if ((cached_has_bits & 0x00002000u) != 0) {
1618 _this->_impl_.drop_tolerance_ = from._impl_.drop_tolerance_;
1619 }
1620 if ((cached_has_bits & 0x00004000u) != 0) {
1621 _this->_impl_.relative_cost_perturbation_ = from._impl_.relative_cost_perturbation_;
1622 }
1623 if ((cached_has_bits & 0x00008000u) != 0) {
1624 _this->_impl_.relative_max_cost_perturbation_ = from._impl_.relative_max_cost_perturbation_;
1625 }
1626 }
1627 if ((cached_has_bits & 0x00ff0000u) != 0) {
1628 if ((cached_has_bits & 0x00010000u) != 0) {
1629 _this->_impl_.max_number_of_reoptimizations_ = from._impl_.max_number_of_reoptimizations_;
1630 }
1631 if ((cached_has_bits & 0x00020000u) != 0) {
1632 _this->_impl_.initial_condition_number_threshold_ = from._impl_.initial_condition_number_threshold_;
1633 }
1634 if ((cached_has_bits & 0x00040000u) != 0) {
1635 _this->_impl_.cost_scaling_ = from._impl_.cost_scaling_;
1636 }
1637 if ((cached_has_bits & 0x00080000u) != 0) {
1638 _this->_impl_.use_dedicated_dual_feasibility_algorithm_ = from._impl_.use_dedicated_dual_feasibility_algorithm_;
1639 }
1640 if ((cached_has_bits & 0x00100000u) != 0) {
1641 _this->_impl_.dynamically_adjust_refactorization_period_ = from._impl_.dynamically_adjust_refactorization_period_;
1642 }
1643 if ((cached_has_bits & 0x00200000u) != 0) {
1644 _this->_impl_.push_to_vertex_ = from._impl_.push_to_vertex_;
1645 }
1646 if ((cached_has_bits & 0x00400000u) != 0) {
1647 _this->_impl_.log_to_stdout_ = from._impl_.log_to_stdout_;
1648 }
1649 if ((cached_has_bits & 0x00800000u) != 0) {
1650 _this->_impl_.crossover_bound_snapping_distance_ = from._impl_.crossover_bound_snapping_distance_;
1651 }
1652 }
1653 if ((cached_has_bits & 0x07000000u) != 0) {
1654 if ((cached_has_bits & 0x01000000u) != 0) {
1655 _this->_impl_.max_valid_magnitude_ = from._impl_.max_valid_magnitude_;
1656 }
1657 if ((cached_has_bits & 0x02000000u) != 0) {
1658 _this->_impl_.drop_magnitude_ = from._impl_.drop_magnitude_;
1659 }
1660 if ((cached_has_bits & 0x04000000u) != 0) {
1661 _this->_impl_.use_implied_free_preprocessor_ = from._impl_.use_implied_free_preprocessor_;
1662 }
1663 }
1664 _this->_impl_._has_bits_.Or(from._impl_._has_bits_);
1665 _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
1666}
1667
1668void GlopParameters::CopyFrom(const GlopParameters& from) {
1669// @@protoc_insertion_point(class_specific_copy_from_start:operations_research.glop.GlopParameters)
1670 if (&from == this) return;
1671 Clear();
1672 MergeFrom(from);
1673}
1674
1675
1676void GlopParameters::InternalSwap(GlopParameters* PROTOBUF_RESTRICT PROTOBUF_NONNULL other) {
1677 using ::std::swap;
1678 _internal_metadata_.InternalSwap(&other->_internal_metadata_);
1679 swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
1680 swap(_impl_._has_bits_[1], other->_impl_._has_bits_[1]);
1681 ::google::protobuf::internal::memswap<
1682 PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_implied_free_preprocessor_)
1683 + sizeof(GlopParameters::_impl_.use_implied_free_preprocessor_)
1684 - PROTOBUF_FIELD_OFFSET(GlopParameters, _impl_.use_dual_simplex_)>(
1685 reinterpret_cast<char*>(&_impl_.use_dual_simplex_),
1686 reinterpret_cast<char*>(&other->_impl_.use_dual_simplex_));
1687}
1688
1689::google::protobuf::Metadata GlopParameters::GetMetadata() const {
1690 return ::google::protobuf::Message::GetMetadataImpl(GetClassData()->full());
1691}
1692// @@protoc_insertion_point(namespace_scope)
1693} // namespace glop
1694} // namespace operations_research
1695namespace google {
1696namespace protobuf {
1697} // namespace protobuf
1698} // namespace google
1699// @@protoc_insertion_point(global_scope)
1700PROTOBUF_ATTRIBUTE_INIT_PRIORITY2 static ::std::false_type
1701 _static_init2_ [[maybe_unused]] =
1703 ::std::false_type{});
1704#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[]
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)
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
void MergeFrom(const GlopParameters &from)
void CopyFrom(const GlopParameters &from)
static constexpr auto InternalGenerateClassData_()
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_[]
In SWIG mode, we don't want anything besides these top-level includes.
STL namespace.
static constexpr ::_pbi::MigrationSchema *PROTOBUF_NULLABLE schemas