Google OR-Tools v9.9
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
com.google.ortools.glop.GlopParameters.Builder Class Reference
Inheritance diagram for com.google.ortools.glop.GlopParameters.Builder:
com.google.ortools.glop.GlopParametersOrBuilder

Public Member Functions

Builder clear ()
 
com.google.protobuf.Descriptors.Descriptor getDescriptorForType ()
 
com.google.ortools.glop.GlopParameters getDefaultInstanceForType ()
 
com.google.ortools.glop.GlopParameters build ()
 
com.google.ortools.glop.GlopParameters buildPartial ()
 
Builder clone ()
 
Builder setField (com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
 
Builder clearField (com.google.protobuf.Descriptors.FieldDescriptor field)
 
Builder clearOneof (com.google.protobuf.Descriptors.OneofDescriptor oneof)
 
Builder setRepeatedField (com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)
 
Builder addRepeatedField (com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
 
Builder mergeFrom (com.google.protobuf.Message other)
 
Builder mergeFrom (com.google.ortools.glop.GlopParameters other)
 
final boolean isInitialized ()
 
Builder mergeFrom (com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException
 
boolean hasScalingMethod ()
 
com.google.ortools.glop.GlopParameters.ScalingAlgorithm getScalingMethod ()
 
Builder setScalingMethod (com.google.ortools.glop.GlopParameters.ScalingAlgorithm value)
 
Builder clearScalingMethod ()
 
boolean hasFeasibilityRule ()
 
com.google.ortools.glop.GlopParameters.PricingRule getFeasibilityRule ()
 
Builder setFeasibilityRule (com.google.ortools.glop.GlopParameters.PricingRule value)
 
Builder clearFeasibilityRule ()
 
boolean hasOptimizationRule ()
 
com.google.ortools.glop.GlopParameters.PricingRule getOptimizationRule ()
 
Builder setOptimizationRule (com.google.ortools.glop.GlopParameters.PricingRule value)
 
Builder clearOptimizationRule ()
 
boolean hasRefactorizationThreshold ()
 
double getRefactorizationThreshold ()
 
Builder setRefactorizationThreshold (double value)
 
Builder clearRefactorizationThreshold ()
 
boolean hasRecomputeReducedCostsThreshold ()
 
double getRecomputeReducedCostsThreshold ()
 
Builder setRecomputeReducedCostsThreshold (double value)
 
Builder clearRecomputeReducedCostsThreshold ()
 
boolean hasRecomputeEdgesNormThreshold ()
 
double getRecomputeEdgesNormThreshold ()
 
Builder setRecomputeEdgesNormThreshold (double value)
 
Builder clearRecomputeEdgesNormThreshold ()
 
boolean hasPrimalFeasibilityTolerance ()
 
double getPrimalFeasibilityTolerance ()
 
Builder setPrimalFeasibilityTolerance (double value)
 
Builder clearPrimalFeasibilityTolerance ()
 
boolean hasDualFeasibilityTolerance ()
 
double getDualFeasibilityTolerance ()
 
Builder setDualFeasibilityTolerance (double value)
 
Builder clearDualFeasibilityTolerance ()
 
boolean hasRatioTestZeroThreshold ()
 
double getRatioTestZeroThreshold ()
 
Builder setRatioTestZeroThreshold (double value)
 
Builder clearRatioTestZeroThreshold ()
 
boolean hasHarrisToleranceRatio ()
 
double getHarrisToleranceRatio ()
 
Builder setHarrisToleranceRatio (double value)
 
Builder clearHarrisToleranceRatio ()
 
boolean hasSmallPivotThreshold ()
 
double getSmallPivotThreshold ()
 
Builder setSmallPivotThreshold (double value)
 
Builder clearSmallPivotThreshold ()
 
boolean hasMinimumAcceptablePivot ()
 
double getMinimumAcceptablePivot ()
 
Builder setMinimumAcceptablePivot (double value)
 
Builder clearMinimumAcceptablePivot ()
 
boolean hasDropTolerance ()
 
double getDropTolerance ()
 
Builder setDropTolerance (double value)
 
Builder clearDropTolerance ()
 
boolean hasUseScaling ()
 
boolean getUseScaling ()
 
Builder setUseScaling (boolean value)
 
Builder clearUseScaling ()
 
boolean hasCostScaling ()
 
com.google.ortools.glop.GlopParameters.CostScalingAlgorithm getCostScaling ()
 
Builder setCostScaling (com.google.ortools.glop.GlopParameters.CostScalingAlgorithm value)
 
Builder clearCostScaling ()
 
boolean hasInitialBasis ()
 
com.google.ortools.glop.GlopParameters.InitialBasisHeuristic getInitialBasis ()
 
Builder setInitialBasis (com.google.ortools.glop.GlopParameters.InitialBasisHeuristic value)
 
Builder clearInitialBasis ()
 
boolean hasUseTransposedMatrix ()
 
boolean getUseTransposedMatrix ()
 
Builder setUseTransposedMatrix (boolean value)
 
Builder clearUseTransposedMatrix ()
 
boolean hasBasisRefactorizationPeriod ()
 
int getBasisRefactorizationPeriod ()
 
Builder setBasisRefactorizationPeriod (int value)
 
Builder clearBasisRefactorizationPeriod ()
 
boolean hasDynamicallyAdjustRefactorizationPeriod ()
 
boolean getDynamicallyAdjustRefactorizationPeriod ()
 
Builder setDynamicallyAdjustRefactorizationPeriod (boolean value)
 
Builder clearDynamicallyAdjustRefactorizationPeriod ()
 
boolean hasSolveDualProblem ()
 
com.google.ortools.glop.GlopParameters.SolverBehavior getSolveDualProblem ()
 
Builder setSolveDualProblem (com.google.ortools.glop.GlopParameters.SolverBehavior value)
 
Builder clearSolveDualProblem ()
 
boolean hasDualizerThreshold ()
 
double getDualizerThreshold ()
 
Builder setDualizerThreshold (double value)
 
Builder clearDualizerThreshold ()
 
boolean hasSolutionFeasibilityTolerance ()
 
double getSolutionFeasibilityTolerance ()
 
Builder setSolutionFeasibilityTolerance (double value)
 
Builder clearSolutionFeasibilityTolerance ()
 
boolean hasProvideStrongOptimalGuarantee ()
 
boolean getProvideStrongOptimalGuarantee ()
 
Builder setProvideStrongOptimalGuarantee (boolean value)
 
Builder clearProvideStrongOptimalGuarantee ()
 
boolean hasChangeStatusToImprecise ()
 
boolean getChangeStatusToImprecise ()
 
Builder setChangeStatusToImprecise (boolean value)
 
Builder clearChangeStatusToImprecise ()
 
boolean hasMaxNumberOfReoptimizations ()
 
double getMaxNumberOfReoptimizations ()
 
Builder setMaxNumberOfReoptimizations (double value)
 
Builder clearMaxNumberOfReoptimizations ()
 
boolean hasLuFactorizationPivotThreshold ()
 
double getLuFactorizationPivotThreshold ()
 
Builder setLuFactorizationPivotThreshold (double value)
 
Builder clearLuFactorizationPivotThreshold ()
 
boolean hasMaxTimeInSeconds ()
 
double getMaxTimeInSeconds ()
 
Builder setMaxTimeInSeconds (double value)
 
Builder clearMaxTimeInSeconds ()
 
boolean hasMaxDeterministicTime ()
 
double getMaxDeterministicTime ()
 
Builder setMaxDeterministicTime (double value)
 
Builder clearMaxDeterministicTime ()
 
boolean hasMaxNumberOfIterations ()
 
long getMaxNumberOfIterations ()
 
Builder setMaxNumberOfIterations (long value)
 
Builder clearMaxNumberOfIterations ()
 
boolean hasMarkowitzZlatevParameter ()
 
int getMarkowitzZlatevParameter ()
 
Builder setMarkowitzZlatevParameter (int value)
 
Builder clearMarkowitzZlatevParameter ()
 
boolean hasMarkowitzSingularityThreshold ()
 
double getMarkowitzSingularityThreshold ()
 
Builder setMarkowitzSingularityThreshold (double value)
 
Builder clearMarkowitzSingularityThreshold ()
 
boolean hasUseDualSimplex ()
 
boolean getUseDualSimplex ()
 
Builder setUseDualSimplex (boolean value)
 
Builder clearUseDualSimplex ()
 
boolean hasAllowSimplexAlgorithmChange ()
 
boolean getAllowSimplexAlgorithmChange ()
 
Builder setAllowSimplexAlgorithmChange (boolean value)
 
Builder clearAllowSimplexAlgorithmChange ()
 
boolean hasDevexWeightsResetPeriod ()
 
int getDevexWeightsResetPeriod ()
 
Builder setDevexWeightsResetPeriod (int value)
 
Builder clearDevexWeightsResetPeriod ()
 
boolean hasUsePreprocessing ()
 
boolean getUsePreprocessing ()
 
Builder setUsePreprocessing (boolean value)
 
Builder clearUsePreprocessing ()
 
boolean hasUseMiddleProductFormUpdate ()
 
boolean getUseMiddleProductFormUpdate ()
 
Builder setUseMiddleProductFormUpdate (boolean value)
 
Builder clearUseMiddleProductFormUpdate ()
 
boolean hasInitializeDevexWithColumnNorms ()
 
boolean getInitializeDevexWithColumnNorms ()
 
Builder setInitializeDevexWithColumnNorms (boolean value)
 
Builder clearInitializeDevexWithColumnNorms ()
 
boolean hasExploitSingletonColumnInInitialBasis ()
 
boolean getExploitSingletonColumnInInitialBasis ()
 
Builder setExploitSingletonColumnInInitialBasis (boolean value)
 
Builder clearExploitSingletonColumnInInitialBasis ()
 
boolean hasDualSmallPivotThreshold ()
 
double getDualSmallPivotThreshold ()
 
Builder setDualSmallPivotThreshold (double value)
 
Builder clearDualSmallPivotThreshold ()
 
boolean hasPreprocessorZeroTolerance ()
 
double getPreprocessorZeroTolerance ()
 
Builder setPreprocessorZeroTolerance (double value)
 
Builder clearPreprocessorZeroTolerance ()
 
boolean hasObjectiveLowerLimit ()
 
double getObjectiveLowerLimit ()
 
Builder setObjectiveLowerLimit (double value)
 
Builder clearObjectiveLowerLimit ()
 
boolean hasObjectiveUpperLimit ()
 
double getObjectiveUpperLimit ()
 
Builder setObjectiveUpperLimit (double value)
 
Builder clearObjectiveUpperLimit ()
 
boolean hasDegenerateMinistepFactor ()
 
double getDegenerateMinistepFactor ()
 
Builder setDegenerateMinistepFactor (double value)
 
Builder clearDegenerateMinistepFactor ()
 
boolean hasRandomSeed ()
 
int getRandomSeed ()
 
Builder setRandomSeed (int value)
 
Builder clearRandomSeed ()
 
boolean hasNumOmpThreads ()
 
int getNumOmpThreads ()
 
Builder setNumOmpThreads (int value)
 
Builder clearNumOmpThreads ()
 
boolean hasPerturbCostsInDualSimplex ()
 
boolean getPerturbCostsInDualSimplex ()
 
Builder setPerturbCostsInDualSimplex (boolean value)
 
Builder clearPerturbCostsInDualSimplex ()
 
boolean hasUseDedicatedDualFeasibilityAlgorithm ()
 
boolean getUseDedicatedDualFeasibilityAlgorithm ()
 
Builder setUseDedicatedDualFeasibilityAlgorithm (boolean value)
 
Builder clearUseDedicatedDualFeasibilityAlgorithm ()
 
boolean hasRelativeCostPerturbation ()
 
double getRelativeCostPerturbation ()
 
Builder setRelativeCostPerturbation (double value)
 
Builder clearRelativeCostPerturbation ()
 
boolean hasRelativeMaxCostPerturbation ()
 
double getRelativeMaxCostPerturbation ()
 
Builder setRelativeMaxCostPerturbation (double value)
 
Builder clearRelativeMaxCostPerturbation ()
 
boolean hasInitialConditionNumberThreshold ()
 
double getInitialConditionNumberThreshold ()
 
Builder setInitialConditionNumberThreshold (double value)
 
Builder clearInitialConditionNumberThreshold ()
 
boolean hasLogSearchProgress ()
 
boolean getLogSearchProgress ()
 
Builder setLogSearchProgress (boolean value)
 
Builder clearLogSearchProgress ()
 
boolean hasLogToStdout ()
 
boolean getLogToStdout ()
 
Builder setLogToStdout (boolean value)
 
Builder clearLogToStdout ()
 
boolean hasCrossoverBoundSnappingDistance ()
 
double getCrossoverBoundSnappingDistance ()
 
Builder setCrossoverBoundSnappingDistance (double value)
 
Builder clearCrossoverBoundSnappingDistance ()
 
boolean hasPushToVertex ()
 
boolean getPushToVertex ()
 
Builder setPushToVertex (boolean value)
 
Builder clearPushToVertex ()
 
boolean hasUseImpliedFreePreprocessor ()
 
boolean getUseImpliedFreePreprocessor ()
 
Builder setUseImpliedFreePreprocessor (boolean value)
 
Builder clearUseImpliedFreePreprocessor ()
 
boolean hasMaxValidMagnitude ()
 
double getMaxValidMagnitude ()
 
Builder setMaxValidMagnitude (double value)
 
Builder clearMaxValidMagnitude ()
 
boolean hasDropMagnitude ()
 
double getDropMagnitude ()
 
Builder setDropMagnitude (double value)
 
Builder clearDropMagnitude ()
 
boolean hasDualPricePrioritizeNorm ()
 
boolean getDualPricePrioritizeNorm ()
 
Builder setDualPricePrioritizeNorm (boolean value)
 
Builder clearDualPricePrioritizeNorm ()
 
final Builder setUnknownFields (final com.google.protobuf.UnknownFieldSet unknownFields)
 
final Builder mergeUnknownFields (final com.google.protobuf.UnknownFieldSet unknownFields)
 

Static Public Member Functions

static final com.google.protobuf.Descriptors.Descriptor getDescriptor ()
 

Protected Member Functions

com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable ()
 

Detailed Description

next id = 72

Protobuf type operations_research.glop.GlopParameters

Definition at line 3894 of file GlopParameters.java.

Member Function Documentation

◆ addRepeatedField()

Builder com.google.ortools.glop.GlopParameters.Builder.addRepeatedField ( com.google.protobuf.Descriptors.FieldDescriptor field,
java.lang.Object value )

Definition at line 4287 of file GlopParameters.java.

◆ build()

com.google.ortools.glop.GlopParameters com.google.ortools.glop.GlopParameters.Builder.build ( )

Definition at line 3999 of file GlopParameters.java.

◆ buildPartial()

com.google.ortools.glop.GlopParameters com.google.ortools.glop.GlopParameters.Builder.buildPartial ( )

Definition at line 4008 of file GlopParameters.java.

◆ clear()

Builder com.google.ortools.glop.GlopParameters.Builder.clear ( )

Definition at line 3922 of file GlopParameters.java.

◆ clearAllowSimplexAlgorithmChange()

Builder com.google.ortools.glop.GlopParameters.Builder.clearAllowSimplexAlgorithmChange ( )
During incremental solve, let the solver decide if it use the primal or
dual simplex algorithm depending on the current solution and on the new
problem. Note that even if this is true, the value of use_dual_simplex
still indicates the default algorithm that the solver will use.

optional bool allow_simplex_algorithm_change = 32 [default = false];

Returns
This builder for chaining.

Definition at line 7099 of file GlopParameters.java.

◆ clearBasisRefactorizationPeriod()

Builder com.google.ortools.glop.GlopParameters.Builder.clearBasisRefactorizationPeriod ( )
Number of iterations between two basis refactorizations. Note that various
conditions in the algorithm may trigger a refactorization before this
period is reached. Set this to 0 if you want to refactorize at each step.

optional int32 basis_refactorization_period = 19 [default = 64];

Returns
This builder for chaining.

Definition at line 6053 of file GlopParameters.java.

◆ clearChangeStatusToImprecise()

Builder com.google.ortools.glop.GlopParameters.Builder.clearChangeStatusToImprecise ( )
If true, the internal API will change the return status to imprecise if the
solution does not respect the internal tolerances.

optional bool change_status_to_imprecise = 58 [default = true];

Returns
This builder for chaining.

Definition at line 6523 of file GlopParameters.java.

◆ clearCostScaling()

Builder com.google.ortools.glop.GlopParameters.Builder.clearCostScaling ( )

optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];

Returns
This builder for chaining.

Definition at line 5863 of file GlopParameters.java.

◆ clearCrossoverBoundSnappingDistance()

Builder com.google.ortools.glop.GlopParameters.Builder.clearCrossoverBoundSnappingDistance ( )
If the starting basis contains FREE variable with bounds, we will move
any such variable to their closer bounds if the distance is smaller than
this parameter.

The starting statuses can contains FREE variables with bounds, if a user
set it like this externally. Also, any variable with an initial BASIC
status that was not kept in the initial basis is marked as FREE before this
step is applied.

Note that by default a FREE variable is assumed to be zero unless a
starting value was specified via SetStartingVariableValuesForNextSolve().

Note that, at the end of the solve, some of these FREE variable with bounds
and an interior point value might still be left in the final solution.
Enable push_to_vertex to clean these up.

optional double crossover_bound_snapping_distance = 64 [default = inf];

Returns
This builder for chaining.

Definition at line 8531 of file GlopParameters.java.

◆ clearDegenerateMinistepFactor()

Builder com.google.ortools.glop.GlopParameters.Builder.clearDegenerateMinistepFactor ( )
During a degenerate iteration, the more conservative approach is to do a
step of length zero (while shifting the bound of the leaving variable).
That is, the variable values are unchanged for the primal simplex or the
reduced cost are unchanged for the dual simplex. However, instead of doing
a step of length zero, it seems to be better on degenerate problems to do a
small positive step. This is what is recommended in the EXPAND procedure
described in:
P. E. Gill, W. Murray, M. A. Saunders, and M. H. Wright. "A practical anti-
cycling procedure for linearly constrained optimization".
Mathematical Programming, 45:437\u2013474, 1989.

Here, during a degenerate iteration we do a small positive step of this
factor times the primal (resp. dual) tolerance. In the primal simplex, this
may effectively push variable values (very slightly) further out of their
bounds (resp. reduced costs for the dual simplex).

Setting this to zero reverts to the more conservative approach of a zero
step during degenerate iterations.

optional double degenerate_ministep_factor = 42 [default = 0.01];

Returns
This builder for chaining.

Definition at line 7803 of file GlopParameters.java.

◆ clearDevexWeightsResetPeriod()

Builder com.google.ortools.glop.GlopParameters.Builder.clearDevexWeightsResetPeriod ( )
Devex weights will be reset to 1.0 after that number of updates.

optional int32 devex_weights_reset_period = 33 [default = 150];

Returns
This builder for chaining.

Definition at line 7155 of file GlopParameters.java.

◆ clearDropMagnitude()

Builder com.google.ortools.glop.GlopParameters.Builder.clearDropMagnitude ( )
Value in the input LP lower than this will be ignored. This is similar to
drop_tolerance but more aggressive as this is used before scaling. This is
mainly here to avoid underflow and have simpler invariant in the code, like
a * b == 0 iff a or b is zero and things like this.

optional double drop_magnitude = 71 [default = 1e-30];

Returns
This builder for chaining.

Definition at line 8807 of file GlopParameters.java.

◆ clearDropTolerance()

Builder com.google.ortools.glop.GlopParameters.Builder.clearDropTolerance ( )
In order to increase the sparsity of the manipulated vectors, floating
point values with a magnitude smaller than this parameter are set to zero
(only in some places). This parameter should be positive or zero.

optional double drop_tolerance = 52 [default = 1e-14];

Returns
This builder for chaining.

Definition at line 5761 of file GlopParameters.java.

◆ clearDualFeasibilityTolerance()

Builder com.google.ortools.glop.GlopParameters.Builder.clearDualFeasibilityTolerance ( )
Variables whose reduced costs have an absolute value smaller than this
tolerance are not considered as entering candidates. That is they do not
take part in deciding whether a solution is dual-feasible or not.

Note that this value can temporarily increase during the execution of the
algorithm if the estimated precision of the reduced costs is higher than
this tolerance. Note also that we scale the costs (in the presolve step) so
that the cost magnitude range contains one.

This is also known as the optimality tolerance in other solvers.

optional double dual_feasibility_tolerance = 11 [default = 1e-08];

Returns
This builder for chaining.

Definition at line 5397 of file GlopParameters.java.

◆ clearDualizerThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.clearDualizerThreshold ( )
When solve_dual_problem is LET_SOLVER_DECIDE, take the dual if the number
of constraints of the problem is more than this threshold times the number
of variables.

optional double dualizer_threshold = 21 [default = 1.5];

Returns
This builder for chaining.

Definition at line 6255 of file GlopParameters.java.

◆ clearDualPricePrioritizeNorm()

Builder com.google.ortools.glop.GlopParameters.Builder.clearDualPricePrioritizeNorm ( )
On some problem like stp3d or pds-100 this makes a huge difference in
speed and number of iterations of the dual simplex.

optional bool dual_price_prioritize_norm = 69 [default = false];

Returns
This builder for chaining.

Definition at line 8867 of file GlopParameters.java.

◆ clearDualSmallPivotThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.clearDualSmallPivotThreshold ( )
Like small_pivot_threshold but for the dual simplex. This is needed because
the dual algorithm does not interpret this value in the same way.
TODO(user): Clean this up and use the same small pivot detection.

optional double dual_small_pivot_threshold = 38 [default = 0.0001];

Returns
This builder for chaining.

Definition at line 7475 of file GlopParameters.java.

◆ clearDynamicallyAdjustRefactorizationPeriod()

Builder com.google.ortools.glop.GlopParameters.Builder.clearDynamicallyAdjustRefactorizationPeriod ( )
If this is true, then basis_refactorization_period becomes a lower bound on
the number of iterations between two refactorization (provided there is no
numerical accuracy issues). Depending on the estimated time to refactorize
vs the extra time spend in each solves because of the LU update, we try to
balance the two times.

optional bool dynamically_adjust_refactorization_period = 63 [default = true];

Returns
This builder for chaining.

Definition at line 6125 of file GlopParameters.java.

◆ clearExploitSingletonColumnInInitialBasis()

Builder com.google.ortools.glop.GlopParameters.Builder.clearExploitSingletonColumnInInitialBasis ( )
Whether or not we exploit the singleton columns already present in the
problem when we create the initial basis.

optional bool exploit_singleton_column_in_initial_basis = 37 [default = true];

Returns
This builder for chaining.

Definition at line 7411 of file GlopParameters.java.

◆ clearFeasibilityRule()

Builder com.google.ortools.glop.GlopParameters.Builder.clearFeasibilityRule ( )
PricingRule to use during the feasibility phase.

optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];

Returns
This builder for chaining.

Definition at line 4947 of file GlopParameters.java.

◆ clearField()

Builder com.google.ortools.glop.GlopParameters.Builder.clearField ( com.google.protobuf.Descriptors.FieldDescriptor field)

Definition at line 4271 of file GlopParameters.java.

◆ clearHarrisToleranceRatio()

Builder com.google.ortools.glop.GlopParameters.Builder.clearHarrisToleranceRatio ( )
This impacts the ratio test and indicates by how much we allow a basic
variable value that we move to go out of bounds. The value should be in
[0.0, 1.0) and should be interpreted as a ratio of the
primal_feasibility_tolerance. Setting this to 0.0 basically disables the
Harris ratio test while setting this too close to 1.0 will make it
difficult to keep the variable values inside their bounds modulo the
primal_feasibility_tolerance.

Note that the same comment applies to the dual simplex ratio test. There,
we allow the reduced costs to be of an infeasible sign by as much as this
ratio times the dual_feasibility_tolerance.

optional double harris_tolerance_ratio = 13 [default = 0.5];

Returns
This builder for chaining.

Definition at line 5573 of file GlopParameters.java.

◆ clearInitialBasis()

Builder com.google.ortools.glop.GlopParameters.Builder.clearInitialBasis ( )
What heuristic is used to try to replace the fixed slack columns in the
initial basis of the primal simplex.

optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];

Returns
This builder for chaining.

Definition at line 5925 of file GlopParameters.java.

◆ clearInitialConditionNumberThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.clearInitialConditionNumberThreshold ( )
If our upper bound on the condition number of the initial basis (from our
heurisitic or a warm start) is above this threshold, we revert to an all
slack basis.

optional double initial_condition_number_threshold = 59 [default = 1e+50];

Returns
This builder for chaining.

Definition at line 8299 of file GlopParameters.java.

◆ clearInitializeDevexWithColumnNorms()

Builder com.google.ortools.glop.GlopParameters.Builder.clearInitializeDevexWithColumnNorms ( )
Whether we initialize devex weights to 1.0 or to the norms of the matrix
columns.

optional bool initialize_devex_with_column_norms = 36 [default = true];

Returns
This builder for chaining.

Definition at line 7351 of file GlopParameters.java.

◆ clearLogSearchProgress()

Builder com.google.ortools.glop.GlopParameters.Builder.clearLogSearchProgress ( )
If true, logs the progress of a solve to LOG(INFO). Note that the same
messages can also be turned on by displaying logs at level 1 for the
relevant files.

optional bool log_search_progress = 61 [default = false];

Returns
This builder for chaining.

Definition at line 8363 of file GlopParameters.java.

◆ clearLogToStdout()

Builder com.google.ortools.glop.GlopParameters.Builder.clearLogToStdout ( )
If true, logs will be displayed to stdout instead of using Google log info.

optional bool log_to_stdout = 66 [default = true];

Returns
This builder for chaining.

Definition at line 8419 of file GlopParameters.java.

◆ clearLuFactorizationPivotThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.clearLuFactorizationPivotThreshold ( )
Threshold for LU-factorization: for stability reasons, the magnitude of the
chosen pivot at a given step is guaranteed to be greater than this
threshold times the maximum magnitude of all the possible pivot choices in
the same column. The value must be in [0,1].

optional double lu_factorization_pivot_threshold = 25 [default = 0.01];

Returns
This builder for chaining.

Definition at line 6659 of file GlopParameters.java.

◆ clearMarkowitzSingularityThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.clearMarkowitzSingularityThreshold ( )
If a pivot magnitude is smaller than this during the Markowitz LU
factorization, then the matrix is assumed to be singular. Note that
this is an absolute threshold and is not relative to the other possible
pivots on the same column (see lu_factorization_pivot_threshold).

optional double markowitz_singularity_threshold = 30 [default = 1e-15];

Returns
This builder for chaining.

Definition at line 6975 of file GlopParameters.java.

◆ clearMarkowitzZlatevParameter()

Builder com.google.ortools.glop.GlopParameters.Builder.clearMarkowitzZlatevParameter ( )
How many columns do we look at in the Markowitz pivoting rule to find
a good pivot. See markowitz.h.

optional int32 markowitz_zlatev_parameter = 29 [default = 3];

Returns
This builder for chaining.

Definition at line 6907 of file GlopParameters.java.

◆ clearMaxDeterministicTime()

Builder com.google.ortools.glop.GlopParameters.Builder.clearMaxDeterministicTime ( )
Maximum deterministic time allowed to solve a problem. The deterministic
time is more or less correlated to the running time, and its unit should
be around the second (at least on a Xeon(R) CPU E5-1650 v2 @ 3.50GHz).

TODO(user): Improve the correlation.

optional double max_deterministic_time = 45 [default = inf];

Returns
This builder for chaining.

Definition at line 6787 of file GlopParameters.java.

◆ clearMaxNumberOfIterations()

Builder com.google.ortools.glop.GlopParameters.Builder.clearMaxNumberOfIterations ( )
Maximum number of simplex iterations to solve a problem.
A value of -1 means no limit.

optional int64 max_number_of_iterations = 27 [default = -1];

Returns
This builder for chaining.

Definition at line 6847 of file GlopParameters.java.

◆ clearMaxNumberOfReoptimizations()

Builder com.google.ortools.glop.GlopParameters.Builder.clearMaxNumberOfReoptimizations ( )
When the solution of phase II is imprecise, we re-run the phase II with the
opposite algorithm from that imprecise solution (i.e., if primal or dual
simplex was used, we use dual or primal simplex, respectively). We repeat
such re-optimization until the solution is precise, or we hit this limit.

optional double max_number_of_reoptimizations = 56 [default = 40];

Returns
This builder for chaining.

Definition at line 6591 of file GlopParameters.java.

◆ clearMaxTimeInSeconds()

Builder com.google.ortools.glop.GlopParameters.Builder.clearMaxTimeInSeconds ( )
Maximum time allowed in seconds to solve a problem.

optional double max_time_in_seconds = 26 [default = inf];

Returns
This builder for chaining.

Definition at line 6715 of file GlopParameters.java.

◆ clearMaxValidMagnitude()

Builder com.google.ortools.glop.GlopParameters.Builder.clearMaxValidMagnitude ( )
Any finite values in the input LP must be below this threshold, otherwise
the model will be reported invalid. This is needed to avoid floating point
overflow when evaluating bounds * coeff for instance. In practice, users
shouldn't use super large values in an LP. With the default threshold, even
evaluating large constraint with variables at their bound shouldn't cause
any overflow.

optional double max_valid_magnitude = 70 [default = 1e+30];

Returns
This builder for chaining.

Definition at line 8739 of file GlopParameters.java.

◆ clearMinimumAcceptablePivot()

Builder com.google.ortools.glop.GlopParameters.Builder.clearMinimumAcceptablePivot ( )
We never follow a basis change with a pivot under this threshold.

optional double minimum_acceptable_pivot = 15 [default = 1e-06];

Returns
This builder for chaining.

Definition at line 5697 of file GlopParameters.java.

◆ clearNumOmpThreads()

Builder com.google.ortools.glop.GlopParameters.Builder.clearNumOmpThreads ( )
Number of threads in the OMP parallel sections. If left to 1, the code will
not create any OMP threads and will remain single-threaded.

optional int32 num_omp_threads = 44 [default = 1];

Returns
This builder for chaining.

Definition at line 7975 of file GlopParameters.java.

◆ clearObjectiveLowerLimit()

Builder com.google.ortools.glop.GlopParameters.Builder.clearObjectiveLowerLimit ( )
The solver will stop as soon as it has proven that the objective is smaller
than objective_lower_limit or greater than objective_upper_limit. Depending
on the simplex algorithm (primal or dual) and the optimization direction,
note that only one bound will be used at the time.

Important: The solver does not add any tolerances to these values, and as
soon as the objective (as computed by the solver, so with some imprecision)
crosses one of these bounds (strictly), the search will stop. It is up to
the client to add any tolerance if needed.

optional double objective_lower_limit = 40 [default = -inf];

Returns
This builder for chaining.

Definition at line 7639 of file GlopParameters.java.

◆ clearObjectiveUpperLimit()

Builder com.google.ortools.glop.GlopParameters.Builder.clearObjectiveUpperLimit ( )

optional double objective_upper_limit = 41 [default = inf];

Returns
This builder for chaining.

Definition at line 7679 of file GlopParameters.java.

◆ clearOneof()

Builder com.google.ortools.glop.GlopParameters.Builder.clearOneof ( com.google.protobuf.Descriptors.OneofDescriptor oneof)

Definition at line 4276 of file GlopParameters.java.

◆ clearOptimizationRule()

Builder com.google.ortools.glop.GlopParameters.Builder.clearOptimizationRule ( )
PricingRule to use during the optimization phase.

optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];

Returns
This builder for chaining.

Definition at line 5005 of file GlopParameters.java.

◆ clearPerturbCostsInDualSimplex()

Builder com.google.ortools.glop.GlopParameters.Builder.clearPerturbCostsInDualSimplex ( )
When this is true, then the costs are randomly perturbed before the dual
simplex is even started. This has been shown to improve the dual simplex
performance. For a good reference, see Huangfu Q (2013) "High performance
simplex solver", Ph.D, dissertation, University of Edinburgh.

optional bool perturb_costs_in_dual_simplex = 53 [default = false];

Returns
This builder for chaining.

Definition at line 8043 of file GlopParameters.java.

◆ clearPreprocessorZeroTolerance()

Builder com.google.ortools.glop.GlopParameters.Builder.clearPreprocessorZeroTolerance ( )
A floating point tolerance used by the preprocessors. This is used for
things like detecting if two columns/rows are proportional or if an
interval is empty.

Note that the preprocessors also use solution_feasibility_tolerance() to
detect if a problem is infeasible.

optional double preprocessor_zero_tolerance = 39 [default = 1e-09];

Returns
This builder for chaining.

Definition at line 7551 of file GlopParameters.java.

◆ clearPrimalFeasibilityTolerance()

Builder com.google.ortools.glop.GlopParameters.Builder.clearPrimalFeasibilityTolerance ( )
This tolerance indicates by how much we allow the variable values to go out
of bounds and still consider the current solution primal-feasible. We also
use the same tolerance for the error A.x - b. Note that the two errors are
closely related if A is scaled in such a way that the greatest coefficient
magnitude on each column is 1.0.

This is also simply called feasibility tolerance in other solvers.

optional double primal_feasibility_tolerance = 10 [default = 1e-08];

Returns
This builder for chaining.

Definition at line 5305 of file GlopParameters.java.

◆ clearProvideStrongOptimalGuarantee()

Builder com.google.ortools.glop.GlopParameters.Builder.clearProvideStrongOptimalGuarantee ( )
If true, then when the solver returns a solution with an OPTIMAL status,
we can guarantee that:
- The primal variable are in their bounds.
- The dual variable are in their bounds.
- If we modify each component of the right-hand side a bit and each
  component of the objective function a bit, then the pair (primal values,
  dual values) is an EXACT optimal solution of the perturbed problem.
- The modifications above are smaller than the associated tolerances as
  defined in the comment for solution_feasibility_tolerance (*).

(*): This is the only place where the guarantee is not tight since we
compute the upper bounds with scalar product of the primal/dual
solution and the initial problem coefficients with only double precision.

Note that whether or not this option is true, we still check the
primal/dual infeasibility and objective gap. However if it is false, we
don't move the primal/dual values within their bounds and leave them
untouched.

optional bool provide_strong_optimal_guarantee = 24 [default = true];

Returns
This builder for chaining.

Definition at line 6463 of file GlopParameters.java.

◆ clearPushToVertex()

Builder com.google.ortools.glop.GlopParameters.Builder.clearPushToVertex ( )
If the optimization phases finishes with super-basic variables (i.e.,
variables that either 1) have bounds but are FREE in the basis, or 2) have
no bounds and are FREE in the basis at a nonzero value), then run a "push"
phase to push these variables to bounds, obtaining a vertex solution. Note
this situation can happen only if a starting value was specified via
SetStartingVariableValuesForNextSolve().

optional bool push_to_vertex = 65 [default = true];

Returns
This builder for chaining.

Definition at line 8607 of file GlopParameters.java.

◆ clearRandomSeed()

Builder com.google.ortools.glop.GlopParameters.Builder.clearRandomSeed ( )
At the beginning of each solve, the random number generator used in some
part of the solver is reinitialized to this seed. If you change the random
seed, the solver may make different choices during the solving process.
Note that this may lead to a different solution, for example a different
optimal basis.

For some problems, the running time may vary a lot depending on small
change in the solving algorithm. Running the solver with different seeds
enables to have more robust benchmarks when evaluating new features.

Also note that the solver is fully deterministic: two runs of the same
binary, on the same machine, on the exact same data and with the same
parameters will go through the exact same iterations. If they hit a time
limit, they might of course yield different results because one will have
advanced farther than the other.

optional int32 random_seed = 43 [default = 1];

Returns
This builder for chaining.

Definition at line 7915 of file GlopParameters.java.

◆ clearRatioTestZeroThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.clearRatioTestZeroThreshold ( )
During the primal simplex (resp. dual simplex), the coefficients of the
direction (resp. update row) with a magnitude lower than this threshold are
not considered during the ratio test. This tolerance is related to the
precision at which a Solve() involving the basis matrix can be performed.

TODO(user): Automatically increase it when we detect that the precision
of the Solve() is worse than this.

optional double ratio_test_zero_threshold = 12 [default = 1e-09];

Returns
This builder for chaining.

Definition at line 5477 of file GlopParameters.java.

◆ clearRecomputeEdgesNormThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.clearRecomputeEdgesNormThreshold ( )
Note that the threshold is a relative error on the actual norm (not the
squared one) and that edge norms are always greater than 1. Recomputing
norms is a really expensive operation and a large threshold is ok since
this doesn't impact directly the solution but just the entering variable
choice.

optional double recompute_edges_norm_threshold = 9 [default = 100];

Returns
This builder for chaining.

Definition at line 5225 of file GlopParameters.java.

◆ clearRecomputeReducedCostsThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.clearRecomputeReducedCostsThreshold ( )
We estimate the accuracy of the iteratively computed reduced costs. If
it falls below this threshold, we reinitialize them from scratch. Note
that such an operation is pretty fast, so we can use a low threshold.
It is important to have a good accuracy here (better than the
dual_feasibility_tolerance below) to be sure of the sign of such a cost.

optional double recompute_reduced_costs_threshold = 8 [default = 1e-08];

Returns
This builder for chaining.

Definition at line 5153 of file GlopParameters.java.

◆ clearRefactorizationThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.clearRefactorizationThreshold ( )
We estimate the factorization accuracy of B during each pivot by using
the fact that we can compute the pivot coefficient in two ways:
- From direction[leaving_row].
- From update_row[entering_column].
If the two values have a relative difference above this threshold, we
trigger a refactorization.

optional double refactorization_threshold = 6 [default = 1e-09];

Returns
This builder for chaining.

Definition at line 5081 of file GlopParameters.java.

◆ clearRelativeCostPerturbation()

Builder com.google.ortools.glop.GlopParameters.Builder.clearRelativeCostPerturbation ( )
The magnitude of the cost perturbation is given by
RandomIn(1.0, 2.0) * (
    relative_cost_perturbation * cost
  + relative_max_cost_perturbation * max_cost);

optional double relative_cost_perturbation = 54 [default = 1e-05];

Returns
This builder for chaining.

Definition at line 8195 of file GlopParameters.java.

◆ clearRelativeMaxCostPerturbation()

Builder com.google.ortools.glop.GlopParameters.Builder.clearRelativeMaxCostPerturbation ( )

optional double relative_max_cost_perturbation = 55 [default = 1e-07];

Returns
This builder for chaining.

Definition at line 8235 of file GlopParameters.java.

◆ clearScalingMethod()

Builder com.google.ortools.glop.GlopParameters.Builder.clearScalingMethod ( )

optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];

Returns
This builder for chaining.

Definition at line 4889 of file GlopParameters.java.

◆ clearSmallPivotThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.clearSmallPivotThreshold ( )
When we choose the leaving variable, we want to avoid small pivot because
they are the less precise and may cause numerical instabilities. For a
pivot under this threshold times the infinity norm of the direction, we try
various countermeasures in order to avoid using it.

optional double small_pivot_threshold = 14 [default = 1e-06];

Returns
This builder for chaining.

Definition at line 5641 of file GlopParameters.java.

◆ clearSolutionFeasibilityTolerance()

Builder com.google.ortools.glop.GlopParameters.Builder.clearSolutionFeasibilityTolerance ( )
When the problem status is OPTIMAL, we check the optimality using this
relative tolerance and change the status to IMPRECISE if an issue is
detected.

The tolerance is "relative" in the sense that our thresholds are:
- tolerance * max(1.0, abs(bound)) for crossing a given bound.
- tolerance * max(1.0, abs(cost)) for an infeasible reduced cost.
- tolerance for an infeasible dual value.

optional double solution_feasibility_tolerance = 22 [default = 1e-06];

Returns
This builder for chaining.

Definition at line 6339 of file GlopParameters.java.

◆ clearSolveDualProblem()

Builder com.google.ortools.glop.GlopParameters.Builder.clearSolveDualProblem ( )
Whether or not we solve the dual of the given problem.
With a value of auto, the algorithm decide which approach is probably the
fastest depending on the problem dimensions (see dualizer_threshold).

optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];

Returns
This builder for chaining.

Definition at line 6191 of file GlopParameters.java.

◆ clearUseDedicatedDualFeasibilityAlgorithm()

Builder com.google.ortools.glop.GlopParameters.Builder.clearUseDedicatedDualFeasibilityAlgorithm ( )
We have two possible dual phase I algorithms. Both work on an LP that
minimize the sum of dual infeasiblities. One use dedicated code (when this
param is true), the other one use exactly the same code as the dual phase
II but on an auxiliary problem where the variable bounds of the original
problem are changed.

TODO(user): For now we have both, but ideally the non-dedicated version
will win since it is a lot less code to maintain.

optional bool use_dedicated_dual_feasibility_algorithm = 62 [default = true];

Returns
This builder for chaining.

Definition at line 8127 of file GlopParameters.java.

◆ clearUseDualSimplex()

Builder com.google.ortools.glop.GlopParameters.Builder.clearUseDualSimplex ( )
Whether or not we use the dual simplex algorithm instead of the primal.

optional bool use_dual_simplex = 31 [default = false];

Returns
This builder for chaining.

Definition at line 7031 of file GlopParameters.java.

◆ clearUseImpliedFreePreprocessor()

Builder com.google.ortools.glop.GlopParameters.Builder.clearUseImpliedFreePreprocessor ( )
If presolve runs, include the pass that detects implied free variables.

optional bool use_implied_free_preprocessor = 67 [default = true];

Returns
This builder for chaining.

Definition at line 8663 of file GlopParameters.java.

◆ clearUseMiddleProductFormUpdate()

Builder com.google.ortools.glop.GlopParameters.Builder.clearUseMiddleProductFormUpdate ( )
Whether or not to use the middle product form update rather than the
standard eta LU update. The middle form product update should be a lot more
efficient (close to the Forrest-Tomlin update, a bit slower but easier to
implement). See for more details:
Qi Huangfu, J. A. Julian Hall, "Novel update techniques for the revised
simplex method", 28 january 2013, Technical Report ERGO-13-0001
http://www.maths.ed.ac.uk/hall/HuHa12/ERGO-13-001.pdf

optional bool use_middle_product_form_update = 35 [default = true];

Returns
This builder for chaining.

Definition at line 7291 of file GlopParameters.java.

◆ clearUsePreprocessing()

Builder com.google.ortools.glop.GlopParameters.Builder.clearUsePreprocessing ( )
Whether or not we use advanced preprocessing techniques.

optional bool use_preprocessing = 34 [default = true];

Returns
This builder for chaining.

Definition at line 7211 of file GlopParameters.java.

◆ clearUseScaling()

Builder com.google.ortools.glop.GlopParameters.Builder.clearUseScaling ( )
Whether or not we scale the matrix A so that the maximum coefficient on
each line and each column is 1.0.

optional bool use_scaling = 16 [default = true];

Returns
This builder for chaining.

Definition at line 5821 of file GlopParameters.java.

◆ clearUseTransposedMatrix()

Builder com.google.ortools.glop.GlopParameters.Builder.clearUseTransposedMatrix ( )
Whether or not we keep a transposed version of the matrix A to speed-up the
pricing at the cost of extra memory and the initial tranposition
computation.

optional bool use_transposed_matrix = 18 [default = true];

Returns
This builder for chaining.

Definition at line 5989 of file GlopParameters.java.

◆ clone()

Builder com.google.ortools.glop.GlopParameters.Builder.clone ( )

Definition at line 4261 of file GlopParameters.java.

◆ getAllowSimplexAlgorithmChange()

boolean com.google.ortools.glop.GlopParameters.Builder.getAllowSimplexAlgorithmChange ( )
During incremental solve, let the solver decide if it use the primal or
dual simplex algorithm depending on the current solution and on the new
problem. Note that even if this is true, the value of use_dual_simplex
still indicates the default algorithm that the solver will use.

optional bool allow_simplex_algorithm_change = 32 [default = false];

Returns
The allowSimplexAlgorithmChange.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7066 of file GlopParameters.java.

◆ getBasisRefactorizationPeriod()

int com.google.ortools.glop.GlopParameters.Builder.getBasisRefactorizationPeriod ( )
Number of iterations between two basis refactorizations. Note that various
conditions in the algorithm may trigger a refactorization before this
period is reached. Set this to 0 if you want to refactorize at each step.

optional int32 basis_refactorization_period = 19 [default = 64];

Returns
The basisRefactorizationPeriod.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6022 of file GlopParameters.java.

◆ getChangeStatusToImprecise()

boolean com.google.ortools.glop.GlopParameters.Builder.getChangeStatusToImprecise ( )
If true, the internal API will change the return status to imprecise if the
solution does not respect the internal tolerances.

optional bool change_status_to_imprecise = 58 [default = true];

Returns
The changeStatusToImprecise.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6494 of file GlopParameters.java.

◆ getCostScaling()

com.google.ortools.glop.GlopParameters.CostScalingAlgorithm com.google.ortools.glop.GlopParameters.Builder.getCostScaling ( )

optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];

Returns
The costScaling.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5841 of file GlopParameters.java.

◆ getCrossoverBoundSnappingDistance()

double com.google.ortools.glop.GlopParameters.Builder.getCrossoverBoundSnappingDistance ( )
If the starting basis contains FREE variable with bounds, we will move
any such variable to their closer bounds if the distance is smaller than
this parameter.

The starting statuses can contains FREE variables with bounds, if a user
set it like this externally. Also, any variable with an initial BASIC
status that was not kept in the initial basis is marked as FREE before this
step is applied.

Note that by default a FREE variable is assumed to be zero unless a
starting value was specified via SetStartingVariableValuesForNextSolve().

Note that, at the end of the solve, some of these FREE variable with bounds
and an interior point value might still be left in the final solution.
Enable push_to_vertex to clean these up.

optional double crossover_bound_snapping_distance = 64 [default = inf];

Returns
The crossoverBoundSnappingDistance.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8476 of file GlopParameters.java.

◆ getDefaultInstanceForType()

com.google.ortools.glop.GlopParameters com.google.ortools.glop.GlopParameters.Builder.getDefaultInstanceForType ( )

Definition at line 3994 of file GlopParameters.java.

◆ getDegenerateMinistepFactor()

double com.google.ortools.glop.GlopParameters.Builder.getDegenerateMinistepFactor ( )
During a degenerate iteration, the more conservative approach is to do a
step of length zero (while shifting the bound of the leaving variable).
That is, the variable values are unchanged for the primal simplex or the
reduced cost are unchanged for the dual simplex. However, instead of doing
a step of length zero, it seems to be better on degenerate problems to do a
small positive step. This is what is recommended in the EXPAND procedure
described in:
P. E. Gill, W. Murray, M. A. Saunders, and M. H. Wright. "A practical anti-
cycling procedure for linearly constrained optimization".
Mathematical Programming, 45:437\u2013474, 1989.

Here, during a degenerate iteration we do a small positive step of this
factor times the primal (resp. dual) tolerance. In the primal simplex, this
may effectively push variable values (very slightly) further out of their
bounds (resp. reduced costs for the dual simplex).

Setting this to zero reverts to the more conservative approach of a zero
step during degenerate iterations.

optional double degenerate_ministep_factor = 42 [default = 0.01];

Returns
The degenerateMinistepFactor.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7742 of file GlopParameters.java.

◆ getDescriptor()

static final com.google.protobuf.Descriptors.Descriptor com.google.ortools.glop.GlopParameters.Builder.getDescriptor ( )
static

Definition at line 3899 of file GlopParameters.java.

◆ getDescriptorForType()

com.google.protobuf.Descriptors.Descriptor com.google.ortools.glop.GlopParameters.Builder.getDescriptorForType ( )

Definition at line 3989 of file GlopParameters.java.

◆ getDevexWeightsResetPeriod()

int com.google.ortools.glop.GlopParameters.Builder.getDevexWeightsResetPeriod ( )
Devex weights will be reset to 1.0 after that number of updates.

optional int32 devex_weights_reset_period = 33 [default = 150];

Returns
The devexWeightsResetPeriod.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7128 of file GlopParameters.java.

◆ getDropMagnitude()

double com.google.ortools.glop.GlopParameters.Builder.getDropMagnitude ( )
Value in the input LP lower than this will be ignored. This is similar to
drop_tolerance but more aggressive as this is used before scaling. This is
mainly here to avoid underflow and have simpler invariant in the code, like
a * b == 0 iff a or b is zero and things like this.

optional double drop_magnitude = 71 [default = 1e-30];

Returns
The dropMagnitude.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8774 of file GlopParameters.java.

◆ getDropTolerance()

double com.google.ortools.glop.GlopParameters.Builder.getDropTolerance ( )
In order to increase the sparsity of the manipulated vectors, floating
point values with a magnitude smaller than this parameter are set to zero
(only in some places). This parameter should be positive or zero.

optional double drop_tolerance = 52 [default = 1e-14];

Returns
The dropTolerance.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5730 of file GlopParameters.java.

◆ getDualFeasibilityTolerance()

double com.google.ortools.glop.GlopParameters.Builder.getDualFeasibilityTolerance ( )
Variables whose reduced costs have an absolute value smaller than this
tolerance are not considered as entering candidates. That is they do not
take part in deciding whether a solution is dual-feasible or not.

Note that this value can temporarily increase during the execution of the
algorithm if the estimated precision of the reduced costs is higher than
this tolerance. Note also that we scale the costs (in the presolve step) so
that the cost magnitude range contains one.

This is also known as the optimality tolerance in other solvers.

optional double dual_feasibility_tolerance = 11 [default = 1e-08];

Returns
The dualFeasibilityTolerance.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5352 of file GlopParameters.java.

◆ getDualizerThreshold()

double com.google.ortools.glop.GlopParameters.Builder.getDualizerThreshold ( )
When solve_dual_problem is LET_SOLVER_DECIDE, take the dual if the number
of constraints of the problem is more than this threshold times the number
of variables.

optional double dualizer_threshold = 21 [default = 1.5];

Returns
The dualizerThreshold.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6224 of file GlopParameters.java.

◆ getDualPricePrioritizeNorm()

boolean com.google.ortools.glop.GlopParameters.Builder.getDualPricePrioritizeNorm ( )
On some problem like stp3d or pds-100 this makes a huge difference in
speed and number of iterations of the dual simplex.

optional bool dual_price_prioritize_norm = 69 [default = false];

Returns
The dualPricePrioritizeNorm.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8838 of file GlopParameters.java.

◆ getDualSmallPivotThreshold()

double com.google.ortools.glop.GlopParameters.Builder.getDualSmallPivotThreshold ( )
Like small_pivot_threshold but for the dual simplex. This is needed because
the dual algorithm does not interpret this value in the same way.
TODO(user): Clean this up and use the same small pivot detection.

optional double dual_small_pivot_threshold = 38 [default = 0.0001];

Returns
The dualSmallPivotThreshold.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7444 of file GlopParameters.java.

◆ getDynamicallyAdjustRefactorizationPeriod()

boolean com.google.ortools.glop.GlopParameters.Builder.getDynamicallyAdjustRefactorizationPeriod ( )
If this is true, then basis_refactorization_period becomes a lower bound on
the number of iterations between two refactorization (provided there is no
numerical accuracy issues). Depending on the estimated time to refactorize
vs the extra time spend in each solves because of the LU update, we try to
balance the two times.

optional bool dynamically_adjust_refactorization_period = 63 [default = true];

Returns
The dynamicallyAdjustRefactorizationPeriod.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6090 of file GlopParameters.java.

◆ getExploitSingletonColumnInInitialBasis()

boolean com.google.ortools.glop.GlopParameters.Builder.getExploitSingletonColumnInInitialBasis ( )
Whether or not we exploit the singleton columns already present in the
problem when we create the initial basis.

optional bool exploit_singleton_column_in_initial_basis = 37 [default = true];

Returns
The exploitSingletonColumnInInitialBasis.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7382 of file GlopParameters.java.

◆ getFeasibilityRule()

com.google.ortools.glop.GlopParameters.PricingRule com.google.ortools.glop.GlopParameters.Builder.getFeasibilityRule ( )
PricingRule to use during the feasibility phase.

optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];

Returns
The feasibilityRule.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 4917 of file GlopParameters.java.

◆ getHarrisToleranceRatio()

double com.google.ortools.glop.GlopParameters.Builder.getHarrisToleranceRatio ( )
This impacts the ratio test and indicates by how much we allow a basic
variable value that we move to go out of bounds. The value should be in
[0.0, 1.0) and should be interpreted as a ratio of the
primal_feasibility_tolerance. Setting this to 0.0 basically disables the
Harris ratio test while setting this too close to 1.0 will make it
difficult to keep the variable values inside their bounds modulo the
primal_feasibility_tolerance.

Note that the same comment applies to the dual simplex ratio test. There,
we allow the reduced costs to be of an infeasible sign by as much as this
ratio times the dual_feasibility_tolerance.

optional double harris_tolerance_ratio = 13 [default = 0.5];

Returns
The harrisToleranceRatio.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5526 of file GlopParameters.java.

◆ getInitialBasis()

com.google.ortools.glop.GlopParameters.InitialBasisHeuristic com.google.ortools.glop.GlopParameters.Builder.getInitialBasis ( )
What heuristic is used to try to replace the fixed slack columns in the
initial basis of the primal simplex.

optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];

Returns
The initialBasis.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5893 of file GlopParameters.java.

◆ getInitialConditionNumberThreshold()

double com.google.ortools.glop.GlopParameters.Builder.getInitialConditionNumberThreshold ( )
If our upper bound on the condition number of the initial basis (from our
heurisitic or a warm start) is above this threshold, we revert to an all
slack basis.

optional double initial_condition_number_threshold = 59 [default = 1e+50];

Returns
The initialConditionNumberThreshold.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8268 of file GlopParameters.java.

◆ getInitializeDevexWithColumnNorms()

boolean com.google.ortools.glop.GlopParameters.Builder.getInitializeDevexWithColumnNorms ( )
Whether we initialize devex weights to 1.0 or to the norms of the matrix
columns.

optional bool initialize_devex_with_column_norms = 36 [default = true];

Returns
The initializeDevexWithColumnNorms.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7322 of file GlopParameters.java.

◆ getLogSearchProgress()

boolean com.google.ortools.glop.GlopParameters.Builder.getLogSearchProgress ( )
If true, logs the progress of a solve to LOG(INFO). Note that the same
messages can also be turned on by displaying logs at level 1 for the
relevant files.

optional bool log_search_progress = 61 [default = false];

Returns
The logSearchProgress.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8332 of file GlopParameters.java.

◆ getLogToStdout()

boolean com.google.ortools.glop.GlopParameters.Builder.getLogToStdout ( )
If true, logs will be displayed to stdout instead of using Google log info.

optional bool log_to_stdout = 66 [default = true];

Returns
The logToStdout.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8392 of file GlopParameters.java.

◆ getLuFactorizationPivotThreshold()

double com.google.ortools.glop.GlopParameters.Builder.getLuFactorizationPivotThreshold ( )
Threshold for LU-factorization: for stability reasons, the magnitude of the
chosen pivot at a given step is guaranteed to be greater than this
threshold times the maximum magnitude of all the possible pivot choices in
the same column. The value must be in [0,1].

optional double lu_factorization_pivot_threshold = 25 [default = 0.01];

Returns
The luFactorizationPivotThreshold.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6626 of file GlopParameters.java.

◆ getMarkowitzSingularityThreshold()

double com.google.ortools.glop.GlopParameters.Builder.getMarkowitzSingularityThreshold ( )
If a pivot magnitude is smaller than this during the Markowitz LU
factorization, then the matrix is assumed to be singular. Note that
this is an absolute threshold and is not relative to the other possible
pivots on the same column (see lu_factorization_pivot_threshold).

optional double markowitz_singularity_threshold = 30 [default = 1e-15];

Returns
The markowitzSingularityThreshold.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6942 of file GlopParameters.java.

◆ getMarkowitzZlatevParameter()

int com.google.ortools.glop.GlopParameters.Builder.getMarkowitzZlatevParameter ( )
How many columns do we look at in the Markowitz pivoting rule to find
a good pivot. See markowitz.h.

optional int32 markowitz_zlatev_parameter = 29 [default = 3];

Returns
The markowitzZlatevParameter.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6878 of file GlopParameters.java.

◆ getMaxDeterministicTime()

double com.google.ortools.glop.GlopParameters.Builder.getMaxDeterministicTime ( )
Maximum deterministic time allowed to solve a problem. The deterministic
time is more or less correlated to the running time, and its unit should
be around the second (at least on a Xeon(R) CPU E5-1650 v2 @ 3.50GHz).

TODO(user): Improve the correlation.

optional double max_deterministic_time = 45 [default = inf];

Returns
The maxDeterministicTime.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6752 of file GlopParameters.java.

◆ getMaxNumberOfIterations()

long com.google.ortools.glop.GlopParameters.Builder.getMaxNumberOfIterations ( )
Maximum number of simplex iterations to solve a problem.
A value of -1 means no limit.

optional int64 max_number_of_iterations = 27 [default = -1];

Returns
The maxNumberOfIterations.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6818 of file GlopParameters.java.

◆ getMaxNumberOfReoptimizations()

double com.google.ortools.glop.GlopParameters.Builder.getMaxNumberOfReoptimizations ( )
When the solution of phase II is imprecise, we re-run the phase II with the
opposite algorithm from that imprecise solution (i.e., if primal or dual
simplex was used, we use dual or primal simplex, respectively). We repeat
such re-optimization until the solution is precise, or we hit this limit.

optional double max_number_of_reoptimizations = 56 [default = 40];

Returns
The maxNumberOfReoptimizations.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6558 of file GlopParameters.java.

◆ getMaxTimeInSeconds()

double com.google.ortools.glop.GlopParameters.Builder.getMaxTimeInSeconds ( )
Maximum time allowed in seconds to solve a problem.

optional double max_time_in_seconds = 26 [default = inf];

Returns
The maxTimeInSeconds.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6688 of file GlopParameters.java.

◆ getMaxValidMagnitude()

double com.google.ortools.glop.GlopParameters.Builder.getMaxValidMagnitude ( )
Any finite values in the input LP must be below this threshold, otherwise
the model will be reported invalid. This is needed to avoid floating point
overflow when evaluating bounds * coeff for instance. In practice, users
shouldn't use super large values in an LP. With the default threshold, even
evaluating large constraint with variables at their bound shouldn't cause
any overflow.

optional double max_valid_magnitude = 70 [default = 1e+30];

Returns
The maxValidMagnitude.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8702 of file GlopParameters.java.

◆ getMinimumAcceptablePivot()

double com.google.ortools.glop.GlopParameters.Builder.getMinimumAcceptablePivot ( )
We never follow a basis change with a pivot under this threshold.

optional double minimum_acceptable_pivot = 15 [default = 1e-06];

Returns
The minimumAcceptablePivot.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5670 of file GlopParameters.java.

◆ getNumOmpThreads()

int com.google.ortools.glop.GlopParameters.Builder.getNumOmpThreads ( )
Number of threads in the OMP parallel sections. If left to 1, the code will
not create any OMP threads and will remain single-threaded.

optional int32 num_omp_threads = 44 [default = 1];

Returns
The numOmpThreads.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7946 of file GlopParameters.java.

◆ getObjectiveLowerLimit()

double com.google.ortools.glop.GlopParameters.Builder.getObjectiveLowerLimit ( )
The solver will stop as soon as it has proven that the objective is smaller
than objective_lower_limit or greater than objective_upper_limit. Depending
on the simplex algorithm (primal or dual) and the optimization direction,
note that only one bound will be used at the time.

Important: The solver does not add any tolerances to these values, and as
soon as the objective (as computed by the solver, so with some imprecision)
crosses one of these bounds (strictly), the search will stop. It is up to
the client to add any tolerance if needed.

optional double objective_lower_limit = 40 [default = -inf];

Returns
The objectiveLowerLimit.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7596 of file GlopParameters.java.

◆ getObjectiveUpperLimit()

double com.google.ortools.glop.GlopParameters.Builder.getObjectiveUpperLimit ( )

optional double objective_upper_limit = 41 [default = inf];

Returns
The objectiveUpperLimit.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7660 of file GlopParameters.java.

◆ getOptimizationRule()

com.google.ortools.glop.GlopParameters.PricingRule com.google.ortools.glop.GlopParameters.Builder.getOptimizationRule ( )
PricingRule to use during the optimization phase.

optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];

Returns
The optimizationRule.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 4975 of file GlopParameters.java.

◆ getPerturbCostsInDualSimplex()

boolean com.google.ortools.glop.GlopParameters.Builder.getPerturbCostsInDualSimplex ( )
When this is true, then the costs are randomly perturbed before the dual
simplex is even started. This has been shown to improve the dual simplex
performance. For a good reference, see Huangfu Q (2013) "High performance
simplex solver", Ph.D, dissertation, University of Edinburgh.

optional bool perturb_costs_in_dual_simplex = 53 [default = false];

Returns
The perturbCostsInDualSimplex.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8010 of file GlopParameters.java.

◆ getPreprocessorZeroTolerance()

double com.google.ortools.glop.GlopParameters.Builder.getPreprocessorZeroTolerance ( )
A floating point tolerance used by the preprocessors. This is used for
things like detecting if two columns/rows are proportional or if an
interval is empty.

Note that the preprocessors also use solution_feasibility_tolerance() to
detect if a problem is infeasible.

optional double preprocessor_zero_tolerance = 39 [default = 1e-09];

Returns
The preprocessorZeroTolerance.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7514 of file GlopParameters.java.

◆ getPrimalFeasibilityTolerance()

double com.google.ortools.glop.GlopParameters.Builder.getPrimalFeasibilityTolerance ( )
This tolerance indicates by how much we allow the variable values to go out
of bounds and still consider the current solution primal-feasible. We also
use the same tolerance for the error A.x - b. Note that the two errors are
closely related if A is scaled in such a way that the greatest coefficient
magnitude on each column is 1.0.

This is also simply called feasibility tolerance in other solvers.

optional double primal_feasibility_tolerance = 10 [default = 1e-08];

Returns
The primalFeasibilityTolerance.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5266 of file GlopParameters.java.

◆ getProvideStrongOptimalGuarantee()

boolean com.google.ortools.glop.GlopParameters.Builder.getProvideStrongOptimalGuarantee ( )
If true, then when the solver returns a solution with an OPTIMAL status,
we can guarantee that:
- The primal variable are in their bounds.
- The dual variable are in their bounds.
- If we modify each component of the right-hand side a bit and each
  component of the objective function a bit, then the pair (primal values,
  dual values) is an EXACT optimal solution of the perturbed problem.
- The modifications above are smaller than the associated tolerances as
  defined in the comment for solution_feasibility_tolerance (*).

(*): This is the only place where the guarantee is not tight since we
compute the upper bounds with scalar product of the primal/dual
solution and the initial problem coefficients with only double precision.

Note that whether or not this option is true, we still check the
primal/dual infeasibility and objective gap. However if it is false, we
don't move the primal/dual values within their bounds and leave them
untouched.

optional bool provide_strong_optimal_guarantee = 24 [default = true];

Returns
The provideStrongOptimalGuarantee.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6402 of file GlopParameters.java.

◆ getPushToVertex()

boolean com.google.ortools.glop.GlopParameters.Builder.getPushToVertex ( )
If the optimization phases finishes with super-basic variables (i.e.,
variables that either 1) have bounds but are FREE in the basis, or 2) have
no bounds and are FREE in the basis at a nonzero value), then run a "push"
phase to push these variables to bounds, obtaining a vertex solution. Note
this situation can happen only if a starting value was specified via
SetStartingVariableValuesForNextSolve().

optional bool push_to_vertex = 65 [default = true];

Returns
The pushToVertex.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8570 of file GlopParameters.java.

◆ getRandomSeed()

int com.google.ortools.glop.GlopParameters.Builder.getRandomSeed ( )
At the beginning of each solve, the random number generator used in some
part of the solver is reinitialized to this seed. If you change the random
seed, the solver may make different choices during the solving process.
Note that this may lead to a different solution, for example a different
optimal basis.

For some problems, the running time may vary a lot depending on small
change in the solving algorithm. Running the solver with different seeds
enables to have more robust benchmarks when evaluating new features.

Also note that the solver is fully deterministic: two runs of the same
binary, on the same machine, on the exact same data and with the same
parameters will go through the exact same iterations. If they hit a time
limit, they might of course yield different results because one will have
advanced farther than the other.

optional int32 random_seed = 43 [default = 1];

Returns
The randomSeed.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7860 of file GlopParameters.java.

◆ getRatioTestZeroThreshold()

double com.google.ortools.glop.GlopParameters.Builder.getRatioTestZeroThreshold ( )
During the primal simplex (resp. dual simplex), the coefficients of the
direction (resp. update row) with a magnitude lower than this threshold are
not considered during the ratio test. This tolerance is related to the
precision at which a Solve() involving the basis matrix can be performed.

TODO(user): Automatically increase it when we detect that the precision
of the Solve() is worse than this.

optional double ratio_test_zero_threshold = 12 [default = 1e-09];

Returns
The ratioTestZeroThreshold.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5438 of file GlopParameters.java.

◆ getRecomputeEdgesNormThreshold()

double com.google.ortools.glop.GlopParameters.Builder.getRecomputeEdgesNormThreshold ( )
Note that the threshold is a relative error on the actual norm (not the
squared one) and that edge norms are always greater than 1. Recomputing
norms is a really expensive operation and a large threshold is ok since
this doesn't impact directly the solution but just the entering variable
choice.

optional double recompute_edges_norm_threshold = 9 [default = 100];

Returns
The recomputeEdgesNormThreshold.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5190 of file GlopParameters.java.

◆ getRecomputeReducedCostsThreshold()

double com.google.ortools.glop.GlopParameters.Builder.getRecomputeReducedCostsThreshold ( )
We estimate the accuracy of the iteratively computed reduced costs. If
it falls below this threshold, we reinitialize them from scratch. Note
that such an operation is pretty fast, so we can use a low threshold.
It is important to have a good accuracy here (better than the
dual_feasibility_tolerance below) to be sure of the sign of such a cost.

optional double recompute_reduced_costs_threshold = 8 [default = 1e-08];

Returns
The recomputeReducedCostsThreshold.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5118 of file GlopParameters.java.

◆ getRefactorizationThreshold()

double com.google.ortools.glop.GlopParameters.Builder.getRefactorizationThreshold ( )
We estimate the factorization accuracy of B during each pivot by using
the fact that we can compute the pivot coefficient in two ways:
- From direction[leaving_row].
- From update_row[entering_column].
If the two values have a relative difference above this threshold, we
trigger a refactorization.

optional double refactorization_threshold = 6 [default = 1e-09];

Returns
The refactorizationThreshold.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5044 of file GlopParameters.java.

◆ getRelativeCostPerturbation()

double com.google.ortools.glop.GlopParameters.Builder.getRelativeCostPerturbation ( )
The magnitude of the cost perturbation is given by
RandomIn(1.0, 2.0) * (
    relative_cost_perturbation * cost
  + relative_max_cost_perturbation * max_cost);

optional double relative_cost_perturbation = 54 [default = 1e-05];

Returns
The relativeCostPerturbation.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8162 of file GlopParameters.java.

◆ getRelativeMaxCostPerturbation()

double com.google.ortools.glop.GlopParameters.Builder.getRelativeMaxCostPerturbation ( )

optional double relative_max_cost_perturbation = 55 [default = 1e-07];

Returns
The relativeMaxCostPerturbation.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8216 of file GlopParameters.java.

◆ getScalingMethod()

com.google.ortools.glop.GlopParameters.ScalingAlgorithm com.google.ortools.glop.GlopParameters.Builder.getScalingMethod ( )

optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];

Returns
The scalingMethod.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 4867 of file GlopParameters.java.

◆ getSmallPivotThreshold()

double com.google.ortools.glop.GlopParameters.Builder.getSmallPivotThreshold ( )
When we choose the leaving variable, we want to avoid small pivot because
they are the less precise and may cause numerical instabilities. For a
pivot under this threshold times the infinity norm of the direction, we try
various countermeasures in order to avoid using it.

optional double small_pivot_threshold = 14 [default = 1e-06];

Returns
The smallPivotThreshold.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5608 of file GlopParameters.java.

◆ getSolutionFeasibilityTolerance()

double com.google.ortools.glop.GlopParameters.Builder.getSolutionFeasibilityTolerance ( )
When the problem status is OPTIMAL, we check the optimality using this
relative tolerance and change the status to IMPRECISE if an issue is
detected.

The tolerance is "relative" in the sense that our thresholds are:
- tolerance * max(1.0, abs(bound)) for crossing a given bound.
- tolerance * max(1.0, abs(cost)) for an infeasible reduced cost.
- tolerance for an infeasible dual value.

optional double solution_feasibility_tolerance = 22 [default = 1e-06];

Returns
The solutionFeasibilityTolerance.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6298 of file GlopParameters.java.

◆ getSolveDualProblem()

com.google.ortools.glop.GlopParameters.SolverBehavior com.google.ortools.glop.GlopParameters.Builder.getSolveDualProblem ( )
Whether or not we solve the dual of the given problem.
With a value of auto, the algorithm decide which approach is probably the
fastest depending on the problem dimensions (see dualizer_threshold).

optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];

Returns
The solveDualProblem.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6157 of file GlopParameters.java.

◆ getUseDedicatedDualFeasibilityAlgorithm()

boolean com.google.ortools.glop.GlopParameters.Builder.getUseDedicatedDualFeasibilityAlgorithm ( )
We have two possible dual phase I algorithms. Both work on an LP that
minimize the sum of dual infeasiblities. One use dedicated code (when this
param is true), the other one use exactly the same code as the dual phase
II but on an auxiliary problem where the variable bounds of the original
problem are changed.

TODO(user): For now we have both, but ideally the non-dedicated version
will win since it is a lot less code to maintain.

optional bool use_dedicated_dual_feasibility_algorithm = 62 [default = true];

Returns
The useDedicatedDualFeasibilityAlgorithm.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8086 of file GlopParameters.java.

◆ getUseDualSimplex()

boolean com.google.ortools.glop.GlopParameters.Builder.getUseDualSimplex ( )
Whether or not we use the dual simplex algorithm instead of the primal.

optional bool use_dual_simplex = 31 [default = false];

Returns
The useDualSimplex.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7004 of file GlopParameters.java.

◆ getUseImpliedFreePreprocessor()

boolean com.google.ortools.glop.GlopParameters.Builder.getUseImpliedFreePreprocessor ( )
If presolve runs, include the pass that detects implied free variables.

optional bool use_implied_free_preprocessor = 67 [default = true];

Returns
The useImpliedFreePreprocessor.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8636 of file GlopParameters.java.

◆ getUseMiddleProductFormUpdate()

boolean com.google.ortools.glop.GlopParameters.Builder.getUseMiddleProductFormUpdate ( )
Whether or not to use the middle product form update rather than the
standard eta LU update. The middle form product update should be a lot more
efficient (close to the Forrest-Tomlin update, a bit slower but easier to
implement). See for more details:
Qi Huangfu, J. A. Julian Hall, "Novel update techniques for the revised
simplex method", 28 january 2013, Technical Report ERGO-13-0001
http://www.maths.ed.ac.uk/hall/HuHa12/ERGO-13-001.pdf

optional bool use_middle_product_form_update = 35 [default = true];

Returns
The useMiddleProductFormUpdate.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7252 of file GlopParameters.java.

◆ getUsePreprocessing()

boolean com.google.ortools.glop.GlopParameters.Builder.getUsePreprocessing ( )
Whether or not we use advanced preprocessing techniques.

optional bool use_preprocessing = 34 [default = true];

Returns
The usePreprocessing.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7184 of file GlopParameters.java.

◆ getUseScaling()

boolean com.google.ortools.glop.GlopParameters.Builder.getUseScaling ( )
Whether or not we scale the matrix A so that the maximum coefficient on
each line and each column is 1.0.

optional bool use_scaling = 16 [default = true];

Returns
The useScaling.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5792 of file GlopParameters.java.

◆ getUseTransposedMatrix()

boolean com.google.ortools.glop.GlopParameters.Builder.getUseTransposedMatrix ( )
Whether or not we keep a transposed version of the matrix A to speed-up the
pricing at the cost of extra memory and the initial tranposition
computation.

optional bool use_transposed_matrix = 18 [default = true];

Returns
The useTransposedMatrix.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5958 of file GlopParameters.java.

◆ hasAllowSimplexAlgorithmChange()

boolean com.google.ortools.glop.GlopParameters.Builder.hasAllowSimplexAlgorithmChange ( )
During incremental solve, let the solver decide if it use the primal or
dual simplex algorithm depending on the current solution and on the new
problem. Note that even if this is true, the value of use_dual_simplex
still indicates the default algorithm that the solver will use.

optional bool allow_simplex_algorithm_change = 32 [default = false];

Returns
Whether the allowSimplexAlgorithmChange field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7051 of file GlopParameters.java.

◆ hasBasisRefactorizationPeriod()

boolean com.google.ortools.glop.GlopParameters.Builder.hasBasisRefactorizationPeriod ( )
Number of iterations between two basis refactorizations. Note that various
conditions in the algorithm may trigger a refactorization before this
period is reached. Set this to 0 if you want to refactorize at each step.

optional int32 basis_refactorization_period = 19 [default = 64];

Returns
Whether the basisRefactorizationPeriod field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6008 of file GlopParameters.java.

◆ hasChangeStatusToImprecise()

boolean com.google.ortools.glop.GlopParameters.Builder.hasChangeStatusToImprecise ( )
If true, the internal API will change the return status to imprecise if the
solution does not respect the internal tolerances.

optional bool change_status_to_imprecise = 58 [default = true];

Returns
Whether the changeStatusToImprecise field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6481 of file GlopParameters.java.

◆ hasCostScaling()

boolean com.google.ortools.glop.GlopParameters.Builder.hasCostScaling ( )

optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];

Returns
Whether the costScaling field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5833 of file GlopParameters.java.

◆ hasCrossoverBoundSnappingDistance()

boolean com.google.ortools.glop.GlopParameters.Builder.hasCrossoverBoundSnappingDistance ( )
If the starting basis contains FREE variable with bounds, we will move
any such variable to their closer bounds if the distance is smaller than
this parameter.

The starting statuses can contains FREE variables with bounds, if a user
set it like this externally. Also, any variable with an initial BASIC
status that was not kept in the initial basis is marked as FREE before this
step is applied.

Note that by default a FREE variable is assumed to be zero unless a
starting value was specified via SetStartingVariableValuesForNextSolve().

Note that, at the end of the solve, some of these FREE variable with bounds
and an interior point value might still be left in the final solution.
Enable push_to_vertex to clean these up.

optional double crossover_bound_snapping_distance = 64 [default = inf];

Returns
Whether the crossoverBoundSnappingDistance field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8450 of file GlopParameters.java.

◆ hasDegenerateMinistepFactor()

boolean com.google.ortools.glop.GlopParameters.Builder.hasDegenerateMinistepFactor ( )
During a degenerate iteration, the more conservative approach is to do a
step of length zero (while shifting the bound of the leaving variable).
That is, the variable values are unchanged for the primal simplex or the
reduced cost are unchanged for the dual simplex. However, instead of doing
a step of length zero, it seems to be better on degenerate problems to do a
small positive step. This is what is recommended in the EXPAND procedure
described in:
P. E. Gill, W. Murray, M. A. Saunders, and M. H. Wright. "A practical anti-
cycling procedure for linearly constrained optimization".
Mathematical Programming, 45:437\u2013474, 1989.

Here, during a degenerate iteration we do a small positive step of this
factor times the primal (resp. dual) tolerance. In the primal simplex, this
may effectively push variable values (very slightly) further out of their
bounds (resp. reduced costs for the dual simplex).

Setting this to zero reverts to the more conservative approach of a zero
step during degenerate iterations.

optional double degenerate_ministep_factor = 42 [default = 0.01];

Returns
Whether the degenerateMinistepFactor field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7713 of file GlopParameters.java.

◆ hasDevexWeightsResetPeriod()

boolean com.google.ortools.glop.GlopParameters.Builder.hasDevexWeightsResetPeriod ( )
Devex weights will be reset to 1.0 after that number of updates.

optional int32 devex_weights_reset_period = 33 [default = 150];

Returns
Whether the devexWeightsResetPeriod field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7116 of file GlopParameters.java.

◆ hasDropMagnitude()

boolean com.google.ortools.glop.GlopParameters.Builder.hasDropMagnitude ( )
Value in the input LP lower than this will be ignored. This is similar to
drop_tolerance but more aggressive as this is used before scaling. This is
mainly here to avoid underflow and have simpler invariant in the code, like
a * b == 0 iff a or b is zero and things like this.

optional double drop_magnitude = 71 [default = 1e-30];

Returns
Whether the dropMagnitude field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8759 of file GlopParameters.java.

◆ hasDropTolerance()

boolean com.google.ortools.glop.GlopParameters.Builder.hasDropTolerance ( )
In order to increase the sparsity of the manipulated vectors, floating
point values with a magnitude smaller than this parameter are set to zero
(only in some places). This parameter should be positive or zero.

optional double drop_tolerance = 52 [default = 1e-14];

Returns
Whether the dropTolerance field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5716 of file GlopParameters.java.

◆ hasDualFeasibilityTolerance()

boolean com.google.ortools.glop.GlopParameters.Builder.hasDualFeasibilityTolerance ( )
Variables whose reduced costs have an absolute value smaller than this
tolerance are not considered as entering candidates. That is they do not
take part in deciding whether a solution is dual-feasible or not.

Note that this value can temporarily increase during the execution of the
algorithm if the estimated precision of the reduced costs is higher than
this tolerance. Note also that we scale the costs (in the presolve step) so
that the cost magnitude range contains one.

This is also known as the optimality tolerance in other solvers.

optional double dual_feasibility_tolerance = 11 [default = 1e-08];

Returns
Whether the dualFeasibilityTolerance field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5331 of file GlopParameters.java.

◆ hasDualizerThreshold()

boolean com.google.ortools.glop.GlopParameters.Builder.hasDualizerThreshold ( )
When solve_dual_problem is LET_SOLVER_DECIDE, take the dual if the number
of constraints of the problem is more than this threshold times the number
of variables.

optional double dualizer_threshold = 21 [default = 1.5];

Returns
Whether the dualizerThreshold field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6210 of file GlopParameters.java.

◆ hasDualPricePrioritizeNorm()

boolean com.google.ortools.glop.GlopParameters.Builder.hasDualPricePrioritizeNorm ( )
On some problem like stp3d or pds-100 this makes a huge difference in
speed and number of iterations of the dual simplex.

optional bool dual_price_prioritize_norm = 69 [default = false];

Returns
Whether the dualPricePrioritizeNorm field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8825 of file GlopParameters.java.

◆ hasDualSmallPivotThreshold()

boolean com.google.ortools.glop.GlopParameters.Builder.hasDualSmallPivotThreshold ( )
Like small_pivot_threshold but for the dual simplex. This is needed because
the dual algorithm does not interpret this value in the same way.
TODO(user): Clean this up and use the same small pivot detection.

optional double dual_small_pivot_threshold = 38 [default = 0.0001];

Returns
Whether the dualSmallPivotThreshold field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7430 of file GlopParameters.java.

◆ hasDynamicallyAdjustRefactorizationPeriod()

boolean com.google.ortools.glop.GlopParameters.Builder.hasDynamicallyAdjustRefactorizationPeriod ( )
If this is true, then basis_refactorization_period becomes a lower bound on
the number of iterations between two refactorization (provided there is no
numerical accuracy issues). Depending on the estimated time to refactorize
vs the extra time spend in each solves because of the LU update, we try to
balance the two times.

optional bool dynamically_adjust_refactorization_period = 63 [default = true];

Returns
Whether the dynamicallyAdjustRefactorizationPeriod field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6074 of file GlopParameters.java.

◆ hasExploitSingletonColumnInInitialBasis()

boolean com.google.ortools.glop.GlopParameters.Builder.hasExploitSingletonColumnInInitialBasis ( )
Whether or not we exploit the singleton columns already present in the
problem when we create the initial basis.

optional bool exploit_singleton_column_in_initial_basis = 37 [default = true];

Returns
Whether the exploitSingletonColumnInInitialBasis field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7369 of file GlopParameters.java.

◆ hasFeasibilityRule()

boolean com.google.ortools.glop.GlopParameters.Builder.hasFeasibilityRule ( )
PricingRule to use during the feasibility phase.

optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];

Returns
Whether the feasibilityRule field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 4905 of file GlopParameters.java.

◆ hasHarrisToleranceRatio()

boolean com.google.ortools.glop.GlopParameters.Builder.hasHarrisToleranceRatio ( )
This impacts the ratio test and indicates by how much we allow a basic
variable value that we move to go out of bounds. The value should be in
[0.0, 1.0) and should be interpreted as a ratio of the
primal_feasibility_tolerance. Setting this to 0.0 basically disables the
Harris ratio test while setting this too close to 1.0 will make it
difficult to keep the variable values inside their bounds modulo the
primal_feasibility_tolerance.

Note that the same comment applies to the dual simplex ratio test. There,
we allow the reduced costs to be of an infeasible sign by as much as this
ratio times the dual_feasibility_tolerance.

optional double harris_tolerance_ratio = 13 [default = 0.5];

Returns
Whether the harrisToleranceRatio field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5504 of file GlopParameters.java.

◆ hasInitialBasis()

boolean com.google.ortools.glop.GlopParameters.Builder.hasInitialBasis ( )
What heuristic is used to try to replace the fixed slack columns in the
initial basis of the primal simplex.

optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];

Returns
Whether the initialBasis field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5880 of file GlopParameters.java.

◆ hasInitialConditionNumberThreshold()

boolean com.google.ortools.glop.GlopParameters.Builder.hasInitialConditionNumberThreshold ( )
If our upper bound on the condition number of the initial basis (from our
heurisitic or a warm start) is above this threshold, we revert to an all
slack basis.

optional double initial_condition_number_threshold = 59 [default = 1e+50];

Returns
Whether the initialConditionNumberThreshold field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8254 of file GlopParameters.java.

◆ hasInitializeDevexWithColumnNorms()

boolean com.google.ortools.glop.GlopParameters.Builder.hasInitializeDevexWithColumnNorms ( )
Whether we initialize devex weights to 1.0 or to the norms of the matrix
columns.

optional bool initialize_devex_with_column_norms = 36 [default = true];

Returns
Whether the initializeDevexWithColumnNorms field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7309 of file GlopParameters.java.

◆ hasLogSearchProgress()

boolean com.google.ortools.glop.GlopParameters.Builder.hasLogSearchProgress ( )
If true, logs the progress of a solve to LOG(INFO). Note that the same
messages can also be turned on by displaying logs at level 1 for the
relevant files.

optional bool log_search_progress = 61 [default = false];

Returns
Whether the logSearchProgress field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8318 of file GlopParameters.java.

◆ hasLogToStdout()

boolean com.google.ortools.glop.GlopParameters.Builder.hasLogToStdout ( )
If true, logs will be displayed to stdout instead of using Google log info.

optional bool log_to_stdout = 66 [default = true];

Returns
Whether the logToStdout field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8380 of file GlopParameters.java.

◆ hasLuFactorizationPivotThreshold()

boolean com.google.ortools.glop.GlopParameters.Builder.hasLuFactorizationPivotThreshold ( )
Threshold for LU-factorization: for stability reasons, the magnitude of the
chosen pivot at a given step is guaranteed to be greater than this
threshold times the maximum magnitude of all the possible pivot choices in
the same column. The value must be in [0,1].

optional double lu_factorization_pivot_threshold = 25 [default = 0.01];

Returns
Whether the luFactorizationPivotThreshold field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6611 of file GlopParameters.java.

◆ hasMarkowitzSingularityThreshold()

boolean com.google.ortools.glop.GlopParameters.Builder.hasMarkowitzSingularityThreshold ( )
If a pivot magnitude is smaller than this during the Markowitz LU
factorization, then the matrix is assumed to be singular. Note that
this is an absolute threshold and is not relative to the other possible
pivots on the same column (see lu_factorization_pivot_threshold).

optional double markowitz_singularity_threshold = 30 [default = 1e-15];

Returns
Whether the markowitzSingularityThreshold field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6927 of file GlopParameters.java.

◆ hasMarkowitzZlatevParameter()

boolean com.google.ortools.glop.GlopParameters.Builder.hasMarkowitzZlatevParameter ( )
How many columns do we look at in the Markowitz pivoting rule to find
a good pivot. See markowitz.h.

optional int32 markowitz_zlatev_parameter = 29 [default = 3];

Returns
Whether the markowitzZlatevParameter field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6865 of file GlopParameters.java.

◆ hasMaxDeterministicTime()

boolean com.google.ortools.glop.GlopParameters.Builder.hasMaxDeterministicTime ( )
Maximum deterministic time allowed to solve a problem. The deterministic
time is more or less correlated to the running time, and its unit should
be around the second (at least on a Xeon(R) CPU E5-1650 v2 @ 3.50GHz).

TODO(user): Improve the correlation.

optional double max_deterministic_time = 45 [default = inf];

Returns
Whether the maxDeterministicTime field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6736 of file GlopParameters.java.

◆ hasMaxNumberOfIterations()

boolean com.google.ortools.glop.GlopParameters.Builder.hasMaxNumberOfIterations ( )
Maximum number of simplex iterations to solve a problem.
A value of -1 means no limit.

optional int64 max_number_of_iterations = 27 [default = -1];

Returns
Whether the maxNumberOfIterations field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6805 of file GlopParameters.java.

◆ hasMaxNumberOfReoptimizations()

boolean com.google.ortools.glop.GlopParameters.Builder.hasMaxNumberOfReoptimizations ( )
When the solution of phase II is imprecise, we re-run the phase II with the
opposite algorithm from that imprecise solution (i.e., if primal or dual
simplex was used, we use dual or primal simplex, respectively). We repeat
such re-optimization until the solution is precise, or we hit this limit.

optional double max_number_of_reoptimizations = 56 [default = 40];

Returns
Whether the maxNumberOfReoptimizations field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6543 of file GlopParameters.java.

◆ hasMaxTimeInSeconds()

boolean com.google.ortools.glop.GlopParameters.Builder.hasMaxTimeInSeconds ( )
Maximum time allowed in seconds to solve a problem.

optional double max_time_in_seconds = 26 [default = inf];

Returns
Whether the maxTimeInSeconds field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6676 of file GlopParameters.java.

◆ hasMaxValidMagnitude()

boolean com.google.ortools.glop.GlopParameters.Builder.hasMaxValidMagnitude ( )
Any finite values in the input LP must be below this threshold, otherwise
the model will be reported invalid. This is needed to avoid floating point
overflow when evaluating bounds * coeff for instance. In practice, users
shouldn't use super large values in an LP. With the default threshold, even
evaluating large constraint with variables at their bound shouldn't cause
any overflow.

optional double max_valid_magnitude = 70 [default = 1e+30];

Returns
Whether the maxValidMagnitude field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8685 of file GlopParameters.java.

◆ hasMinimumAcceptablePivot()

boolean com.google.ortools.glop.GlopParameters.Builder.hasMinimumAcceptablePivot ( )
We never follow a basis change with a pivot under this threshold.

optional double minimum_acceptable_pivot = 15 [default = 1e-06];

Returns
Whether the minimumAcceptablePivot field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5658 of file GlopParameters.java.

◆ hasNumOmpThreads()

boolean com.google.ortools.glop.GlopParameters.Builder.hasNumOmpThreads ( )
Number of threads in the OMP parallel sections. If left to 1, the code will
not create any OMP threads and will remain single-threaded.

optional int32 num_omp_threads = 44 [default = 1];

Returns
Whether the numOmpThreads field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7933 of file GlopParameters.java.

◆ hasObjectiveLowerLimit()

boolean com.google.ortools.glop.GlopParameters.Builder.hasObjectiveLowerLimit ( )
The solver will stop as soon as it has proven that the objective is smaller
than objective_lower_limit or greater than objective_upper_limit. Depending
on the simplex algorithm (primal or dual) and the optimization direction,
note that only one bound will be used at the time.

Important: The solver does not add any tolerances to these values, and as
soon as the objective (as computed by the solver, so with some imprecision)
crosses one of these bounds (strictly), the search will stop. It is up to
the client to add any tolerance if needed.

optional double objective_lower_limit = 40 [default = -inf];

Returns
Whether the objectiveLowerLimit field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7576 of file GlopParameters.java.

◆ hasObjectiveUpperLimit()

boolean com.google.ortools.glop.GlopParameters.Builder.hasObjectiveUpperLimit ( )

optional double objective_upper_limit = 41 [default = inf];

Returns
Whether the objectiveUpperLimit field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7652 of file GlopParameters.java.

◆ hasOptimizationRule()

boolean com.google.ortools.glop.GlopParameters.Builder.hasOptimizationRule ( )
PricingRule to use during the optimization phase.

optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];

Returns
Whether the optimizationRule field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 4963 of file GlopParameters.java.

◆ hasPerturbCostsInDualSimplex()

boolean com.google.ortools.glop.GlopParameters.Builder.hasPerturbCostsInDualSimplex ( )
When this is true, then the costs are randomly perturbed before the dual
simplex is even started. This has been shown to improve the dual simplex
performance. For a good reference, see Huangfu Q (2013) "High performance
simplex solver", Ph.D, dissertation, University of Edinburgh.

optional bool perturb_costs_in_dual_simplex = 53 [default = false];

Returns
Whether the perturbCostsInDualSimplex field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7995 of file GlopParameters.java.

◆ hasPreprocessorZeroTolerance()

boolean com.google.ortools.glop.GlopParameters.Builder.hasPreprocessorZeroTolerance ( )
A floating point tolerance used by the preprocessors. This is used for
things like detecting if two columns/rows are proportional or if an
interval is empty.

Note that the preprocessors also use solution_feasibility_tolerance() to
detect if a problem is infeasible.

optional double preprocessor_zero_tolerance = 39 [default = 1e-09];

Returns
Whether the preprocessorZeroTolerance field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7497 of file GlopParameters.java.

◆ hasPrimalFeasibilityTolerance()

boolean com.google.ortools.glop.GlopParameters.Builder.hasPrimalFeasibilityTolerance ( )
This tolerance indicates by how much we allow the variable values to go out
of bounds and still consider the current solution primal-feasible. We also
use the same tolerance for the error A.x - b. Note that the two errors are
closely related if A is scaled in such a way that the greatest coefficient
magnitude on each column is 1.0.

This is also simply called feasibility tolerance in other solvers.

optional double primal_feasibility_tolerance = 10 [default = 1e-08];

Returns
Whether the primalFeasibilityTolerance field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5248 of file GlopParameters.java.

◆ hasProvideStrongOptimalGuarantee()

boolean com.google.ortools.glop.GlopParameters.Builder.hasProvideStrongOptimalGuarantee ( )
If true, then when the solver returns a solution with an OPTIMAL status,
we can guarantee that:
- The primal variable are in their bounds.
- The dual variable are in their bounds.
- If we modify each component of the right-hand side a bit and each
  component of the objective function a bit, then the pair (primal values,
  dual values) is an EXACT optimal solution of the perturbed problem.
- The modifications above are smaller than the associated tolerances as
  defined in the comment for solution_feasibility_tolerance (*).

(*): This is the only place where the guarantee is not tight since we
compute the upper bounds with scalar product of the primal/dual
solution and the initial problem coefficients with only double precision.

Note that whether or not this option is true, we still check the
primal/dual infeasibility and objective gap. However if it is false, we
don't move the primal/dual values within their bounds and leave them
untouched.

optional bool provide_strong_optimal_guarantee = 24 [default = true];

Returns
Whether the provideStrongOptimalGuarantee field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6373 of file GlopParameters.java.

◆ hasPushToVertex()

boolean com.google.ortools.glop.GlopParameters.Builder.hasPushToVertex ( )
If the optimization phases finishes with super-basic variables (i.e.,
variables that either 1) have bounds but are FREE in the basis, or 2) have
no bounds and are FREE in the basis at a nonzero value), then run a "push"
phase to push these variables to bounds, obtaining a vertex solution. Note
this situation can happen only if a starting value was specified via
SetStartingVariableValuesForNextSolve().

optional bool push_to_vertex = 65 [default = true];

Returns
Whether the pushToVertex field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8553 of file GlopParameters.java.

◆ hasRandomSeed()

boolean com.google.ortools.glop.GlopParameters.Builder.hasRandomSeed ( )
At the beginning of each solve, the random number generator used in some
part of the solver is reinitialized to this seed. If you change the random
seed, the solver may make different choices during the solving process.
Note that this may lead to a different solution, for example a different
optimal basis.

For some problems, the running time may vary a lot depending on small
change in the solving algorithm. Running the solver with different seeds
enables to have more robust benchmarks when evaluating new features.

Also note that the solver is fully deterministic: two runs of the same
binary, on the same machine, on the exact same data and with the same
parameters will go through the exact same iterations. If they hit a time
limit, they might of course yield different results because one will have
advanced farther than the other.

optional int32 random_seed = 43 [default = 1];

Returns
Whether the randomSeed field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7834 of file GlopParameters.java.

◆ hasRatioTestZeroThreshold()

boolean com.google.ortools.glop.GlopParameters.Builder.hasRatioTestZeroThreshold ( )
During the primal simplex (resp. dual simplex), the coefficients of the
direction (resp. update row) with a magnitude lower than this threshold are
not considered during the ratio test. This tolerance is related to the
precision at which a Solve() involving the basis matrix can be performed.

TODO(user): Automatically increase it when we detect that the precision
of the Solve() is worse than this.

optional double ratio_test_zero_threshold = 12 [default = 1e-09];

Returns
Whether the ratioTestZeroThreshold field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5420 of file GlopParameters.java.

◆ hasRecomputeEdgesNormThreshold()

boolean com.google.ortools.glop.GlopParameters.Builder.hasRecomputeEdgesNormThreshold ( )
Note that the threshold is a relative error on the actual norm (not the
squared one) and that edge norms are always greater than 1. Recomputing
norms is a really expensive operation and a large threshold is ok since
this doesn't impact directly the solution but just the entering variable
choice.

optional double recompute_edges_norm_threshold = 9 [default = 100];

Returns
Whether the recomputeEdgesNormThreshold field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5174 of file GlopParameters.java.

◆ hasRecomputeReducedCostsThreshold()

boolean com.google.ortools.glop.GlopParameters.Builder.hasRecomputeReducedCostsThreshold ( )
We estimate the accuracy of the iteratively computed reduced costs. If
it falls below this threshold, we reinitialize them from scratch. Note
that such an operation is pretty fast, so we can use a low threshold.
It is important to have a good accuracy here (better than the
dual_feasibility_tolerance below) to be sure of the sign of such a cost.

optional double recompute_reduced_costs_threshold = 8 [default = 1e-08];

Returns
Whether the recomputeReducedCostsThreshold field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5102 of file GlopParameters.java.

◆ hasRefactorizationThreshold()

boolean com.google.ortools.glop.GlopParameters.Builder.hasRefactorizationThreshold ( )
We estimate the factorization accuracy of B during each pivot by using
the fact that we can compute the pivot coefficient in two ways:
- From direction[leaving_row].
- From update_row[entering_column].
If the two values have a relative difference above this threshold, we
trigger a refactorization.

optional double refactorization_threshold = 6 [default = 1e-09];

Returns
Whether the refactorizationThreshold field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5027 of file GlopParameters.java.

◆ hasRelativeCostPerturbation()

boolean com.google.ortools.glop.GlopParameters.Builder.hasRelativeCostPerturbation ( )
The magnitude of the cost perturbation is given by
RandomIn(1.0, 2.0) * (
    relative_cost_perturbation * cost
  + relative_max_cost_perturbation * max_cost);

optional double relative_cost_perturbation = 54 [default = 1e-05];

Returns
Whether the relativeCostPerturbation field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8147 of file GlopParameters.java.

◆ hasRelativeMaxCostPerturbation()

boolean com.google.ortools.glop.GlopParameters.Builder.hasRelativeMaxCostPerturbation ( )

optional double relative_max_cost_perturbation = 55 [default = 1e-07];

Returns
Whether the relativeMaxCostPerturbation field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8208 of file GlopParameters.java.

◆ hasScalingMethod()

boolean com.google.ortools.glop.GlopParameters.Builder.hasScalingMethod ( )

optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];

Returns
Whether the scalingMethod field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 4859 of file GlopParameters.java.

◆ hasSmallPivotThreshold()

boolean com.google.ortools.glop.GlopParameters.Builder.hasSmallPivotThreshold ( )
When we choose the leaving variable, we want to avoid small pivot because
they are the less precise and may cause numerical instabilities. For a
pivot under this threshold times the infinity norm of the direction, we try
various countermeasures in order to avoid using it.

optional double small_pivot_threshold = 14 [default = 1e-06];

Returns
Whether the smallPivotThreshold field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5593 of file GlopParameters.java.

◆ hasSolutionFeasibilityTolerance()

boolean com.google.ortools.glop.GlopParameters.Builder.hasSolutionFeasibilityTolerance ( )
When the problem status is OPTIMAL, we check the optimality using this
relative tolerance and change the status to IMPRECISE if an issue is
detected.

The tolerance is "relative" in the sense that our thresholds are:
- tolerance * max(1.0, abs(bound)) for crossing a given bound.
- tolerance * max(1.0, abs(cost)) for an infeasible reduced cost.
- tolerance for an infeasible dual value.

optional double solution_feasibility_tolerance = 22 [default = 1e-06];

Returns
Whether the solutionFeasibilityTolerance field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6279 of file GlopParameters.java.

◆ hasSolveDualProblem()

boolean com.google.ortools.glop.GlopParameters.Builder.hasSolveDualProblem ( )
Whether or not we solve the dual of the given problem.
With a value of auto, the algorithm decide which approach is probably the
fastest depending on the problem dimensions (see dualizer_threshold).

optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];

Returns
Whether the solveDualProblem field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6143 of file GlopParameters.java.

◆ hasUseDedicatedDualFeasibilityAlgorithm()

boolean com.google.ortools.glop.GlopParameters.Builder.hasUseDedicatedDualFeasibilityAlgorithm ( )
We have two possible dual phase I algorithms. Both work on an LP that
minimize the sum of dual infeasiblities. One use dedicated code (when this
param is true), the other one use exactly the same code as the dual phase
II but on an auxiliary problem where the variable bounds of the original
problem are changed.

TODO(user): For now we have both, but ideally the non-dedicated version
will win since it is a lot less code to maintain.

optional bool use_dedicated_dual_feasibility_algorithm = 62 [default = true];

Returns
Whether the useDedicatedDualFeasibilityAlgorithm field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8067 of file GlopParameters.java.

◆ hasUseDualSimplex()

boolean com.google.ortools.glop.GlopParameters.Builder.hasUseDualSimplex ( )
Whether or not we use the dual simplex algorithm instead of the primal.

optional bool use_dual_simplex = 31 [default = false];

Returns
Whether the useDualSimplex field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 6992 of file GlopParameters.java.

◆ hasUseImpliedFreePreprocessor()

boolean com.google.ortools.glop.GlopParameters.Builder.hasUseImpliedFreePreprocessor ( )
If presolve runs, include the pass that detects implied free variables.

optional bool use_implied_free_preprocessor = 67 [default = true];

Returns
Whether the useImpliedFreePreprocessor field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 8624 of file GlopParameters.java.

◆ hasUseMiddleProductFormUpdate()

boolean com.google.ortools.glop.GlopParameters.Builder.hasUseMiddleProductFormUpdate ( )
Whether or not to use the middle product form update rather than the
standard eta LU update. The middle form product update should be a lot more
efficient (close to the Forrest-Tomlin update, a bit slower but easier to
implement). See for more details:
Qi Huangfu, J. A. Julian Hall, "Novel update techniques for the revised
simplex method", 28 january 2013, Technical Report ERGO-13-0001
http://www.maths.ed.ac.uk/hall/HuHa12/ERGO-13-001.pdf

optional bool use_middle_product_form_update = 35 [default = true];

Returns
Whether the useMiddleProductFormUpdate field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7234 of file GlopParameters.java.

◆ hasUsePreprocessing()

boolean com.google.ortools.glop.GlopParameters.Builder.hasUsePreprocessing ( )
Whether or not we use advanced preprocessing techniques.

optional bool use_preprocessing = 34 [default = true];

Returns
Whether the usePreprocessing field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 7172 of file GlopParameters.java.

◆ hasUseScaling()

boolean com.google.ortools.glop.GlopParameters.Builder.hasUseScaling ( )
Whether or not we scale the matrix A so that the maximum coefficient on
each line and each column is 1.0.

optional bool use_scaling = 16 [default = true];

Returns
Whether the useScaling field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5779 of file GlopParameters.java.

◆ hasUseTransposedMatrix()

boolean com.google.ortools.glop.GlopParameters.Builder.hasUseTransposedMatrix ( )
Whether or not we keep a transposed version of the matrix A to speed-up the
pricing at the cost of extra memory and the initial tranposition
computation.

optional bool use_transposed_matrix = 18 [default = true];

Returns
Whether the useTransposedMatrix field is set.

Implements com.google.ortools.glop.GlopParametersOrBuilder.

Definition at line 5944 of file GlopParameters.java.

◆ internalGetFieldAccessorTable()

com.google.protobuf.GeneratedMessageV3.FieldAccessorTable com.google.ortools.glop.GlopParameters.Builder.internalGetFieldAccessorTable ( )
protected

Definition at line 3905 of file GlopParameters.java.

◆ isInitialized()

final boolean com.google.ortools.glop.GlopParameters.Builder.isInitialized ( )

Definition at line 4484 of file GlopParameters.java.

◆ mergeFrom() [1/3]

Builder com.google.ortools.glop.GlopParameters.Builder.mergeFrom ( com.google.ortools.glop.GlopParameters other)

Definition at line 4302 of file GlopParameters.java.

◆ mergeFrom() [2/3]

Builder com.google.ortools.glop.GlopParameters.Builder.mergeFrom ( com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry ) throws java.io.IOException

Definition at line 4489 of file GlopParameters.java.

◆ mergeFrom() [3/3]

Builder com.google.ortools.glop.GlopParameters.Builder.mergeFrom ( com.google.protobuf.Message other)

Definition at line 4293 of file GlopParameters.java.

◆ mergeUnknownFields()

final Builder com.google.ortools.glop.GlopParameters.Builder.mergeUnknownFields ( final com.google.protobuf.UnknownFieldSet unknownFields)

Definition at line 8880 of file GlopParameters.java.

◆ setAllowSimplexAlgorithmChange()

Builder com.google.ortools.glop.GlopParameters.Builder.setAllowSimplexAlgorithmChange ( boolean value)
During incremental solve, let the solver decide if it use the primal or
dual simplex algorithm depending on the current solution and on the new
problem. Note that even if this is true, the value of use_dual_simplex
still indicates the default algorithm that the solver will use.

optional bool allow_simplex_algorithm_change = 32 [default = false];

Parameters
valueThe allowSimplexAlgorithmChange to set.
Returns
This builder for chaining.

Definition at line 7081 of file GlopParameters.java.

◆ setBasisRefactorizationPeriod()

Builder com.google.ortools.glop.GlopParameters.Builder.setBasisRefactorizationPeriod ( int value)
Number of iterations between two basis refactorizations. Note that various
conditions in the algorithm may trigger a refactorization before this
period is reached. Set this to 0 if you want to refactorize at each step.

optional int32 basis_refactorization_period = 19 [default = 64];

Parameters
valueThe basisRefactorizationPeriod to set.
Returns
This builder for chaining.

Definition at line 6036 of file GlopParameters.java.

◆ setChangeStatusToImprecise()

Builder com.google.ortools.glop.GlopParameters.Builder.setChangeStatusToImprecise ( boolean value)
If true, the internal API will change the return status to imprecise if the
solution does not respect the internal tolerances.

optional bool change_status_to_imprecise = 58 [default = true];

Parameters
valueThe changeStatusToImprecise to set.
Returns
This builder for chaining.

Definition at line 6507 of file GlopParameters.java.

◆ setCostScaling()

Builder com.google.ortools.glop.GlopParameters.Builder.setCostScaling ( com.google.ortools.glop.GlopParameters.CostScalingAlgorithm value)

optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];

Parameters
valueThe costScaling to set.
Returns
This builder for chaining.

Definition at line 5850 of file GlopParameters.java.

◆ setCrossoverBoundSnappingDistance()

Builder com.google.ortools.glop.GlopParameters.Builder.setCrossoverBoundSnappingDistance ( double value)
If the starting basis contains FREE variable with bounds, we will move
any such variable to their closer bounds if the distance is smaller than
this parameter.

The starting statuses can contains FREE variables with bounds, if a user
set it like this externally. Also, any variable with an initial BASIC
status that was not kept in the initial basis is marked as FREE before this
step is applied.

Note that by default a FREE variable is assumed to be zero unless a
starting value was specified via SetStartingVariableValuesForNextSolve().

Note that, at the end of the solve, some of these FREE variable with bounds
and an interior point value might still be left in the final solution.
Enable push_to_vertex to clean these up.

optional double crossover_bound_snapping_distance = 64 [default = inf];

Parameters
valueThe crossoverBoundSnappingDistance to set.
Returns
This builder for chaining.

Definition at line 8502 of file GlopParameters.java.

◆ setDegenerateMinistepFactor()

Builder com.google.ortools.glop.GlopParameters.Builder.setDegenerateMinistepFactor ( double value)
During a degenerate iteration, the more conservative approach is to do a
step of length zero (while shifting the bound of the leaving variable).
That is, the variable values are unchanged for the primal simplex or the
reduced cost are unchanged for the dual simplex. However, instead of doing
a step of length zero, it seems to be better on degenerate problems to do a
small positive step. This is what is recommended in the EXPAND procedure
described in:
P. E. Gill, W. Murray, M. A. Saunders, and M. H. Wright. "A practical anti-
cycling procedure for linearly constrained optimization".
Mathematical Programming, 45:437\u2013474, 1989.

Here, during a degenerate iteration we do a small positive step of this
factor times the primal (resp. dual) tolerance. In the primal simplex, this
may effectively push variable values (very slightly) further out of their
bounds (resp. reduced costs for the dual simplex).

Setting this to zero reverts to the more conservative approach of a zero
step during degenerate iterations.

optional double degenerate_ministep_factor = 42 [default = 0.01];

Parameters
valueThe degenerateMinistepFactor to set.
Returns
This builder for chaining.

Definition at line 7771 of file GlopParameters.java.

◆ setDevexWeightsResetPeriod()

Builder com.google.ortools.glop.GlopParameters.Builder.setDevexWeightsResetPeriod ( int value)
Devex weights will be reset to 1.0 after that number of updates.

optional int32 devex_weights_reset_period = 33 [default = 150];

Parameters
valueThe devexWeightsResetPeriod to set.
Returns
This builder for chaining.

Definition at line 7140 of file GlopParameters.java.

◆ setDropMagnitude()

Builder com.google.ortools.glop.GlopParameters.Builder.setDropMagnitude ( double value)
Value in the input LP lower than this will be ignored. This is similar to
drop_tolerance but more aggressive as this is used before scaling. This is
mainly here to avoid underflow and have simpler invariant in the code, like
a * b == 0 iff a or b is zero and things like this.

optional double drop_magnitude = 71 [default = 1e-30];

Parameters
valueThe dropMagnitude to set.
Returns
This builder for chaining.

Definition at line 8789 of file GlopParameters.java.

◆ setDropTolerance()

Builder com.google.ortools.glop.GlopParameters.Builder.setDropTolerance ( double value)
In order to increase the sparsity of the manipulated vectors, floating
point values with a magnitude smaller than this parameter are set to zero
(only in some places). This parameter should be positive or zero.

optional double drop_tolerance = 52 [default = 1e-14];

Parameters
valueThe dropTolerance to set.
Returns
This builder for chaining.

Definition at line 5744 of file GlopParameters.java.

◆ setDualFeasibilityTolerance()

Builder com.google.ortools.glop.GlopParameters.Builder.setDualFeasibilityTolerance ( double value)
Variables whose reduced costs have an absolute value smaller than this
tolerance are not considered as entering candidates. That is they do not
take part in deciding whether a solution is dual-feasible or not.

Note that this value can temporarily increase during the execution of the
algorithm if the estimated precision of the reduced costs is higher than
this tolerance. Note also that we scale the costs (in the presolve step) so
that the cost magnitude range contains one.

This is also known as the optimality tolerance in other solvers.

optional double dual_feasibility_tolerance = 11 [default = 1e-08];

Parameters
valueThe dualFeasibilityTolerance to set.
Returns
This builder for chaining.

Definition at line 5373 of file GlopParameters.java.

◆ setDualizerThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.setDualizerThreshold ( double value)
When solve_dual_problem is LET_SOLVER_DECIDE, take the dual if the number
of constraints of the problem is more than this threshold times the number
of variables.

optional double dualizer_threshold = 21 [default = 1.5];

Parameters
valueThe dualizerThreshold to set.
Returns
This builder for chaining.

Definition at line 6238 of file GlopParameters.java.

◆ setDualPricePrioritizeNorm()

Builder com.google.ortools.glop.GlopParameters.Builder.setDualPricePrioritizeNorm ( boolean value)
On some problem like stp3d or pds-100 this makes a huge difference in
speed and number of iterations of the dual simplex.

optional bool dual_price_prioritize_norm = 69 [default = false];

Parameters
valueThe dualPricePrioritizeNorm to set.
Returns
This builder for chaining.

Definition at line 8851 of file GlopParameters.java.

◆ setDualSmallPivotThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.setDualSmallPivotThreshold ( double value)
Like small_pivot_threshold but for the dual simplex. This is needed because
the dual algorithm does not interpret this value in the same way.
TODO(user): Clean this up and use the same small pivot detection.

optional double dual_small_pivot_threshold = 38 [default = 0.0001];

Parameters
valueThe dualSmallPivotThreshold to set.
Returns
This builder for chaining.

Definition at line 7458 of file GlopParameters.java.

◆ setDynamicallyAdjustRefactorizationPeriod()

Builder com.google.ortools.glop.GlopParameters.Builder.setDynamicallyAdjustRefactorizationPeriod ( boolean value)
If this is true, then basis_refactorization_period becomes a lower bound on
the number of iterations between two refactorization (provided there is no
numerical accuracy issues). Depending on the estimated time to refactorize
vs the extra time spend in each solves because of the LU update, we try to
balance the two times.

optional bool dynamically_adjust_refactorization_period = 63 [default = true];

Parameters
valueThe dynamicallyAdjustRefactorizationPeriod to set.
Returns
This builder for chaining.

Definition at line 6106 of file GlopParameters.java.

◆ setExploitSingletonColumnInInitialBasis()

Builder com.google.ortools.glop.GlopParameters.Builder.setExploitSingletonColumnInInitialBasis ( boolean value)
Whether or not we exploit the singleton columns already present in the
problem when we create the initial basis.

optional bool exploit_singleton_column_in_initial_basis = 37 [default = true];

Parameters
valueThe exploitSingletonColumnInInitialBasis to set.
Returns
This builder for chaining.

Definition at line 7395 of file GlopParameters.java.

◆ setFeasibilityRule()

Builder com.google.ortools.glop.GlopParameters.Builder.setFeasibilityRule ( com.google.ortools.glop.GlopParameters.PricingRule value)
PricingRule to use during the feasibility phase.

optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];

Parameters
valueThe feasibilityRule to set.
Returns
This builder for chaining.

Definition at line 4930 of file GlopParameters.java.

◆ setField()

Builder com.google.ortools.glop.GlopParameters.Builder.setField ( com.google.protobuf.Descriptors.FieldDescriptor field,
java.lang.Object value )

Definition at line 4265 of file GlopParameters.java.

◆ setHarrisToleranceRatio()

Builder com.google.ortools.glop.GlopParameters.Builder.setHarrisToleranceRatio ( double value)
This impacts the ratio test and indicates by how much we allow a basic
variable value that we move to go out of bounds. The value should be in
[0.0, 1.0) and should be interpreted as a ratio of the
primal_feasibility_tolerance. Setting this to 0.0 basically disables the
Harris ratio test while setting this too close to 1.0 will make it
difficult to keep the variable values inside their bounds modulo the
primal_feasibility_tolerance.

Note that the same comment applies to the dual simplex ratio test. There,
we allow the reduced costs to be of an infeasible sign by as much as this
ratio times the dual_feasibility_tolerance.

optional double harris_tolerance_ratio = 13 [default = 0.5];

Parameters
valueThe harrisToleranceRatio to set.
Returns
This builder for chaining.

Definition at line 5548 of file GlopParameters.java.

◆ setInitialBasis()

Builder com.google.ortools.glop.GlopParameters.Builder.setInitialBasis ( com.google.ortools.glop.GlopParameters.InitialBasisHeuristic value)
What heuristic is used to try to replace the fixed slack columns in the
initial basis of the primal simplex.

optional .operations_research.glop.GlopParameters.InitialBasisHeuristic initial_basis = 17 [default = TRIANGULAR];

Parameters
valueThe initialBasis to set.
Returns
This builder for chaining.

Definition at line 5907 of file GlopParameters.java.

◆ setInitialConditionNumberThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.setInitialConditionNumberThreshold ( double value)
If our upper bound on the condition number of the initial basis (from our
heurisitic or a warm start) is above this threshold, we revert to an all
slack basis.

optional double initial_condition_number_threshold = 59 [default = 1e+50];

Parameters
valueThe initialConditionNumberThreshold to set.
Returns
This builder for chaining.

Definition at line 8282 of file GlopParameters.java.

◆ setInitializeDevexWithColumnNorms()

Builder com.google.ortools.glop.GlopParameters.Builder.setInitializeDevexWithColumnNorms ( boolean value)
Whether we initialize devex weights to 1.0 or to the norms of the matrix
columns.

optional bool initialize_devex_with_column_norms = 36 [default = true];

Parameters
valueThe initializeDevexWithColumnNorms to set.
Returns
This builder for chaining.

Definition at line 7335 of file GlopParameters.java.

◆ setLogSearchProgress()

Builder com.google.ortools.glop.GlopParameters.Builder.setLogSearchProgress ( boolean value)
If true, logs the progress of a solve to LOG(INFO). Note that the same
messages can also be turned on by displaying logs at level 1 for the
relevant files.

optional bool log_search_progress = 61 [default = false];

Parameters
valueThe logSearchProgress to set.
Returns
This builder for chaining.

Definition at line 8346 of file GlopParameters.java.

◆ setLogToStdout()

Builder com.google.ortools.glop.GlopParameters.Builder.setLogToStdout ( boolean value)
If true, logs will be displayed to stdout instead of using Google log info.

optional bool log_to_stdout = 66 [default = true];

Parameters
valueThe logToStdout to set.
Returns
This builder for chaining.

Definition at line 8404 of file GlopParameters.java.

◆ setLuFactorizationPivotThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.setLuFactorizationPivotThreshold ( double value)
Threshold for LU-factorization: for stability reasons, the magnitude of the
chosen pivot at a given step is guaranteed to be greater than this
threshold times the maximum magnitude of all the possible pivot choices in
the same column. The value must be in [0,1].

optional double lu_factorization_pivot_threshold = 25 [default = 0.01];

Parameters
valueThe luFactorizationPivotThreshold to set.
Returns
This builder for chaining.

Definition at line 6641 of file GlopParameters.java.

◆ setMarkowitzSingularityThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.setMarkowitzSingularityThreshold ( double value)
If a pivot magnitude is smaller than this during the Markowitz LU
factorization, then the matrix is assumed to be singular. Note that
this is an absolute threshold and is not relative to the other possible
pivots on the same column (see lu_factorization_pivot_threshold).

optional double markowitz_singularity_threshold = 30 [default = 1e-15];

Parameters
valueThe markowitzSingularityThreshold to set.
Returns
This builder for chaining.

Definition at line 6957 of file GlopParameters.java.

◆ setMarkowitzZlatevParameter()

Builder com.google.ortools.glop.GlopParameters.Builder.setMarkowitzZlatevParameter ( int value)
How many columns do we look at in the Markowitz pivoting rule to find
a good pivot. See markowitz.h.

optional int32 markowitz_zlatev_parameter = 29 [default = 3];

Parameters
valueThe markowitzZlatevParameter to set.
Returns
This builder for chaining.

Definition at line 6891 of file GlopParameters.java.

◆ setMaxDeterministicTime()

Builder com.google.ortools.glop.GlopParameters.Builder.setMaxDeterministicTime ( double value)
Maximum deterministic time allowed to solve a problem. The deterministic
time is more or less correlated to the running time, and its unit should
be around the second (at least on a Xeon(R) CPU E5-1650 v2 @ 3.50GHz).

TODO(user): Improve the correlation.

optional double max_deterministic_time = 45 [default = inf];

Parameters
valueThe maxDeterministicTime to set.
Returns
This builder for chaining.

Definition at line 6768 of file GlopParameters.java.

◆ setMaxNumberOfIterations()

Builder com.google.ortools.glop.GlopParameters.Builder.setMaxNumberOfIterations ( long value)
Maximum number of simplex iterations to solve a problem.
A value of -1 means no limit.

optional int64 max_number_of_iterations = 27 [default = -1];

Parameters
valueThe maxNumberOfIterations to set.
Returns
This builder for chaining.

Definition at line 6831 of file GlopParameters.java.

◆ setMaxNumberOfReoptimizations()

Builder com.google.ortools.glop.GlopParameters.Builder.setMaxNumberOfReoptimizations ( double value)
When the solution of phase II is imprecise, we re-run the phase II with the
opposite algorithm from that imprecise solution (i.e., if primal or dual
simplex was used, we use dual or primal simplex, respectively). We repeat
such re-optimization until the solution is precise, or we hit this limit.

optional double max_number_of_reoptimizations = 56 [default = 40];

Parameters
valueThe maxNumberOfReoptimizations to set.
Returns
This builder for chaining.

Definition at line 6573 of file GlopParameters.java.

◆ setMaxTimeInSeconds()

Builder com.google.ortools.glop.GlopParameters.Builder.setMaxTimeInSeconds ( double value)
Maximum time allowed in seconds to solve a problem.

optional double max_time_in_seconds = 26 [default = inf];

Parameters
valueThe maxTimeInSeconds to set.
Returns
This builder for chaining.

Definition at line 6700 of file GlopParameters.java.

◆ setMaxValidMagnitude()

Builder com.google.ortools.glop.GlopParameters.Builder.setMaxValidMagnitude ( double value)
Any finite values in the input LP must be below this threshold, otherwise
the model will be reported invalid. This is needed to avoid floating point
overflow when evaluating bounds * coeff for instance. In practice, users
shouldn't use super large values in an LP. With the default threshold, even
evaluating large constraint with variables at their bound shouldn't cause
any overflow.

optional double max_valid_magnitude = 70 [default = 1e+30];

Parameters
valueThe maxValidMagnitude to set.
Returns
This builder for chaining.

Definition at line 8719 of file GlopParameters.java.

◆ setMinimumAcceptablePivot()

Builder com.google.ortools.glop.GlopParameters.Builder.setMinimumAcceptablePivot ( double value)
We never follow a basis change with a pivot under this threshold.

optional double minimum_acceptable_pivot = 15 [default = 1e-06];

Parameters
valueThe minimumAcceptablePivot to set.
Returns
This builder for chaining.

Definition at line 5682 of file GlopParameters.java.

◆ setNumOmpThreads()

Builder com.google.ortools.glop.GlopParameters.Builder.setNumOmpThreads ( int value)
Number of threads in the OMP parallel sections. If left to 1, the code will
not create any OMP threads and will remain single-threaded.

optional int32 num_omp_threads = 44 [default = 1];

Parameters
valueThe numOmpThreads to set.
Returns
This builder for chaining.

Definition at line 7959 of file GlopParameters.java.

◆ setObjectiveLowerLimit()

Builder com.google.ortools.glop.GlopParameters.Builder.setObjectiveLowerLimit ( double value)
The solver will stop as soon as it has proven that the objective is smaller
than objective_lower_limit or greater than objective_upper_limit. Depending
on the simplex algorithm (primal or dual) and the optimization direction,
note that only one bound will be used at the time.

Important: The solver does not add any tolerances to these values, and as
soon as the objective (as computed by the solver, so with some imprecision)
crosses one of these bounds (strictly), the search will stop. It is up to
the client to add any tolerance if needed.

optional double objective_lower_limit = 40 [default = -inf];

Parameters
valueThe objectiveLowerLimit to set.
Returns
This builder for chaining.

Definition at line 7616 of file GlopParameters.java.

◆ setObjectiveUpperLimit()

Builder com.google.ortools.glop.GlopParameters.Builder.setObjectiveUpperLimit ( double value)

optional double objective_upper_limit = 41 [default = inf];

Parameters
valueThe objectiveUpperLimit to set.
Returns
This builder for chaining.

Definition at line 7668 of file GlopParameters.java.

◆ setOptimizationRule()

Builder com.google.ortools.glop.GlopParameters.Builder.setOptimizationRule ( com.google.ortools.glop.GlopParameters.PricingRule value)
PricingRule to use during the optimization phase.

optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];

Parameters
valueThe optimizationRule to set.
Returns
This builder for chaining.

Definition at line 4988 of file GlopParameters.java.

◆ setPerturbCostsInDualSimplex()

Builder com.google.ortools.glop.GlopParameters.Builder.setPerturbCostsInDualSimplex ( boolean value)
When this is true, then the costs are randomly perturbed before the dual
simplex is even started. This has been shown to improve the dual simplex
performance. For a good reference, see Huangfu Q (2013) "High performance
simplex solver", Ph.D, dissertation, University of Edinburgh.

optional bool perturb_costs_in_dual_simplex = 53 [default = false];

Parameters
valueThe perturbCostsInDualSimplex to set.
Returns
This builder for chaining.

Definition at line 8025 of file GlopParameters.java.

◆ setPreprocessorZeroTolerance()

Builder com.google.ortools.glop.GlopParameters.Builder.setPreprocessorZeroTolerance ( double value)
A floating point tolerance used by the preprocessors. This is used for
things like detecting if two columns/rows are proportional or if an
interval is empty.

Note that the preprocessors also use solution_feasibility_tolerance() to
detect if a problem is infeasible.

optional double preprocessor_zero_tolerance = 39 [default = 1e-09];

Parameters
valueThe preprocessorZeroTolerance to set.
Returns
This builder for chaining.

Definition at line 7531 of file GlopParameters.java.

◆ setPrimalFeasibilityTolerance()

Builder com.google.ortools.glop.GlopParameters.Builder.setPrimalFeasibilityTolerance ( double value)
This tolerance indicates by how much we allow the variable values to go out
of bounds and still consider the current solution primal-feasible. We also
use the same tolerance for the error A.x - b. Note that the two errors are
closely related if A is scaled in such a way that the greatest coefficient
magnitude on each column is 1.0.

This is also simply called feasibility tolerance in other solvers.

optional double primal_feasibility_tolerance = 10 [default = 1e-08];

Parameters
valueThe primalFeasibilityTolerance to set.
Returns
This builder for chaining.

Definition at line 5284 of file GlopParameters.java.

◆ setProvideStrongOptimalGuarantee()

Builder com.google.ortools.glop.GlopParameters.Builder.setProvideStrongOptimalGuarantee ( boolean value)
If true, then when the solver returns a solution with an OPTIMAL status,
we can guarantee that:
- The primal variable are in their bounds.
- The dual variable are in their bounds.
- If we modify each component of the right-hand side a bit and each
  component of the objective function a bit, then the pair (primal values,
  dual values) is an EXACT optimal solution of the perturbed problem.
- The modifications above are smaller than the associated tolerances as
  defined in the comment for solution_feasibility_tolerance (*).

(*): This is the only place where the guarantee is not tight since we
compute the upper bounds with scalar product of the primal/dual
solution and the initial problem coefficients with only double precision.

Note that whether or not this option is true, we still check the
primal/dual infeasibility and objective gap. However if it is false, we
don't move the primal/dual values within their bounds and leave them
untouched.

optional bool provide_strong_optimal_guarantee = 24 [default = true];

Parameters
valueThe provideStrongOptimalGuarantee to set.
Returns
This builder for chaining.

Definition at line 6431 of file GlopParameters.java.

◆ setPushToVertex()

Builder com.google.ortools.glop.GlopParameters.Builder.setPushToVertex ( boolean value)
If the optimization phases finishes with super-basic variables (i.e.,
variables that either 1) have bounds but are FREE in the basis, or 2) have
no bounds and are FREE in the basis at a nonzero value), then run a "push"
phase to push these variables to bounds, obtaining a vertex solution. Note
this situation can happen only if a starting value was specified via
SetStartingVariableValuesForNextSolve().

optional bool push_to_vertex = 65 [default = true];

Parameters
valueThe pushToVertex to set.
Returns
This builder for chaining.

Definition at line 8587 of file GlopParameters.java.

◆ setRandomSeed()

Builder com.google.ortools.glop.GlopParameters.Builder.setRandomSeed ( int value)
At the beginning of each solve, the random number generator used in some
part of the solver is reinitialized to this seed. If you change the random
seed, the solver may make different choices during the solving process.
Note that this may lead to a different solution, for example a different
optimal basis.

For some problems, the running time may vary a lot depending on small
change in the solving algorithm. Running the solver with different seeds
enables to have more robust benchmarks when evaluating new features.

Also note that the solver is fully deterministic: two runs of the same
binary, on the same machine, on the exact same data and with the same
parameters will go through the exact same iterations. If they hit a time
limit, they might of course yield different results because one will have
advanced farther than the other.

optional int32 random_seed = 43 [default = 1];

Parameters
valueThe randomSeed to set.
Returns
This builder for chaining.

Definition at line 7886 of file GlopParameters.java.

◆ setRatioTestZeroThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.setRatioTestZeroThreshold ( double value)
During the primal simplex (resp. dual simplex), the coefficients of the
direction (resp. update row) with a magnitude lower than this threshold are
not considered during the ratio test. This tolerance is related to the
precision at which a Solve() involving the basis matrix can be performed.

TODO(user): Automatically increase it when we detect that the precision
of the Solve() is worse than this.

optional double ratio_test_zero_threshold = 12 [default = 1e-09];

Parameters
valueThe ratioTestZeroThreshold to set.
Returns
This builder for chaining.

Definition at line 5456 of file GlopParameters.java.

◆ setRecomputeEdgesNormThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.setRecomputeEdgesNormThreshold ( double value)
Note that the threshold is a relative error on the actual norm (not the
squared one) and that edge norms are always greater than 1. Recomputing
norms is a really expensive operation and a large threshold is ok since
this doesn't impact directly the solution but just the entering variable
choice.

optional double recompute_edges_norm_threshold = 9 [default = 100];

Parameters
valueThe recomputeEdgesNormThreshold to set.
Returns
This builder for chaining.

Definition at line 5206 of file GlopParameters.java.

◆ setRecomputeReducedCostsThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.setRecomputeReducedCostsThreshold ( double value)
We estimate the accuracy of the iteratively computed reduced costs. If
it falls below this threshold, we reinitialize them from scratch. Note
that such an operation is pretty fast, so we can use a low threshold.
It is important to have a good accuracy here (better than the
dual_feasibility_tolerance below) to be sure of the sign of such a cost.

optional double recompute_reduced_costs_threshold = 8 [default = 1e-08];

Parameters
valueThe recomputeReducedCostsThreshold to set.
Returns
This builder for chaining.

Definition at line 5134 of file GlopParameters.java.

◆ setRefactorizationThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.setRefactorizationThreshold ( double value)
We estimate the factorization accuracy of B during each pivot by using
the fact that we can compute the pivot coefficient in two ways:
- From direction[leaving_row].
- From update_row[entering_column].
If the two values have a relative difference above this threshold, we
trigger a refactorization.

optional double refactorization_threshold = 6 [default = 1e-09];

Parameters
valueThe refactorizationThreshold to set.
Returns
This builder for chaining.

Definition at line 5061 of file GlopParameters.java.

◆ setRelativeCostPerturbation()

Builder com.google.ortools.glop.GlopParameters.Builder.setRelativeCostPerturbation ( double value)
The magnitude of the cost perturbation is given by
RandomIn(1.0, 2.0) * (
    relative_cost_perturbation * cost
  + relative_max_cost_perturbation * max_cost);

optional double relative_cost_perturbation = 54 [default = 1e-05];

Parameters
valueThe relativeCostPerturbation to set.
Returns
This builder for chaining.

Definition at line 8177 of file GlopParameters.java.

◆ setRelativeMaxCostPerturbation()

Builder com.google.ortools.glop.GlopParameters.Builder.setRelativeMaxCostPerturbation ( double value)

optional double relative_max_cost_perturbation = 55 [default = 1e-07];

Parameters
valueThe relativeMaxCostPerturbation to set.
Returns
This builder for chaining.

Definition at line 8224 of file GlopParameters.java.

◆ setRepeatedField()

Builder com.google.ortools.glop.GlopParameters.Builder.setRepeatedField ( com.google.protobuf.Descriptors.FieldDescriptor field,
int index,
java.lang.Object value )

Definition at line 4281 of file GlopParameters.java.

◆ setScalingMethod()

Builder com.google.ortools.glop.GlopParameters.Builder.setScalingMethod ( com.google.ortools.glop.GlopParameters.ScalingAlgorithm value)

optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];

Parameters
valueThe scalingMethod to set.
Returns
This builder for chaining.

Definition at line 4876 of file GlopParameters.java.

◆ setSmallPivotThreshold()

Builder com.google.ortools.glop.GlopParameters.Builder.setSmallPivotThreshold ( double value)
When we choose the leaving variable, we want to avoid small pivot because
they are the less precise and may cause numerical instabilities. For a
pivot under this threshold times the infinity norm of the direction, we try
various countermeasures in order to avoid using it.

optional double small_pivot_threshold = 14 [default = 1e-06];

Parameters
valueThe smallPivotThreshold to set.
Returns
This builder for chaining.

Definition at line 5623 of file GlopParameters.java.

◆ setSolutionFeasibilityTolerance()

Builder com.google.ortools.glop.GlopParameters.Builder.setSolutionFeasibilityTolerance ( double value)
When the problem status is OPTIMAL, we check the optimality using this
relative tolerance and change the status to IMPRECISE if an issue is
detected.

The tolerance is "relative" in the sense that our thresholds are:
- tolerance * max(1.0, abs(bound)) for crossing a given bound.
- tolerance * max(1.0, abs(cost)) for an infeasible reduced cost.
- tolerance for an infeasible dual value.

optional double solution_feasibility_tolerance = 22 [default = 1e-06];

Parameters
valueThe solutionFeasibilityTolerance to set.
Returns
This builder for chaining.

Definition at line 6317 of file GlopParameters.java.

◆ setSolveDualProblem()

Builder com.google.ortools.glop.GlopParameters.Builder.setSolveDualProblem ( com.google.ortools.glop.GlopParameters.SolverBehavior value)
Whether or not we solve the dual of the given problem.
With a value of auto, the algorithm decide which approach is probably the
fastest depending on the problem dimensions (see dualizer_threshold).

optional .operations_research.glop.GlopParameters.SolverBehavior solve_dual_problem = 20 [default = LET_SOLVER_DECIDE];

Parameters
valueThe solveDualProblem to set.
Returns
This builder for chaining.

Definition at line 6172 of file GlopParameters.java.

◆ setUnknownFields()

final Builder com.google.ortools.glop.GlopParameters.Builder.setUnknownFields ( final com.google.protobuf.UnknownFieldSet unknownFields)

Definition at line 8874 of file GlopParameters.java.

◆ setUseDedicatedDualFeasibilityAlgorithm()

Builder com.google.ortools.glop.GlopParameters.Builder.setUseDedicatedDualFeasibilityAlgorithm ( boolean value)
We have two possible dual phase I algorithms. Both work on an LP that
minimize the sum of dual infeasiblities. One use dedicated code (when this
param is true), the other one use exactly the same code as the dual phase
II but on an auxiliary problem where the variable bounds of the original
problem are changed.

TODO(user): For now we have both, but ideally the non-dedicated version
will win since it is a lot less code to maintain.

optional bool use_dedicated_dual_feasibility_algorithm = 62 [default = true];

Parameters
valueThe useDedicatedDualFeasibilityAlgorithm to set.
Returns
This builder for chaining.

Definition at line 8105 of file GlopParameters.java.

◆ setUseDualSimplex()

Builder com.google.ortools.glop.GlopParameters.Builder.setUseDualSimplex ( boolean value)
Whether or not we use the dual simplex algorithm instead of the primal.

optional bool use_dual_simplex = 31 [default = false];

Parameters
valueThe useDualSimplex to set.
Returns
This builder for chaining.

Definition at line 7016 of file GlopParameters.java.

◆ setUseImpliedFreePreprocessor()

Builder com.google.ortools.glop.GlopParameters.Builder.setUseImpliedFreePreprocessor ( boolean value)
If presolve runs, include the pass that detects implied free variables.

optional bool use_implied_free_preprocessor = 67 [default = true];

Parameters
valueThe useImpliedFreePreprocessor to set.
Returns
This builder for chaining.

Definition at line 8648 of file GlopParameters.java.

◆ setUseMiddleProductFormUpdate()

Builder com.google.ortools.glop.GlopParameters.Builder.setUseMiddleProductFormUpdate ( boolean value)
Whether or not to use the middle product form update rather than the
standard eta LU update. The middle form product update should be a lot more
efficient (close to the Forrest-Tomlin update, a bit slower but easier to
implement). See for more details:
Qi Huangfu, J. A. Julian Hall, "Novel update techniques for the revised
simplex method", 28 january 2013, Technical Report ERGO-13-0001
http://www.maths.ed.ac.uk/hall/HuHa12/ERGO-13-001.pdf

optional bool use_middle_product_form_update = 35 [default = true];

Parameters
valueThe useMiddleProductFormUpdate to set.
Returns
This builder for chaining.

Definition at line 7270 of file GlopParameters.java.

◆ setUsePreprocessing()

Builder com.google.ortools.glop.GlopParameters.Builder.setUsePreprocessing ( boolean value)
Whether or not we use advanced preprocessing techniques.

optional bool use_preprocessing = 34 [default = true];

Parameters
valueThe usePreprocessing to set.
Returns
This builder for chaining.

Definition at line 7196 of file GlopParameters.java.

◆ setUseScaling()

Builder com.google.ortools.glop.GlopParameters.Builder.setUseScaling ( boolean value)
Whether or not we scale the matrix A so that the maximum coefficient on
each line and each column is 1.0.

optional bool use_scaling = 16 [default = true];

Parameters
valueThe useScaling to set.
Returns
This builder for chaining.

Definition at line 5805 of file GlopParameters.java.

◆ setUseTransposedMatrix()

Builder com.google.ortools.glop.GlopParameters.Builder.setUseTransposedMatrix ( boolean value)
Whether or not we keep a transposed version of the matrix A to speed-up the
pricing at the cost of extra memory and the initial tranposition
computation.

optional bool use_transposed_matrix = 18 [default = true];

Parameters
valueThe useTransposedMatrix to set.
Returns
This builder for chaining.

Definition at line 5972 of file GlopParameters.java.


The documentation for this class was generated from the following file: