Package com.google.ortools.glop
Class GlopParameters.Builder
- java.lang.Object
-
- com.google.protobuf.AbstractMessageLite.Builder
-
- com.google.protobuf.AbstractMessage.Builder<BuilderT>
-
- com.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
- com.google.ortools.glop.GlopParameters.Builder
-
- All Implemented Interfaces:
GlopParametersOrBuilder,com.google.protobuf.Message.Builder,com.google.protobuf.MessageLite.Builder,com.google.protobuf.MessageLiteOrBuilder,com.google.protobuf.MessageOrBuilder,java.lang.Cloneable
- Enclosing class:
- GlopParameters
public static final class GlopParameters.Builder extends com.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder> implements GlopParametersOrBuilder
next id = 70
Protobuf typeoperations_research.glop.GlopParameters
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description GlopParameters.BuilderaddRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)GlopParametersbuild()GlopParametersbuildPartial()GlopParameters.Builderclear()GlopParameters.BuilderclearAllowSimplexAlgorithmChange()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.GlopParameters.BuilderclearBasisRefactorizationPeriod()Number of iterations between two basis refactorizations.GlopParameters.BuilderclearChangeStatusToImprecise()If true, the internal API will change the return status to imprecise if the solution does not respect the internal tolerances.GlopParameters.BuilderclearCostScaling()optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];GlopParameters.BuilderclearCrossoverBoundSnappingDistance()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.GlopParameters.BuilderclearDegenerateMinistepFactor()During a degenerate iteration, the more conservative approach is to do a step of length zero (while shifting the bound of the leaving variable).GlopParameters.BuilderclearDevexWeightsResetPeriod()Devex weights will be reset to 1.0 after that number of updates.GlopParameters.BuilderclearDropTolerance()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).GlopParameters.BuilderclearDualFeasibilityTolerance()Variables whose reduced costs have an absolute value smaller than this tolerance are not considered as entering candidates.GlopParameters.BuilderclearDualizerThreshold()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.GlopParameters.BuilderclearDualPricePrioritizeNorm()On some problem like stp3d or pds-100 this makes a huge difference in speed and number of iterations of the dual simplex.GlopParameters.BuilderclearDualSmallPivotThreshold()Like small_pivot_threshold but for the dual simplex.GlopParameters.BuilderclearDynamicallyAdjustRefactorizationPeriod()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).GlopParameters.BuilderclearExploitSingletonColumnInInitialBasis()Whether or not we exploit the singleton columns already present in the problem when we create the initial basis.GlopParameters.BuilderclearFeasibilityRule()PricingRule to use during the feasibility phase.GlopParameters.BuilderclearField(com.google.protobuf.Descriptors.FieldDescriptor field)GlopParameters.BuilderclearHarrisToleranceRatio()This impacts the ratio test and indicates by how much we allow a basic variable value that we move to go out of bounds.GlopParameters.BuilderclearInitialBasis()What heuristic is used to try to replace the fixed slack columns in the initial basis of the primal simplex.GlopParameters.BuilderclearInitialConditionNumberThreshold()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.GlopParameters.BuilderclearInitializeDevexWithColumnNorms()Whether we initialize devex weights to 1.0 or to the norms of the matrix columns.GlopParameters.BuilderclearLogSearchProgress()If true, logs the progress of a solve to LOG(INFO).GlopParameters.BuilderclearLogToStdout()If true, logs will be displayed to stdout instead of using Google log info.GlopParameters.BuilderclearLuFactorizationPivotThreshold()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.GlopParameters.BuilderclearMarkowitzSingularityThreshold()If a pivot magnitude is smaller than this during the Markowitz LU factorization, then the matrix is assumed to be singular.GlopParameters.BuilderclearMarkowitzZlatevParameter()How many columns do we look at in the Markowitz pivoting rule to find a good pivot.GlopParameters.BuilderclearMaxDeterministicTime()Maximum deterministic time allowed to solve a problem.GlopParameters.BuilderclearMaxNumberOfIterations()Maximum number of simplex iterations to solve a problem.GlopParameters.BuilderclearMaxNumberOfReoptimizations()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).GlopParameters.BuilderclearMaxTimeInSeconds()Maximum time allowed in seconds to solve a problem.GlopParameters.BuilderclearMaxValidMagnitude()Any finite values in the input LP must be below this threshold, otherwise the model will be reported invalid.GlopParameters.BuilderclearMinimumAcceptablePivot()We never follow a basis change with a pivot under this threshold.GlopParameters.BuilderclearNumOmpThreads()Number of threads in the OMP parallel sections.GlopParameters.BuilderclearObjectiveLowerLimit()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.GlopParameters.BuilderclearObjectiveUpperLimit()optional double objective_upper_limit = 41 [default = inf];GlopParameters.BuilderclearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)GlopParameters.BuilderclearOptimizationRule()PricingRule to use during the optimization phase.GlopParameters.BuilderclearPerturbCostsInDualSimplex()When this is true, then the costs are randomly perturbed before the dual simplex is even started.GlopParameters.BuilderclearPreprocessorZeroTolerance()A floating point tolerance used by the preprocessors.GlopParameters.BuilderclearPrimalFeasibilityTolerance()This tolerance indicates by how much we allow the variable values to go out of bounds and still consider the current solution primal-feasible.GlopParameters.BuilderclearProvideStrongOptimalGuarantee()If true, then when the solver returns a solution with an OPTIMAL status, we can guarantee that: - The primal variable are in their bounds.GlopParameters.BuilderclearPushToVertex()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.GlopParameters.BuilderclearRandomSeed()At the beginning of each solve, the random number generator used in some part of the solver is reinitialized to this seed.GlopParameters.BuilderclearRatioTestZeroThreshold()During the primal simplex (resp.GlopParameters.BuilderclearRecomputeEdgesNormThreshold()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.GlopParameters.BuilderclearRecomputeReducedCostsThreshold()We estimate the accuracy of the iteratively computed reduced costs.GlopParameters.BuilderclearRefactorizationThreshold()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].GlopParameters.BuilderclearRelativeCostPerturbation()The magnitude of the cost perturbation is given by RandomIn(1.0, 2.0) * ( relative_cost_perturbation * cost + relative_max_cost_perturbation * max_cost);GlopParameters.BuilderclearRelativeMaxCostPerturbation()optional double relative_max_cost_perturbation = 55 [default = 1e-07];GlopParameters.BuilderclearScalingMethod()optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];GlopParameters.BuilderclearSmallPivotThreshold()When we choose the leaving variable, we want to avoid small pivot because they are the less precise and may cause numerical instabilities.GlopParameters.BuilderclearSolutionFeasibilityTolerance()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.GlopParameters.BuilderclearSolveDualProblem()Whether or not we solve the dual of the given problem.GlopParameters.BuilderclearUseDedicatedDualFeasibilityAlgorithm()We have two possible dual phase I algorithms.GlopParameters.BuilderclearUseDualSimplex()Whether or not we use the dual simplex algorithm instead of the primal.GlopParameters.BuilderclearUseImpliedFreePreprocessor()If presolve runs, include the pass that detects implied free variables.GlopParameters.BuilderclearUseMiddleProductFormUpdate()Whether or not to use the middle product form update rather than the standard eta LU update.GlopParameters.BuilderclearUsePreprocessing()Whether or not we use advanced preprocessing techniques.GlopParameters.BuilderclearUseScaling()Whether or not we scale the matrix A so that the maximum coefficient on each line and each column is 1.0.GlopParameters.BuilderclearUseTransposedMatrix()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.GlopParameters.Builderclone()booleangetAllowSimplexAlgorithmChange()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.intgetBasisRefactorizationPeriod()Number of iterations between two basis refactorizations.booleangetChangeStatusToImprecise()If true, the internal API will change the return status to imprecise if the solution does not respect the internal tolerances.GlopParameters.CostScalingAlgorithmgetCostScaling()optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];doublegetCrossoverBoundSnappingDistance()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.GlopParametersgetDefaultInstanceForType()doublegetDegenerateMinistepFactor()During a degenerate iteration, the more conservative approach is to do a step of length zero (while shifting the bound of the leaving variable).static com.google.protobuf.Descriptors.DescriptorgetDescriptor()com.google.protobuf.Descriptors.DescriptorgetDescriptorForType()intgetDevexWeightsResetPeriod()Devex weights will be reset to 1.0 after that number of updates.doublegetDropTolerance()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).doublegetDualFeasibilityTolerance()Variables whose reduced costs have an absolute value smaller than this tolerance are not considered as entering candidates.doublegetDualizerThreshold()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.booleangetDualPricePrioritizeNorm()On some problem like stp3d or pds-100 this makes a huge difference in speed and number of iterations of the dual simplex.doublegetDualSmallPivotThreshold()Like small_pivot_threshold but for the dual simplex.booleangetDynamicallyAdjustRefactorizationPeriod()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).booleangetExploitSingletonColumnInInitialBasis()Whether or not we exploit the singleton columns already present in the problem when we create the initial basis.GlopParameters.PricingRulegetFeasibilityRule()PricingRule to use during the feasibility phase.doublegetHarrisToleranceRatio()This impacts the ratio test and indicates by how much we allow a basic variable value that we move to go out of bounds.GlopParameters.InitialBasisHeuristicgetInitialBasis()What heuristic is used to try to replace the fixed slack columns in the initial basis of the primal simplex.doublegetInitialConditionNumberThreshold()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.booleangetInitializeDevexWithColumnNorms()Whether we initialize devex weights to 1.0 or to the norms of the matrix columns.booleangetLogSearchProgress()If true, logs the progress of a solve to LOG(INFO).booleangetLogToStdout()If true, logs will be displayed to stdout instead of using Google log info.doublegetLuFactorizationPivotThreshold()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.doublegetMarkowitzSingularityThreshold()If a pivot magnitude is smaller than this during the Markowitz LU factorization, then the matrix is assumed to be singular.intgetMarkowitzZlatevParameter()How many columns do we look at in the Markowitz pivoting rule to find a good pivot.doublegetMaxDeterministicTime()Maximum deterministic time allowed to solve a problem.longgetMaxNumberOfIterations()Maximum number of simplex iterations to solve a problem.doublegetMaxNumberOfReoptimizations()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).doublegetMaxTimeInSeconds()Maximum time allowed in seconds to solve a problem.doublegetMaxValidMagnitude()Any finite values in the input LP must be below this threshold, otherwise the model will be reported invalid.doublegetMinimumAcceptablePivot()We never follow a basis change with a pivot under this threshold.intgetNumOmpThreads()Number of threads in the OMP parallel sections.doublegetObjectiveLowerLimit()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.doublegetObjectiveUpperLimit()optional double objective_upper_limit = 41 [default = inf];GlopParameters.PricingRulegetOptimizationRule()PricingRule to use during the optimization phase.booleangetPerturbCostsInDualSimplex()When this is true, then the costs are randomly perturbed before the dual simplex is even started.doublegetPreprocessorZeroTolerance()A floating point tolerance used by the preprocessors.doublegetPrimalFeasibilityTolerance()This tolerance indicates by how much we allow the variable values to go out of bounds and still consider the current solution primal-feasible.booleangetProvideStrongOptimalGuarantee()If true, then when the solver returns a solution with an OPTIMAL status, we can guarantee that: - The primal variable are in their bounds.booleangetPushToVertex()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.intgetRandomSeed()At the beginning of each solve, the random number generator used in some part of the solver is reinitialized to this seed.doublegetRatioTestZeroThreshold()During the primal simplex (resp.doublegetRecomputeEdgesNormThreshold()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.doublegetRecomputeReducedCostsThreshold()We estimate the accuracy of the iteratively computed reduced costs.doublegetRefactorizationThreshold()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].doublegetRelativeCostPerturbation()The magnitude of the cost perturbation is given by RandomIn(1.0, 2.0) * ( relative_cost_perturbation * cost + relative_max_cost_perturbation * max_cost);doublegetRelativeMaxCostPerturbation()optional double relative_max_cost_perturbation = 55 [default = 1e-07];GlopParameters.ScalingAlgorithmgetScalingMethod()optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];doublegetSmallPivotThreshold()When we choose the leaving variable, we want to avoid small pivot because they are the less precise and may cause numerical instabilities.doublegetSolutionFeasibilityTolerance()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.GlopParameters.SolverBehaviorgetSolveDualProblem()Whether or not we solve the dual of the given problem.booleangetUseDedicatedDualFeasibilityAlgorithm()We have two possible dual phase I algorithms.booleangetUseDualSimplex()Whether or not we use the dual simplex algorithm instead of the primal.booleangetUseImpliedFreePreprocessor()If presolve runs, include the pass that detects implied free variables.booleangetUseMiddleProductFormUpdate()Whether or not to use the middle product form update rather than the standard eta LU update.booleangetUsePreprocessing()Whether or not we use advanced preprocessing techniques.booleangetUseScaling()Whether or not we scale the matrix A so that the maximum coefficient on each line and each column is 1.0.booleangetUseTransposedMatrix()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.booleanhasAllowSimplexAlgorithmChange()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.booleanhasBasisRefactorizationPeriod()Number of iterations between two basis refactorizations.booleanhasChangeStatusToImprecise()If true, the internal API will change the return status to imprecise if the solution does not respect the internal tolerances.booleanhasCostScaling()optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];booleanhasCrossoverBoundSnappingDistance()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.booleanhasDegenerateMinistepFactor()During a degenerate iteration, the more conservative approach is to do a step of length zero (while shifting the bound of the leaving variable).booleanhasDevexWeightsResetPeriod()Devex weights will be reset to 1.0 after that number of updates.booleanhasDropTolerance()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).booleanhasDualFeasibilityTolerance()Variables whose reduced costs have an absolute value smaller than this tolerance are not considered as entering candidates.booleanhasDualizerThreshold()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.booleanhasDualPricePrioritizeNorm()On some problem like stp3d or pds-100 this makes a huge difference in speed and number of iterations of the dual simplex.booleanhasDualSmallPivotThreshold()Like small_pivot_threshold but for the dual simplex.booleanhasDynamicallyAdjustRefactorizationPeriod()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).booleanhasExploitSingletonColumnInInitialBasis()Whether or not we exploit the singleton columns already present in the problem when we create the initial basis.booleanhasFeasibilityRule()PricingRule to use during the feasibility phase.booleanhasHarrisToleranceRatio()This impacts the ratio test and indicates by how much we allow a basic variable value that we move to go out of bounds.booleanhasInitialBasis()What heuristic is used to try to replace the fixed slack columns in the initial basis of the primal simplex.booleanhasInitialConditionNumberThreshold()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.booleanhasInitializeDevexWithColumnNorms()Whether we initialize devex weights to 1.0 or to the norms of the matrix columns.booleanhasLogSearchProgress()If true, logs the progress of a solve to LOG(INFO).booleanhasLogToStdout()If true, logs will be displayed to stdout instead of using Google log info.booleanhasLuFactorizationPivotThreshold()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.booleanhasMarkowitzSingularityThreshold()If a pivot magnitude is smaller than this during the Markowitz LU factorization, then the matrix is assumed to be singular.booleanhasMarkowitzZlatevParameter()How many columns do we look at in the Markowitz pivoting rule to find a good pivot.booleanhasMaxDeterministicTime()Maximum deterministic time allowed to solve a problem.booleanhasMaxNumberOfIterations()Maximum number of simplex iterations to solve a problem.booleanhasMaxNumberOfReoptimizations()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).booleanhasMaxTimeInSeconds()Maximum time allowed in seconds to solve a problem.booleanhasMaxValidMagnitude()Any finite values in the input LP must be below this threshold, otherwise the model will be reported invalid.booleanhasMinimumAcceptablePivot()We never follow a basis change with a pivot under this threshold.booleanhasNumOmpThreads()Number of threads in the OMP parallel sections.booleanhasObjectiveLowerLimit()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.booleanhasObjectiveUpperLimit()optional double objective_upper_limit = 41 [default = inf];booleanhasOptimizationRule()PricingRule to use during the optimization phase.booleanhasPerturbCostsInDualSimplex()When this is true, then the costs are randomly perturbed before the dual simplex is even started.booleanhasPreprocessorZeroTolerance()A floating point tolerance used by the preprocessors.booleanhasPrimalFeasibilityTolerance()This tolerance indicates by how much we allow the variable values to go out of bounds and still consider the current solution primal-feasible.booleanhasProvideStrongOptimalGuarantee()If true, then when the solver returns a solution with an OPTIMAL status, we can guarantee that: - The primal variable are in their bounds.booleanhasPushToVertex()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.booleanhasRandomSeed()At the beginning of each solve, the random number generator used in some part of the solver is reinitialized to this seed.booleanhasRatioTestZeroThreshold()During the primal simplex (resp.booleanhasRecomputeEdgesNormThreshold()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.booleanhasRecomputeReducedCostsThreshold()We estimate the accuracy of the iteratively computed reduced costs.booleanhasRefactorizationThreshold()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].booleanhasRelativeCostPerturbation()The magnitude of the cost perturbation is given by RandomIn(1.0, 2.0) * ( relative_cost_perturbation * cost + relative_max_cost_perturbation * max_cost);booleanhasRelativeMaxCostPerturbation()optional double relative_max_cost_perturbation = 55 [default = 1e-07];booleanhasScalingMethod()optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];booleanhasSmallPivotThreshold()When we choose the leaving variable, we want to avoid small pivot because they are the less precise and may cause numerical instabilities.booleanhasSolutionFeasibilityTolerance()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.booleanhasSolveDualProblem()Whether or not we solve the dual of the given problem.booleanhasUseDedicatedDualFeasibilityAlgorithm()We have two possible dual phase I algorithms.booleanhasUseDualSimplex()Whether or not we use the dual simplex algorithm instead of the primal.booleanhasUseImpliedFreePreprocessor()If presolve runs, include the pass that detects implied free variables.booleanhasUseMiddleProductFormUpdate()Whether or not to use the middle product form update rather than the standard eta LU update.booleanhasUsePreprocessing()Whether or not we use advanced preprocessing techniques.booleanhasUseScaling()Whether or not we scale the matrix A so that the maximum coefficient on each line and each column is 1.0.booleanhasUseTransposedMatrix()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.protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTableinternalGetFieldAccessorTable()booleanisInitialized()GlopParameters.BuildermergeFrom(GlopParameters other)GlopParameters.BuildermergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)GlopParameters.BuildermergeFrom(com.google.protobuf.Message other)GlopParameters.BuildermergeUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields)GlopParameters.BuildersetAllowSimplexAlgorithmChange(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.GlopParameters.BuildersetBasisRefactorizationPeriod(int value)Number of iterations between two basis refactorizations.GlopParameters.BuildersetChangeStatusToImprecise(boolean value)If true, the internal API will change the return status to imprecise if the solution does not respect the internal tolerances.GlopParameters.BuildersetCostScaling(GlopParameters.CostScalingAlgorithm value)optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];GlopParameters.BuildersetCrossoverBoundSnappingDistance(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.GlopParameters.BuildersetDegenerateMinistepFactor(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).GlopParameters.BuildersetDevexWeightsResetPeriod(int value)Devex weights will be reset to 1.0 after that number of updates.GlopParameters.BuildersetDropTolerance(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).GlopParameters.BuildersetDualFeasibilityTolerance(double value)Variables whose reduced costs have an absolute value smaller than this tolerance are not considered as entering candidates.GlopParameters.BuildersetDualizerThreshold(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.GlopParameters.BuildersetDualPricePrioritizeNorm(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.GlopParameters.BuildersetDualSmallPivotThreshold(double value)Like small_pivot_threshold but for the dual simplex.GlopParameters.BuildersetDynamicallyAdjustRefactorizationPeriod(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).GlopParameters.BuildersetExploitSingletonColumnInInitialBasis(boolean value)Whether or not we exploit the singleton columns already present in the problem when we create the initial basis.GlopParameters.BuildersetFeasibilityRule(GlopParameters.PricingRule value)PricingRule to use during the feasibility phase.GlopParameters.BuildersetField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)GlopParameters.BuildersetHarrisToleranceRatio(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.GlopParameters.BuildersetInitialBasis(GlopParameters.InitialBasisHeuristic value)What heuristic is used to try to replace the fixed slack columns in the initial basis of the primal simplex.GlopParameters.BuildersetInitialConditionNumberThreshold(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.GlopParameters.BuildersetInitializeDevexWithColumnNorms(boolean value)Whether we initialize devex weights to 1.0 or to the norms of the matrix columns.GlopParameters.BuildersetLogSearchProgress(boolean value)If true, logs the progress of a solve to LOG(INFO).GlopParameters.BuildersetLogToStdout(boolean value)If true, logs will be displayed to stdout instead of using Google log info.GlopParameters.BuildersetLuFactorizationPivotThreshold(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.GlopParameters.BuildersetMarkowitzSingularityThreshold(double value)If a pivot magnitude is smaller than this during the Markowitz LU factorization, then the matrix is assumed to be singular.GlopParameters.BuildersetMarkowitzZlatevParameter(int value)How many columns do we look at in the Markowitz pivoting rule to find a good pivot.GlopParameters.BuildersetMaxDeterministicTime(double value)Maximum deterministic time allowed to solve a problem.GlopParameters.BuildersetMaxNumberOfIterations(long value)Maximum number of simplex iterations to solve a problem.GlopParameters.BuildersetMaxNumberOfReoptimizations(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).GlopParameters.BuildersetMaxTimeInSeconds(double value)Maximum time allowed in seconds to solve a problem.GlopParameters.BuildersetMaxValidMagnitude(double value)Any finite values in the input LP must be below this threshold, otherwise the model will be reported invalid.GlopParameters.BuildersetMinimumAcceptablePivot(double value)We never follow a basis change with a pivot under this threshold.GlopParameters.BuildersetNumOmpThreads(int value)Number of threads in the OMP parallel sections.GlopParameters.BuildersetObjectiveLowerLimit(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.GlopParameters.BuildersetObjectiveUpperLimit(double value)optional double objective_upper_limit = 41 [default = inf];GlopParameters.BuildersetOptimizationRule(GlopParameters.PricingRule value)PricingRule to use during the optimization phase.GlopParameters.BuildersetPerturbCostsInDualSimplex(boolean value)When this is true, then the costs are randomly perturbed before the dual simplex is even started.GlopParameters.BuildersetPreprocessorZeroTolerance(double value)A floating point tolerance used by the preprocessors.GlopParameters.BuildersetPrimalFeasibilityTolerance(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.GlopParameters.BuildersetProvideStrongOptimalGuarantee(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.GlopParameters.BuildersetPushToVertex(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.GlopParameters.BuildersetRandomSeed(int value)At the beginning of each solve, the random number generator used in some part of the solver is reinitialized to this seed.GlopParameters.BuildersetRatioTestZeroThreshold(double value)During the primal simplex (resp.GlopParameters.BuildersetRecomputeEdgesNormThreshold(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.GlopParameters.BuildersetRecomputeReducedCostsThreshold(double value)We estimate the accuracy of the iteratively computed reduced costs.GlopParameters.BuildersetRefactorizationThreshold(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].GlopParameters.BuildersetRelativeCostPerturbation(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);GlopParameters.BuildersetRelativeMaxCostPerturbation(double value)optional double relative_max_cost_perturbation = 55 [default = 1e-07];GlopParameters.BuildersetRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)GlopParameters.BuildersetScalingMethod(GlopParameters.ScalingAlgorithm value)optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];GlopParameters.BuildersetSmallPivotThreshold(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.GlopParameters.BuildersetSolutionFeasibilityTolerance(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.GlopParameters.BuildersetSolveDualProblem(GlopParameters.SolverBehavior value)Whether or not we solve the dual of the given problem.GlopParameters.BuildersetUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields)GlopParameters.BuildersetUseDedicatedDualFeasibilityAlgorithm(boolean value)We have two possible dual phase I algorithms.GlopParameters.BuildersetUseDualSimplex(boolean value)Whether or not we use the dual simplex algorithm instead of the primal.GlopParameters.BuildersetUseImpliedFreePreprocessor(boolean value)If presolve runs, include the pass that detects implied free variables.GlopParameters.BuildersetUseMiddleProductFormUpdate(boolean value)Whether or not to use the middle product form update rather than the standard eta LU update.GlopParameters.BuildersetUsePreprocessing(boolean value)Whether or not we use advanced preprocessing techniques.GlopParameters.BuildersetUseScaling(boolean value)Whether or not we scale the matrix A so that the maximum coefficient on each line and each column is 1.0.GlopParameters.BuildersetUseTransposedMatrix(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.-
Methods inherited from class com.google.protobuf.GeneratedMessageV3.Builder
getAllFields, getField, getFieldBuilder, getOneofFieldDescriptor, getParentForChildren, getRepeatedField, getRepeatedFieldBuilder, getRepeatedFieldCount, getUnknownFields, getUnknownFieldSetBuilder, hasField, hasOneof, internalGetMapField, internalGetMapFieldReflection, internalGetMutableMapField, internalGetMutableMapFieldReflection, isClean, markClean, mergeUnknownLengthDelimitedField, mergeUnknownVarintField, newBuilderForField, onBuilt, onChanged, parseUnknownField, setUnknownFieldSetBuilder, setUnknownFieldsProto3
-
Methods inherited from class com.google.protobuf.AbstractMessage.Builder
findInitializationErrors, getInitializationErrorString, internalMergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, mergeFrom, newUninitializedMessageException, toString
-
Methods inherited from class com.google.protobuf.AbstractMessageLite.Builder
addAll, addAll, mergeDelimitedFrom, mergeDelimitedFrom, mergeFrom, newUninitializedMessageException
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
-
-
-
Method Detail
-
getDescriptor
public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
-
internalGetFieldAccessorTable
protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
- Specified by:
internalGetFieldAccessorTablein classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
clear
public GlopParameters.Builder clear()
- Specified by:
clearin interfacecom.google.protobuf.Message.Builder- Specified by:
clearin interfacecom.google.protobuf.MessageLite.Builder- Overrides:
clearin classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
getDescriptorForType
public com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
- Specified by:
getDescriptorForTypein interfacecom.google.protobuf.Message.Builder- Specified by:
getDescriptorForTypein interfacecom.google.protobuf.MessageOrBuilder- Overrides:
getDescriptorForTypein classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
getDefaultInstanceForType
public GlopParameters getDefaultInstanceForType()
- Specified by:
getDefaultInstanceForTypein interfacecom.google.protobuf.MessageLiteOrBuilder- Specified by:
getDefaultInstanceForTypein interfacecom.google.protobuf.MessageOrBuilder
-
build
public GlopParameters build()
- Specified by:
buildin interfacecom.google.protobuf.Message.Builder- Specified by:
buildin interfacecom.google.protobuf.MessageLite.Builder
-
buildPartial
public GlopParameters buildPartial()
- Specified by:
buildPartialin interfacecom.google.protobuf.Message.Builder- Specified by:
buildPartialin interfacecom.google.protobuf.MessageLite.Builder
-
clone
public GlopParameters.Builder clone()
- Specified by:
clonein interfacecom.google.protobuf.Message.Builder- Specified by:
clonein interfacecom.google.protobuf.MessageLite.Builder- Overrides:
clonein classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
setField
public GlopParameters.Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
- Specified by:
setFieldin interfacecom.google.protobuf.Message.Builder- Overrides:
setFieldin classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
clearField
public GlopParameters.Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field)
- Specified by:
clearFieldin interfacecom.google.protobuf.Message.Builder- Overrides:
clearFieldin classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
clearOneof
public GlopParameters.Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)
- Specified by:
clearOneofin interfacecom.google.protobuf.Message.Builder- Overrides:
clearOneofin classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
setRepeatedField
public GlopParameters.Builder setRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, int index, java.lang.Object value)
- Specified by:
setRepeatedFieldin interfacecom.google.protobuf.Message.Builder- Overrides:
setRepeatedFieldin classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
addRepeatedField
public GlopParameters.Builder addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value)
- Specified by:
addRepeatedFieldin interfacecom.google.protobuf.Message.Builder- Overrides:
addRepeatedFieldin classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
mergeFrom
public GlopParameters.Builder mergeFrom(com.google.protobuf.Message other)
- Specified by:
mergeFromin interfacecom.google.protobuf.Message.Builder- Overrides:
mergeFromin classcom.google.protobuf.AbstractMessage.Builder<GlopParameters.Builder>
-
mergeFrom
public GlopParameters.Builder mergeFrom(GlopParameters other)
-
isInitialized
public final boolean isInitialized()
- Specified by:
isInitializedin interfacecom.google.protobuf.MessageLiteOrBuilder- Overrides:
isInitializedin classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
mergeFrom
public GlopParameters.Builder mergeFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException
- Specified by:
mergeFromin interfacecom.google.protobuf.Message.Builder- Specified by:
mergeFromin interfacecom.google.protobuf.MessageLite.Builder- Overrides:
mergeFromin classcom.google.protobuf.AbstractMessage.Builder<GlopParameters.Builder>- Throws:
java.io.IOException
-
hasScalingMethod
public boolean hasScalingMethod()
optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];- Specified by:
hasScalingMethodin interfaceGlopParametersOrBuilder- Returns:
- Whether the scalingMethod field is set.
-
getScalingMethod
public GlopParameters.ScalingAlgorithm getScalingMethod()
optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];- Specified by:
getScalingMethodin interfaceGlopParametersOrBuilder- Returns:
- The scalingMethod.
-
setScalingMethod
public GlopParameters.Builder setScalingMethod(GlopParameters.ScalingAlgorithm value)
optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];- Parameters:
value- The scalingMethod to set.- Returns:
- This builder for chaining.
-
clearScalingMethod
public GlopParameters.Builder clearScalingMethod()
optional .operations_research.glop.GlopParameters.ScalingAlgorithm scaling_method = 57 [default = EQUILIBRATION];- Returns:
- This builder for chaining.
-
hasFeasibilityRule
public boolean hasFeasibilityRule()
PricingRule to use during the feasibility phase.
optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];- Specified by:
hasFeasibilityRulein interfaceGlopParametersOrBuilder- Returns:
- Whether the feasibilityRule field is set.
-
getFeasibilityRule
public GlopParameters.PricingRule getFeasibilityRule()
PricingRule to use during the feasibility phase.
optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];- Specified by:
getFeasibilityRulein interfaceGlopParametersOrBuilder- Returns:
- The feasibilityRule.
-
setFeasibilityRule
public GlopParameters.Builder setFeasibilityRule(GlopParameters.PricingRule value)
PricingRule to use during the feasibility phase.
optional .operations_research.glop.GlopParameters.PricingRule feasibility_rule = 1 [default = STEEPEST_EDGE];- Parameters:
value- The feasibilityRule to set.- Returns:
- This builder for chaining.
-
clearFeasibilityRule
public 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.
-
hasOptimizationRule
public boolean hasOptimizationRule()
PricingRule to use during the optimization phase.
optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];- Specified by:
hasOptimizationRulein interfaceGlopParametersOrBuilder- Returns:
- Whether the optimizationRule field is set.
-
getOptimizationRule
public GlopParameters.PricingRule getOptimizationRule()
PricingRule to use during the optimization phase.
optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];- Specified by:
getOptimizationRulein interfaceGlopParametersOrBuilder- Returns:
- The optimizationRule.
-
setOptimizationRule
public GlopParameters.Builder setOptimizationRule(GlopParameters.PricingRule value)
PricingRule to use during the optimization phase.
optional .operations_research.glop.GlopParameters.PricingRule optimization_rule = 2 [default = STEEPEST_EDGE];- Parameters:
value- The optimizationRule to set.- Returns:
- This builder for chaining.
-
clearOptimizationRule
public 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.
-
hasRefactorizationThreshold
public boolean 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];- Specified by:
hasRefactorizationThresholdin interfaceGlopParametersOrBuilder- Returns:
- Whether the refactorizationThreshold field is set.
-
getRefactorizationThreshold
public double 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];- Specified by:
getRefactorizationThresholdin interfaceGlopParametersOrBuilder- Returns:
- The refactorizationThreshold.
-
setRefactorizationThreshold
public 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:
value- The refactorizationThreshold to set.- Returns:
- This builder for chaining.
-
clearRefactorizationThreshold
public 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.
-
hasRecomputeReducedCostsThreshold
public boolean 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];- Specified by:
hasRecomputeReducedCostsThresholdin interfaceGlopParametersOrBuilder- Returns:
- Whether the recomputeReducedCostsThreshold field is set.
-
getRecomputeReducedCostsThreshold
public double 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];- Specified by:
getRecomputeReducedCostsThresholdin interfaceGlopParametersOrBuilder- Returns:
- The recomputeReducedCostsThreshold.
-
setRecomputeReducedCostsThreshold
public 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:
value- The recomputeReducedCostsThreshold to set.- Returns:
- This builder for chaining.
-
clearRecomputeReducedCostsThreshold
public 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.
-
hasRecomputeEdgesNormThreshold
public boolean 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];- Specified by:
hasRecomputeEdgesNormThresholdin interfaceGlopParametersOrBuilder- Returns:
- Whether the recomputeEdgesNormThreshold field is set.
-
getRecomputeEdgesNormThreshold
public double 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];- Specified by:
getRecomputeEdgesNormThresholdin interfaceGlopParametersOrBuilder- Returns:
- The recomputeEdgesNormThreshold.
-
setRecomputeEdgesNormThreshold
public 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:
value- The recomputeEdgesNormThreshold to set.- Returns:
- This builder for chaining.
-
clearRecomputeEdgesNormThreshold
public 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.
-
hasPrimalFeasibilityTolerance
public boolean 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];- Specified by:
hasPrimalFeasibilityTolerancein interfaceGlopParametersOrBuilder- Returns:
- Whether the primalFeasibilityTolerance field is set.
-
getPrimalFeasibilityTolerance
public double 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];- Specified by:
getPrimalFeasibilityTolerancein interfaceGlopParametersOrBuilder- Returns:
- The primalFeasibilityTolerance.
-
setPrimalFeasibilityTolerance
public 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:
value- The primalFeasibilityTolerance to set.- Returns:
- This builder for chaining.
-
clearPrimalFeasibilityTolerance
public 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.
-
hasDualFeasibilityTolerance
public boolean 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];- Specified by:
hasDualFeasibilityTolerancein interfaceGlopParametersOrBuilder- Returns:
- Whether the dualFeasibilityTolerance field is set.
-
getDualFeasibilityTolerance
public double 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];- Specified by:
getDualFeasibilityTolerancein interfaceGlopParametersOrBuilder- Returns:
- The dualFeasibilityTolerance.
-
setDualFeasibilityTolerance
public 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:
value- The dualFeasibilityTolerance to set.- Returns:
- This builder for chaining.
-
clearDualFeasibilityTolerance
public 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.
-
hasRatioTestZeroThreshold
public boolean 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];- Specified by:
hasRatioTestZeroThresholdin interfaceGlopParametersOrBuilder- Returns:
- Whether the ratioTestZeroThreshold field is set.
-
getRatioTestZeroThreshold
public double 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];- Specified by:
getRatioTestZeroThresholdin interfaceGlopParametersOrBuilder- Returns:
- The ratioTestZeroThreshold.
-
setRatioTestZeroThreshold
public 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:
value- The ratioTestZeroThreshold to set.- Returns:
- This builder for chaining.
-
clearRatioTestZeroThreshold
public 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.
-
hasHarrisToleranceRatio
public boolean 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];- Specified by:
hasHarrisToleranceRatioin interfaceGlopParametersOrBuilder- Returns:
- Whether the harrisToleranceRatio field is set.
-
getHarrisToleranceRatio
public double 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];- Specified by:
getHarrisToleranceRatioin interfaceGlopParametersOrBuilder- Returns:
- The harrisToleranceRatio.
-
setHarrisToleranceRatio
public 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:
value- The harrisToleranceRatio to set.- Returns:
- This builder for chaining.
-
clearHarrisToleranceRatio
public 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.
-
hasSmallPivotThreshold
public boolean 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];- Specified by:
hasSmallPivotThresholdin interfaceGlopParametersOrBuilder- Returns:
- Whether the smallPivotThreshold field is set.
-
getSmallPivotThreshold
public double 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];- Specified by:
getSmallPivotThresholdin interfaceGlopParametersOrBuilder- Returns:
- The smallPivotThreshold.
-
setSmallPivotThreshold
public 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:
value- The smallPivotThreshold to set.- Returns:
- This builder for chaining.
-
clearSmallPivotThreshold
public 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.
-
hasMinimumAcceptablePivot
public boolean hasMinimumAcceptablePivot()
We never follow a basis change with a pivot under this threshold.
optional double minimum_acceptable_pivot = 15 [default = 1e-06];- Specified by:
hasMinimumAcceptablePivotin interfaceGlopParametersOrBuilder- Returns:
- Whether the minimumAcceptablePivot field is set.
-
getMinimumAcceptablePivot
public double getMinimumAcceptablePivot()
We never follow a basis change with a pivot under this threshold.
optional double minimum_acceptable_pivot = 15 [default = 1e-06];- Specified by:
getMinimumAcceptablePivotin interfaceGlopParametersOrBuilder- Returns:
- The minimumAcceptablePivot.
-
setMinimumAcceptablePivot
public 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:
value- The minimumAcceptablePivot to set.- Returns:
- This builder for chaining.
-
clearMinimumAcceptablePivot
public 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.
-
hasDropTolerance
public boolean 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];- Specified by:
hasDropTolerancein interfaceGlopParametersOrBuilder- Returns:
- Whether the dropTolerance field is set.
-
getDropTolerance
public double 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];- Specified by:
getDropTolerancein interfaceGlopParametersOrBuilder- Returns:
- The dropTolerance.
-
setDropTolerance
public 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:
value- The dropTolerance to set.- Returns:
- This builder for chaining.
-
clearDropTolerance
public 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.
-
hasUseScaling
public boolean 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];- Specified by:
hasUseScalingin interfaceGlopParametersOrBuilder- Returns:
- Whether the useScaling field is set.
-
getUseScaling
public boolean 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];- Specified by:
getUseScalingin interfaceGlopParametersOrBuilder- Returns:
- The useScaling.
-
setUseScaling
public 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:
value- The useScaling to set.- Returns:
- This builder for chaining.
-
clearUseScaling
public 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.
-
hasCostScaling
public boolean hasCostScaling()
optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];- Specified by:
hasCostScalingin interfaceGlopParametersOrBuilder- Returns:
- Whether the costScaling field is set.
-
getCostScaling
public GlopParameters.CostScalingAlgorithm getCostScaling()
optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];- Specified by:
getCostScalingin interfaceGlopParametersOrBuilder- Returns:
- The costScaling.
-
setCostScaling
public GlopParameters.Builder setCostScaling(GlopParameters.CostScalingAlgorithm value)
optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];- Parameters:
value- The costScaling to set.- Returns:
- This builder for chaining.
-
clearCostScaling
public GlopParameters.Builder clearCostScaling()
optional .operations_research.glop.GlopParameters.CostScalingAlgorithm cost_scaling = 60 [default = CONTAIN_ONE_COST_SCALING];- Returns:
- This builder for chaining.
-
hasInitialBasis
public boolean 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];- Specified by:
hasInitialBasisin interfaceGlopParametersOrBuilder- Returns:
- Whether the initialBasis field is set.
-
getInitialBasis
public GlopParameters.InitialBasisHeuristic 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];- Specified by:
getInitialBasisin interfaceGlopParametersOrBuilder- Returns:
- The initialBasis.
-
setInitialBasis
public GlopParameters.Builder setInitialBasis(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:
value- The initialBasis to set.- Returns:
- This builder for chaining.
-
clearInitialBasis
public 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.
-
hasUseTransposedMatrix
public boolean 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];- Specified by:
hasUseTransposedMatrixin interfaceGlopParametersOrBuilder- Returns:
- Whether the useTransposedMatrix field is set.
-
getUseTransposedMatrix
public boolean 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];- Specified by:
getUseTransposedMatrixin interfaceGlopParametersOrBuilder- Returns:
- The useTransposedMatrix.
-
setUseTransposedMatrix
public 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:
value- The useTransposedMatrix to set.- Returns:
- This builder for chaining.
-
clearUseTransposedMatrix
public 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.
-
hasBasisRefactorizationPeriod
public boolean 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];- Specified by:
hasBasisRefactorizationPeriodin interfaceGlopParametersOrBuilder- Returns:
- Whether the basisRefactorizationPeriod field is set.
-
getBasisRefactorizationPeriod
public int 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];- Specified by:
getBasisRefactorizationPeriodin interfaceGlopParametersOrBuilder- Returns:
- The basisRefactorizationPeriod.
-
setBasisRefactorizationPeriod
public 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:
value- The basisRefactorizationPeriod to set.- Returns:
- This builder for chaining.
-
clearBasisRefactorizationPeriod
public 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.
-
hasDynamicallyAdjustRefactorizationPeriod
public boolean 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];- Specified by:
hasDynamicallyAdjustRefactorizationPeriodin interfaceGlopParametersOrBuilder- Returns:
- Whether the dynamicallyAdjustRefactorizationPeriod field is set.
-
getDynamicallyAdjustRefactorizationPeriod
public boolean 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];- Specified by:
getDynamicallyAdjustRefactorizationPeriodin interfaceGlopParametersOrBuilder- Returns:
- The dynamicallyAdjustRefactorizationPeriod.
-
setDynamicallyAdjustRefactorizationPeriod
public 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:
value- The dynamicallyAdjustRefactorizationPeriod to set.- Returns:
- This builder for chaining.
-
clearDynamicallyAdjustRefactorizationPeriod
public 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.
-
hasSolveDualProblem
public boolean 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];- Specified by:
hasSolveDualProblemin interfaceGlopParametersOrBuilder- Returns:
- Whether the solveDualProblem field is set.
-
getSolveDualProblem
public GlopParameters.SolverBehavior 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];- Specified by:
getSolveDualProblemin interfaceGlopParametersOrBuilder- Returns:
- The solveDualProblem.
-
setSolveDualProblem
public GlopParameters.Builder setSolveDualProblem(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:
value- The solveDualProblem to set.- Returns:
- This builder for chaining.
-
clearSolveDualProblem
public 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.
-
hasDualizerThreshold
public boolean 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];- Specified by:
hasDualizerThresholdin interfaceGlopParametersOrBuilder- Returns:
- Whether the dualizerThreshold field is set.
-
getDualizerThreshold
public double 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];- Specified by:
getDualizerThresholdin interfaceGlopParametersOrBuilder- Returns:
- The dualizerThreshold.
-
setDualizerThreshold
public 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:
value- The dualizerThreshold to set.- Returns:
- This builder for chaining.
-
clearDualizerThreshold
public 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.
-
hasSolutionFeasibilityTolerance
public boolean 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];- Specified by:
hasSolutionFeasibilityTolerancein interfaceGlopParametersOrBuilder- Returns:
- Whether the solutionFeasibilityTolerance field is set.
-
getSolutionFeasibilityTolerance
public double 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];- Specified by:
getSolutionFeasibilityTolerancein interfaceGlopParametersOrBuilder- Returns:
- The solutionFeasibilityTolerance.
-
setSolutionFeasibilityTolerance
public 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:
value- The solutionFeasibilityTolerance to set.- Returns:
- This builder for chaining.
-
clearSolutionFeasibilityTolerance
public 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.
-
hasProvideStrongOptimalGuarantee
public boolean 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];- Specified by:
hasProvideStrongOptimalGuaranteein interfaceGlopParametersOrBuilder- Returns:
- Whether the provideStrongOptimalGuarantee field is set.
-
getProvideStrongOptimalGuarantee
public boolean 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];- Specified by:
getProvideStrongOptimalGuaranteein interfaceGlopParametersOrBuilder- Returns:
- The provideStrongOptimalGuarantee.
-
setProvideStrongOptimalGuarantee
public 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:
value- The provideStrongOptimalGuarantee to set.- Returns:
- This builder for chaining.
-
clearProvideStrongOptimalGuarantee
public 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.
-
hasChangeStatusToImprecise
public boolean 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];- Specified by:
hasChangeStatusToImprecisein interfaceGlopParametersOrBuilder- Returns:
- Whether the changeStatusToImprecise field is set.
-
getChangeStatusToImprecise
public boolean 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];- Specified by:
getChangeStatusToImprecisein interfaceGlopParametersOrBuilder- Returns:
- The changeStatusToImprecise.
-
setChangeStatusToImprecise
public 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:
value- The changeStatusToImprecise to set.- Returns:
- This builder for chaining.
-
clearChangeStatusToImprecise
public 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.
-
hasMaxNumberOfReoptimizations
public boolean 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];- Specified by:
hasMaxNumberOfReoptimizationsin interfaceGlopParametersOrBuilder- Returns:
- Whether the maxNumberOfReoptimizations field is set.
-
getMaxNumberOfReoptimizations
public double 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];- Specified by:
getMaxNumberOfReoptimizationsin interfaceGlopParametersOrBuilder- Returns:
- The maxNumberOfReoptimizations.
-
setMaxNumberOfReoptimizations
public 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:
value- The maxNumberOfReoptimizations to set.- Returns:
- This builder for chaining.
-
clearMaxNumberOfReoptimizations
public 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.
-
hasLuFactorizationPivotThreshold
public boolean 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];- Specified by:
hasLuFactorizationPivotThresholdin interfaceGlopParametersOrBuilder- Returns:
- Whether the luFactorizationPivotThreshold field is set.
-
getLuFactorizationPivotThreshold
public double 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];- Specified by:
getLuFactorizationPivotThresholdin interfaceGlopParametersOrBuilder- Returns:
- The luFactorizationPivotThreshold.
-
setLuFactorizationPivotThreshold
public 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:
value- The luFactorizationPivotThreshold to set.- Returns:
- This builder for chaining.
-
clearLuFactorizationPivotThreshold
public 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.
-
hasMaxTimeInSeconds
public boolean hasMaxTimeInSeconds()
Maximum time allowed in seconds to solve a problem.
optional double max_time_in_seconds = 26 [default = inf];- Specified by:
hasMaxTimeInSecondsin interfaceGlopParametersOrBuilder- Returns:
- Whether the maxTimeInSeconds field is set.
-
getMaxTimeInSeconds
public double getMaxTimeInSeconds()
Maximum time allowed in seconds to solve a problem.
optional double max_time_in_seconds = 26 [default = inf];- Specified by:
getMaxTimeInSecondsin interfaceGlopParametersOrBuilder- Returns:
- The maxTimeInSeconds.
-
setMaxTimeInSeconds
public GlopParameters.Builder setMaxTimeInSeconds(double value)
Maximum time allowed in seconds to solve a problem.
optional double max_time_in_seconds = 26 [default = inf];- Parameters:
value- The maxTimeInSeconds to set.- Returns:
- This builder for chaining.
-
clearMaxTimeInSeconds
public 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.
-
hasMaxDeterministicTime
public boolean 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];- Specified by:
hasMaxDeterministicTimein interfaceGlopParametersOrBuilder- Returns:
- Whether the maxDeterministicTime field is set.
-
getMaxDeterministicTime
public double 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];- Specified by:
getMaxDeterministicTimein interfaceGlopParametersOrBuilder- Returns:
- The maxDeterministicTime.
-
setMaxDeterministicTime
public 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:
value- The maxDeterministicTime to set.- Returns:
- This builder for chaining.
-
clearMaxDeterministicTime
public 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.
-
hasMaxNumberOfIterations
public boolean 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];- Specified by:
hasMaxNumberOfIterationsin interfaceGlopParametersOrBuilder- Returns:
- Whether the maxNumberOfIterations field is set.
-
getMaxNumberOfIterations
public long 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];- Specified by:
getMaxNumberOfIterationsin interfaceGlopParametersOrBuilder- Returns:
- The maxNumberOfIterations.
-
setMaxNumberOfIterations
public 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:
value- The maxNumberOfIterations to set.- Returns:
- This builder for chaining.
-
clearMaxNumberOfIterations
public 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.
-
hasMarkowitzZlatevParameter
public boolean 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];- Specified by:
hasMarkowitzZlatevParameterin interfaceGlopParametersOrBuilder- Returns:
- Whether the markowitzZlatevParameter field is set.
-
getMarkowitzZlatevParameter
public int 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];- Specified by:
getMarkowitzZlatevParameterin interfaceGlopParametersOrBuilder- Returns:
- The markowitzZlatevParameter.
-
setMarkowitzZlatevParameter
public 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:
value- The markowitzZlatevParameter to set.- Returns:
- This builder for chaining.
-
clearMarkowitzZlatevParameter
public 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.
-
hasMarkowitzSingularityThreshold
public boolean 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];- Specified by:
hasMarkowitzSingularityThresholdin interfaceGlopParametersOrBuilder- Returns:
- Whether the markowitzSingularityThreshold field is set.
-
getMarkowitzSingularityThreshold
public double 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];- Specified by:
getMarkowitzSingularityThresholdin interfaceGlopParametersOrBuilder- Returns:
- The markowitzSingularityThreshold.
-
setMarkowitzSingularityThreshold
public 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:
value- The markowitzSingularityThreshold to set.- Returns:
- This builder for chaining.
-
clearMarkowitzSingularityThreshold
public 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.
-
hasUseDualSimplex
public boolean hasUseDualSimplex()
Whether or not we use the dual simplex algorithm instead of the primal.
optional bool use_dual_simplex = 31 [default = false];- Specified by:
hasUseDualSimplexin interfaceGlopParametersOrBuilder- Returns:
- Whether the useDualSimplex field is set.
-
getUseDualSimplex
public boolean getUseDualSimplex()
Whether or not we use the dual simplex algorithm instead of the primal.
optional bool use_dual_simplex = 31 [default = false];- Specified by:
getUseDualSimplexin interfaceGlopParametersOrBuilder- Returns:
- The useDualSimplex.
-
setUseDualSimplex
public 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:
value- The useDualSimplex to set.- Returns:
- This builder for chaining.
-
clearUseDualSimplex
public 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.
-
hasAllowSimplexAlgorithmChange
public boolean 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];- Specified by:
hasAllowSimplexAlgorithmChangein interfaceGlopParametersOrBuilder- Returns:
- Whether the allowSimplexAlgorithmChange field is set.
-
getAllowSimplexAlgorithmChange
public boolean 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];- Specified by:
getAllowSimplexAlgorithmChangein interfaceGlopParametersOrBuilder- Returns:
- The allowSimplexAlgorithmChange.
-
setAllowSimplexAlgorithmChange
public 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:
value- The allowSimplexAlgorithmChange to set.- Returns:
- This builder for chaining.
-
clearAllowSimplexAlgorithmChange
public 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.
-
hasDevexWeightsResetPeriod
public boolean hasDevexWeightsResetPeriod()
Devex weights will be reset to 1.0 after that number of updates.
optional int32 devex_weights_reset_period = 33 [default = 150];- Specified by:
hasDevexWeightsResetPeriodin interfaceGlopParametersOrBuilder- Returns:
- Whether the devexWeightsResetPeriod field is set.
-
getDevexWeightsResetPeriod
public int getDevexWeightsResetPeriod()
Devex weights will be reset to 1.0 after that number of updates.
optional int32 devex_weights_reset_period = 33 [default = 150];- Specified by:
getDevexWeightsResetPeriodin interfaceGlopParametersOrBuilder- Returns:
- The devexWeightsResetPeriod.
-
setDevexWeightsResetPeriod
public 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:
value- The devexWeightsResetPeriod to set.- Returns:
- This builder for chaining.
-
clearDevexWeightsResetPeriod
public 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.
-
hasUsePreprocessing
public boolean hasUsePreprocessing()
Whether or not we use advanced preprocessing techniques.
optional bool use_preprocessing = 34 [default = true];- Specified by:
hasUsePreprocessingin interfaceGlopParametersOrBuilder- Returns:
- Whether the usePreprocessing field is set.
-
getUsePreprocessing
public boolean getUsePreprocessing()
Whether or not we use advanced preprocessing techniques.
optional bool use_preprocessing = 34 [default = true];- Specified by:
getUsePreprocessingin interfaceGlopParametersOrBuilder- Returns:
- The usePreprocessing.
-
setUsePreprocessing
public GlopParameters.Builder setUsePreprocessing(boolean value)
Whether or not we use advanced preprocessing techniques.
optional bool use_preprocessing = 34 [default = true];- Parameters:
value- The usePreprocessing to set.- Returns:
- This builder for chaining.
-
clearUsePreprocessing
public GlopParameters.Builder clearUsePreprocessing()
Whether or not we use advanced preprocessing techniques.
optional bool use_preprocessing = 34 [default = true];- Returns:
- This builder for chaining.
-
hasUseMiddleProductFormUpdate
public boolean 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];- Specified by:
hasUseMiddleProductFormUpdatein interfaceGlopParametersOrBuilder- Returns:
- Whether the useMiddleProductFormUpdate field is set.
-
getUseMiddleProductFormUpdate
public boolean 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];- Specified by:
getUseMiddleProductFormUpdatein interfaceGlopParametersOrBuilder- Returns:
- The useMiddleProductFormUpdate.
-
setUseMiddleProductFormUpdate
public 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:
value- The useMiddleProductFormUpdate to set.- Returns:
- This builder for chaining.
-
clearUseMiddleProductFormUpdate
public 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.
-
hasInitializeDevexWithColumnNorms
public boolean 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];- Specified by:
hasInitializeDevexWithColumnNormsin interfaceGlopParametersOrBuilder- Returns:
- Whether the initializeDevexWithColumnNorms field is set.
-
getInitializeDevexWithColumnNorms
public boolean 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];- Specified by:
getInitializeDevexWithColumnNormsin interfaceGlopParametersOrBuilder- Returns:
- The initializeDevexWithColumnNorms.
-
setInitializeDevexWithColumnNorms
public 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:
value- The initializeDevexWithColumnNorms to set.- Returns:
- This builder for chaining.
-
clearInitializeDevexWithColumnNorms
public 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.
-
hasExploitSingletonColumnInInitialBasis
public boolean 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];- Specified by:
hasExploitSingletonColumnInInitialBasisin interfaceGlopParametersOrBuilder- Returns:
- Whether the exploitSingletonColumnInInitialBasis field is set.
-
getExploitSingletonColumnInInitialBasis
public boolean 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];- Specified by:
getExploitSingletonColumnInInitialBasisin interfaceGlopParametersOrBuilder- Returns:
- The exploitSingletonColumnInInitialBasis.
-
setExploitSingletonColumnInInitialBasis
public 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:
value- The exploitSingletonColumnInInitialBasis to set.- Returns:
- This builder for chaining.
-
clearExploitSingletonColumnInInitialBasis
public 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.
-
hasDualSmallPivotThreshold
public boolean 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];- Specified by:
hasDualSmallPivotThresholdin interfaceGlopParametersOrBuilder- Returns:
- Whether the dualSmallPivotThreshold field is set.
-
getDualSmallPivotThreshold
public double 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];- Specified by:
getDualSmallPivotThresholdin interfaceGlopParametersOrBuilder- Returns:
- The dualSmallPivotThreshold.
-
setDualSmallPivotThreshold
public 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:
value- The dualSmallPivotThreshold to set.- Returns:
- This builder for chaining.
-
clearDualSmallPivotThreshold
public 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.
-
hasPreprocessorZeroTolerance
public boolean 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];- Specified by:
hasPreprocessorZeroTolerancein interfaceGlopParametersOrBuilder- Returns:
- Whether the preprocessorZeroTolerance field is set.
-
getPreprocessorZeroTolerance
public double 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];- Specified by:
getPreprocessorZeroTolerancein interfaceGlopParametersOrBuilder- Returns:
- The preprocessorZeroTolerance.
-
setPreprocessorZeroTolerance
public 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:
value- The preprocessorZeroTolerance to set.- Returns:
- This builder for chaining.
-
clearPreprocessorZeroTolerance
public 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.
-
hasObjectiveLowerLimit
public boolean 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];- Specified by:
hasObjectiveLowerLimitin interfaceGlopParametersOrBuilder- Returns:
- Whether the objectiveLowerLimit field is set.
-
getObjectiveLowerLimit
public double 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];- Specified by:
getObjectiveLowerLimitin interfaceGlopParametersOrBuilder- Returns:
- The objectiveLowerLimit.
-
setObjectiveLowerLimit
public 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:
value- The objectiveLowerLimit to set.- Returns:
- This builder for chaining.
-
clearObjectiveLowerLimit
public 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.
-
hasObjectiveUpperLimit
public boolean hasObjectiveUpperLimit()
optional double objective_upper_limit = 41 [default = inf];- Specified by:
hasObjectiveUpperLimitin interfaceGlopParametersOrBuilder- Returns:
- Whether the objectiveUpperLimit field is set.
-
getObjectiveUpperLimit
public double getObjectiveUpperLimit()
optional double objective_upper_limit = 41 [default = inf];- Specified by:
getObjectiveUpperLimitin interfaceGlopParametersOrBuilder- Returns:
- The objectiveUpperLimit.
-
setObjectiveUpperLimit
public GlopParameters.Builder setObjectiveUpperLimit(double value)
optional double objective_upper_limit = 41 [default = inf];- Parameters:
value- The objectiveUpperLimit to set.- Returns:
- This builder for chaining.
-
clearObjectiveUpperLimit
public GlopParameters.Builder clearObjectiveUpperLimit()
optional double objective_upper_limit = 41 [default = inf];- Returns:
- This builder for chaining.
-
hasDegenerateMinistepFactor
public boolean 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];- Specified by:
hasDegenerateMinistepFactorin interfaceGlopParametersOrBuilder- Returns:
- Whether the degenerateMinistepFactor field is set.
-
getDegenerateMinistepFactor
public double 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];- Specified by:
getDegenerateMinistepFactorin interfaceGlopParametersOrBuilder- Returns:
- The degenerateMinistepFactor.
-
setDegenerateMinistepFactor
public 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:
value- The degenerateMinistepFactor to set.- Returns:
- This builder for chaining.
-
clearDegenerateMinistepFactor
public 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.
-
hasRandomSeed
public boolean 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];- Specified by:
hasRandomSeedin interfaceGlopParametersOrBuilder- Returns:
- Whether the randomSeed field is set.
-
getRandomSeed
public int 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];- Specified by:
getRandomSeedin interfaceGlopParametersOrBuilder- Returns:
- The randomSeed.
-
setRandomSeed
public 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:
value- The randomSeed to set.- Returns:
- This builder for chaining.
-
clearRandomSeed
public 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.
-
hasNumOmpThreads
public boolean 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];- Specified by:
hasNumOmpThreadsin interfaceGlopParametersOrBuilder- Returns:
- Whether the numOmpThreads field is set.
-
getNumOmpThreads
public int 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];- Specified by:
getNumOmpThreadsin interfaceGlopParametersOrBuilder- Returns:
- The numOmpThreads.
-
setNumOmpThreads
public 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:
value- The numOmpThreads to set.- Returns:
- This builder for chaining.
-
clearNumOmpThreads
public 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.
-
hasPerturbCostsInDualSimplex
public boolean 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];- Specified by:
hasPerturbCostsInDualSimplexin interfaceGlopParametersOrBuilder- Returns:
- Whether the perturbCostsInDualSimplex field is set.
-
getPerturbCostsInDualSimplex
public boolean 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];- Specified by:
getPerturbCostsInDualSimplexin interfaceGlopParametersOrBuilder- Returns:
- The perturbCostsInDualSimplex.
-
setPerturbCostsInDualSimplex
public 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:
value- The perturbCostsInDualSimplex to set.- Returns:
- This builder for chaining.
-
clearPerturbCostsInDualSimplex
public 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.
-
hasUseDedicatedDualFeasibilityAlgorithm
public boolean 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];- Specified by:
hasUseDedicatedDualFeasibilityAlgorithmin interfaceGlopParametersOrBuilder- Returns:
- Whether the useDedicatedDualFeasibilityAlgorithm field is set.
-
getUseDedicatedDualFeasibilityAlgorithm
public boolean 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];- Specified by:
getUseDedicatedDualFeasibilityAlgorithmin interfaceGlopParametersOrBuilder- Returns:
- The useDedicatedDualFeasibilityAlgorithm.
-
setUseDedicatedDualFeasibilityAlgorithm
public 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:
value- The useDedicatedDualFeasibilityAlgorithm to set.- Returns:
- This builder for chaining.
-
clearUseDedicatedDualFeasibilityAlgorithm
public 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.
-
hasRelativeCostPerturbation
public boolean 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];- Specified by:
hasRelativeCostPerturbationin interfaceGlopParametersOrBuilder- Returns:
- Whether the relativeCostPerturbation field is set.
-
getRelativeCostPerturbation
public double 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];- Specified by:
getRelativeCostPerturbationin interfaceGlopParametersOrBuilder- Returns:
- The relativeCostPerturbation.
-
setRelativeCostPerturbation
public 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:
value- The relativeCostPerturbation to set.- Returns:
- This builder for chaining.
-
clearRelativeCostPerturbation
public 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.
-
hasRelativeMaxCostPerturbation
public boolean hasRelativeMaxCostPerturbation()
optional double relative_max_cost_perturbation = 55 [default = 1e-07];- Specified by:
hasRelativeMaxCostPerturbationin interfaceGlopParametersOrBuilder- Returns:
- Whether the relativeMaxCostPerturbation field is set.
-
getRelativeMaxCostPerturbation
public double getRelativeMaxCostPerturbation()
optional double relative_max_cost_perturbation = 55 [default = 1e-07];- Specified by:
getRelativeMaxCostPerturbationin interfaceGlopParametersOrBuilder- Returns:
- The relativeMaxCostPerturbation.
-
setRelativeMaxCostPerturbation
public GlopParameters.Builder setRelativeMaxCostPerturbation(double value)
optional double relative_max_cost_perturbation = 55 [default = 1e-07];- Parameters:
value- The relativeMaxCostPerturbation to set.- Returns:
- This builder for chaining.
-
clearRelativeMaxCostPerturbation
public GlopParameters.Builder clearRelativeMaxCostPerturbation()
optional double relative_max_cost_perturbation = 55 [default = 1e-07];- Returns:
- This builder for chaining.
-
hasInitialConditionNumberThreshold
public boolean 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];- Specified by:
hasInitialConditionNumberThresholdin interfaceGlopParametersOrBuilder- Returns:
- Whether the initialConditionNumberThreshold field is set.
-
getInitialConditionNumberThreshold
public double 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];- Specified by:
getInitialConditionNumberThresholdin interfaceGlopParametersOrBuilder- Returns:
- The initialConditionNumberThreshold.
-
setInitialConditionNumberThreshold
public 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:
value- The initialConditionNumberThreshold to set.- Returns:
- This builder for chaining.
-
clearInitialConditionNumberThreshold
public 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.
-
hasLogSearchProgress
public boolean 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];- Specified by:
hasLogSearchProgressin interfaceGlopParametersOrBuilder- Returns:
- Whether the logSearchProgress field is set.
-
getLogSearchProgress
public boolean 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];- Specified by:
getLogSearchProgressin interfaceGlopParametersOrBuilder- Returns:
- The logSearchProgress.
-
setLogSearchProgress
public 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:
value- The logSearchProgress to set.- Returns:
- This builder for chaining.
-
clearLogSearchProgress
public 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.
-
hasLogToStdout
public boolean hasLogToStdout()
If true, logs will be displayed to stdout instead of using Google log info.
optional bool log_to_stdout = 66 [default = true];- Specified by:
hasLogToStdoutin interfaceGlopParametersOrBuilder- Returns:
- Whether the logToStdout field is set.
-
getLogToStdout
public boolean getLogToStdout()
If true, logs will be displayed to stdout instead of using Google log info.
optional bool log_to_stdout = 66 [default = true];- Specified by:
getLogToStdoutin interfaceGlopParametersOrBuilder- Returns:
- The logToStdout.
-
setLogToStdout
public 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:
value- The logToStdout to set.- Returns:
- This builder for chaining.
-
clearLogToStdout
public 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.
-
hasCrossoverBoundSnappingDistance
public boolean 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];- Specified by:
hasCrossoverBoundSnappingDistancein interfaceGlopParametersOrBuilder- Returns:
- Whether the crossoverBoundSnappingDistance field is set.
-
getCrossoverBoundSnappingDistance
public double 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];- Specified by:
getCrossoverBoundSnappingDistancein interfaceGlopParametersOrBuilder- Returns:
- The crossoverBoundSnappingDistance.
-
setCrossoverBoundSnappingDistance
public 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:
value- The crossoverBoundSnappingDistance to set.- Returns:
- This builder for chaining.
-
clearCrossoverBoundSnappingDistance
public 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.
-
hasPushToVertex
public boolean 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];- Specified by:
hasPushToVertexin interfaceGlopParametersOrBuilder- Returns:
- Whether the pushToVertex field is set.
-
getPushToVertex
public boolean 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];- Specified by:
getPushToVertexin interfaceGlopParametersOrBuilder- Returns:
- The pushToVertex.
-
setPushToVertex
public 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:
value- The pushToVertex to set.- Returns:
- This builder for chaining.
-
clearPushToVertex
public 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.
-
hasUseImpliedFreePreprocessor
public boolean hasUseImpliedFreePreprocessor()
If presolve runs, include the pass that detects implied free variables.
optional bool use_implied_free_preprocessor = 67 [default = true];- Specified by:
hasUseImpliedFreePreprocessorin interfaceGlopParametersOrBuilder- Returns:
- Whether the useImpliedFreePreprocessor field is set.
-
getUseImpliedFreePreprocessor
public boolean getUseImpliedFreePreprocessor()
If presolve runs, include the pass that detects implied free variables.
optional bool use_implied_free_preprocessor = 67 [default = true];- Specified by:
getUseImpliedFreePreprocessorin interfaceGlopParametersOrBuilder- Returns:
- The useImpliedFreePreprocessor.
-
setUseImpliedFreePreprocessor
public 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:
value- The useImpliedFreePreprocessor to set.- Returns:
- This builder for chaining.
-
clearUseImpliedFreePreprocessor
public 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.
-
hasMaxValidMagnitude
public boolean 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 = 199 [default = 1e+30];- Specified by:
hasMaxValidMagnitudein interfaceGlopParametersOrBuilder- Returns:
- Whether the maxValidMagnitude field is set.
-
getMaxValidMagnitude
public double 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 = 199 [default = 1e+30];- Specified by:
getMaxValidMagnitudein interfaceGlopParametersOrBuilder- Returns:
- The maxValidMagnitude.
-
setMaxValidMagnitude
public 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 = 199 [default = 1e+30];- Parameters:
value- The maxValidMagnitude to set.- Returns:
- This builder for chaining.
-
clearMaxValidMagnitude
public 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 = 199 [default = 1e+30];- Returns:
- This builder for chaining.
-
hasDualPricePrioritizeNorm
public boolean 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];- Specified by:
hasDualPricePrioritizeNormin interfaceGlopParametersOrBuilder- Returns:
- Whether the dualPricePrioritizeNorm field is set.
-
getDualPricePrioritizeNorm
public boolean 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];- Specified by:
getDualPricePrioritizeNormin interfaceGlopParametersOrBuilder- Returns:
- The dualPricePrioritizeNorm.
-
setDualPricePrioritizeNorm
public 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:
value- The dualPricePrioritizeNorm to set.- Returns:
- This builder for chaining.
-
clearDualPricePrioritizeNorm
public 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.
-
setUnknownFields
public final GlopParameters.Builder setUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields)
- Specified by:
setUnknownFieldsin interfacecom.google.protobuf.Message.Builder- Overrides:
setUnknownFieldsin classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
mergeUnknownFields
public final GlopParameters.Builder mergeUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields)
- Specified by:
mergeUnknownFieldsin interfacecom.google.protobuf.Message.Builder- Overrides:
mergeUnknownFieldsin classcom.google.protobuf.GeneratedMessageV3.Builder<GlopParameters.Builder>
-
-