![]() |
Google OR-Tools v9.14
a fast and portable software suite for combinatorial optimization
|
next id = 73 More...
Classes | |
class | Types |
Container for nested types declared in the GlopParameters message type. More... |
Public Member Functions | |
GlopParameters () | |
GlopParameters (GlopParameters other) | |
GlopParameters | Clone () |
void | ClearScalingMethod () |
Clears the value of the "scaling_method" field. | |
void | ClearFeasibilityRule () |
Clears the value of the "feasibility_rule" field. | |
void | ClearOptimizationRule () |
Clears the value of the "optimization_rule" field. | |
void | ClearRefactorizationThreshold () |
Clears the value of the "refactorization_threshold" field. | |
void | ClearRecomputeReducedCostsThreshold () |
Clears the value of the "recompute_reduced_costs_threshold" field. | |
void | ClearRecomputeEdgesNormThreshold () |
Clears the value of the "recompute_edges_norm_threshold" field. | |
void | ClearPrimalFeasibilityTolerance () |
Clears the value of the "primal_feasibility_tolerance" field. | |
void | ClearDualFeasibilityTolerance () |
Clears the value of the "dual_feasibility_tolerance" field. | |
void | ClearRatioTestZeroThreshold () |
Clears the value of the "ratio_test_zero_threshold" field. | |
void | ClearHarrisToleranceRatio () |
Clears the value of the "harris_tolerance_ratio" field. | |
void | ClearSmallPivotThreshold () |
Clears the value of the "small_pivot_threshold" field. | |
void | ClearMinimumAcceptablePivot () |
Clears the value of the "minimum_acceptable_pivot" field. | |
void | ClearDropTolerance () |
Clears the value of the "drop_tolerance" field. | |
void | ClearUseScaling () |
Clears the value of the "use_scaling" field. | |
void | ClearCostScaling () |
Clears the value of the "cost_scaling" field. | |
void | ClearInitialBasis () |
Clears the value of the "initial_basis" field. | |
void | ClearUseTransposedMatrix () |
Clears the value of the "use_transposed_matrix" field. | |
void | ClearBasisRefactorizationPeriod () |
Clears the value of the "basis_refactorization_period" field. | |
void | ClearDynamicallyAdjustRefactorizationPeriod () |
Clears the value of the "dynamically_adjust_refactorization_period" field. | |
void | ClearSolveDualProblem () |
Clears the value of the "solve_dual_problem" field. | |
void | ClearDualizerThreshold () |
Clears the value of the "dualizer_threshold" field. | |
void | ClearSolutionFeasibilityTolerance () |
Clears the value of the "solution_feasibility_tolerance" field. | |
void | ClearProvideStrongOptimalGuarantee () |
Clears the value of the "provide_strong_optimal_guarantee" field. | |
void | ClearChangeStatusToImprecise () |
Clears the value of the "change_status_to_imprecise" field. | |
void | ClearMaxNumberOfReoptimizations () |
Clears the value of the "max_number_of_reoptimizations" field. | |
void | ClearLuFactorizationPivotThreshold () |
Clears the value of the "lu_factorization_pivot_threshold" field. | |
void | ClearMaxTimeInSeconds () |
Clears the value of the "max_time_in_seconds" field. | |
void | ClearMaxDeterministicTime () |
Clears the value of the "max_deterministic_time" field. | |
void | ClearMaxNumberOfIterations () |
Clears the value of the "max_number_of_iterations" field. | |
void | ClearMarkowitzZlatevParameter () |
Clears the value of the "markowitz_zlatev_parameter" field. | |
void | ClearMarkowitzSingularityThreshold () |
Clears the value of the "markowitz_singularity_threshold" field. | |
void | ClearUseDualSimplex () |
Clears the value of the "use_dual_simplex" field. | |
void | ClearAllowSimplexAlgorithmChange () |
Clears the value of the "allow_simplex_algorithm_change" field. | |
void | ClearDevexWeightsResetPeriod () |
Clears the value of the "devex_weights_reset_period" field. | |
void | ClearUsePreprocessing () |
Clears the value of the "use_preprocessing" field. | |
void | ClearUseMiddleProductFormUpdate () |
Clears the value of the "use_middle_product_form_update" field. | |
void | ClearInitializeDevexWithColumnNorms () |
Clears the value of the "initialize_devex_with_column_norms" field. | |
void | ClearExploitSingletonColumnInInitialBasis () |
Clears the value of the "exploit_singleton_column_in_initial_basis" field. | |
void | ClearDualSmallPivotThreshold () |
Clears the value of the "dual_small_pivot_threshold" field. | |
void | ClearPreprocessorZeroTolerance () |
Clears the value of the "preprocessor_zero_tolerance" field. | |
void | ClearObjectiveLowerLimit () |
Clears the value of the "objective_lower_limit" field. | |
void | ClearObjectiveUpperLimit () |
Clears the value of the "objective_upper_limit" field. | |
void | ClearDegenerateMinistepFactor () |
Clears the value of the "degenerate_ministep_factor" field. | |
void | ClearRandomSeed () |
Clears the value of the "random_seed" field. | |
void | ClearUseAbslRandom () |
Clears the value of the "use_absl_random" field. | |
void | ClearNumOmpThreads () |
Clears the value of the "num_omp_threads" field. | |
void | ClearPerturbCostsInDualSimplex () |
Clears the value of the "perturb_costs_in_dual_simplex" field. | |
void | ClearUseDedicatedDualFeasibilityAlgorithm () |
Clears the value of the "use_dedicated_dual_feasibility_algorithm" field. | |
void | ClearRelativeCostPerturbation () |
Clears the value of the "relative_cost_perturbation" field. | |
void | ClearRelativeMaxCostPerturbation () |
Clears the value of the "relative_max_cost_perturbation" field. | |
void | ClearInitialConditionNumberThreshold () |
Clears the value of the "initial_condition_number_threshold" field. | |
void | ClearLogSearchProgress () |
Clears the value of the "log_search_progress" field. | |
void | ClearLogToStdout () |
Clears the value of the "log_to_stdout" field. | |
void | ClearCrossoverBoundSnappingDistance () |
Clears the value of the "crossover_bound_snapping_distance" field. | |
void | ClearPushToVertex () |
Clears the value of the "push_to_vertex" field. | |
void | ClearUseImpliedFreePreprocessor () |
Clears the value of the "use_implied_free_preprocessor" field. | |
void | ClearMaxValidMagnitude () |
Clears the value of the "max_valid_magnitude" field. | |
void | ClearDropMagnitude () |
Clears the value of the "drop_magnitude" field. | |
void | ClearDualPricePrioritizeNorm () |
Clears the value of the "dual_price_prioritize_norm" field. | |
override bool | Equals (object other) |
bool | Equals (GlopParameters other) |
override int | GetHashCode () |
override string | ToString () |
void | WriteTo (pb::CodedOutputStream output) |
int | CalculateSize () |
void | MergeFrom (GlopParameters other) |
void | MergeFrom (pb::CodedInputStream input) |
Static Public Attributes | |
const int | ScalingMethodFieldNumber = 57 |
Field number for the "scaling_method" field. | |
const int | FeasibilityRuleFieldNumber = 1 |
Field number for the "feasibility_rule" field. | |
const int | OptimizationRuleFieldNumber = 2 |
Field number for the "optimization_rule" field. | |
const int | RefactorizationThresholdFieldNumber = 6 |
Field number for the "refactorization_threshold" field. | |
const int | RecomputeReducedCostsThresholdFieldNumber = 8 |
Field number for the "recompute_reduced_costs_threshold" field. | |
const int | RecomputeEdgesNormThresholdFieldNumber = 9 |
Field number for the "recompute_edges_norm_threshold" field. | |
const int | PrimalFeasibilityToleranceFieldNumber = 10 |
Field number for the "primal_feasibility_tolerance" field. | |
const int | DualFeasibilityToleranceFieldNumber = 11 |
Field number for the "dual_feasibility_tolerance" field. | |
const int | RatioTestZeroThresholdFieldNumber = 12 |
Field number for the "ratio_test_zero_threshold" field. | |
const int | HarrisToleranceRatioFieldNumber = 13 |
Field number for the "harris_tolerance_ratio" field. | |
const int | SmallPivotThresholdFieldNumber = 14 |
Field number for the "small_pivot_threshold" field. | |
const int | MinimumAcceptablePivotFieldNumber = 15 |
Field number for the "minimum_acceptable_pivot" field. | |
const int | DropToleranceFieldNumber = 52 |
Field number for the "drop_tolerance" field. | |
const int | UseScalingFieldNumber = 16 |
Field number for the "use_scaling" field. | |
const int | CostScalingFieldNumber = 60 |
Field number for the "cost_scaling" field. | |
const int | InitialBasisFieldNumber = 17 |
Field number for the "initial_basis" field. | |
const int | UseTransposedMatrixFieldNumber = 18 |
Field number for the "use_transposed_matrix" field. | |
const int | BasisRefactorizationPeriodFieldNumber = 19 |
Field number for the "basis_refactorization_period" field. | |
const int | DynamicallyAdjustRefactorizationPeriodFieldNumber = 63 |
Field number for the "dynamically_adjust_refactorization_period" field. | |
const int | SolveDualProblemFieldNumber = 20 |
Field number for the "solve_dual_problem" field. | |
const int | DualizerThresholdFieldNumber = 21 |
Field number for the "dualizer_threshold" field. | |
const int | SolutionFeasibilityToleranceFieldNumber = 22 |
Field number for the "solution_feasibility_tolerance" field. | |
const int | ProvideStrongOptimalGuaranteeFieldNumber = 24 |
Field number for the "provide_strong_optimal_guarantee" field. | |
const int | ChangeStatusToImpreciseFieldNumber = 58 |
Field number for the "change_status_to_imprecise" field. | |
const int | MaxNumberOfReoptimizationsFieldNumber = 56 |
Field number for the "max_number_of_reoptimizations" field. | |
const int | LuFactorizationPivotThresholdFieldNumber = 25 |
Field number for the "lu_factorization_pivot_threshold" field. | |
const int | MaxTimeInSecondsFieldNumber = 26 |
Field number for the "max_time_in_seconds" field. | |
const int | MaxDeterministicTimeFieldNumber = 45 |
Field number for the "max_deterministic_time" field. | |
const int | MaxNumberOfIterationsFieldNumber = 27 |
Field number for the "max_number_of_iterations" field. | |
const int | MarkowitzZlatevParameterFieldNumber = 29 |
Field number for the "markowitz_zlatev_parameter" field. | |
const int | MarkowitzSingularityThresholdFieldNumber = 30 |
Field number for the "markowitz_singularity_threshold" field. | |
const int | UseDualSimplexFieldNumber = 31 |
Field number for the "use_dual_simplex" field. | |
const int | AllowSimplexAlgorithmChangeFieldNumber = 32 |
Field number for the "allow_simplex_algorithm_change" field. | |
const int | DevexWeightsResetPeriodFieldNumber = 33 |
Field number for the "devex_weights_reset_period" field. | |
const int | UsePreprocessingFieldNumber = 34 |
Field number for the "use_preprocessing" field. | |
const int | UseMiddleProductFormUpdateFieldNumber = 35 |
Field number for the "use_middle_product_form_update" field. | |
const int | InitializeDevexWithColumnNormsFieldNumber = 36 |
Field number for the "initialize_devex_with_column_norms" field. | |
const int | ExploitSingletonColumnInInitialBasisFieldNumber = 37 |
Field number for the "exploit_singleton_column_in_initial_basis" field. | |
const int | DualSmallPivotThresholdFieldNumber = 38 |
Field number for the "dual_small_pivot_threshold" field. | |
const int | PreprocessorZeroToleranceFieldNumber = 39 |
Field number for the "preprocessor_zero_tolerance" field. | |
const int | ObjectiveLowerLimitFieldNumber = 40 |
Field number for the "objective_lower_limit" field. | |
const int | ObjectiveUpperLimitFieldNumber = 41 |
Field number for the "objective_upper_limit" field. | |
const int | DegenerateMinistepFactorFieldNumber = 42 |
Field number for the "degenerate_ministep_factor" field. | |
const int | RandomSeedFieldNumber = 43 |
Field number for the "random_seed" field. | |
const int | UseAbslRandomFieldNumber = 72 |
Field number for the "use_absl_random" field. | |
const int | NumOmpThreadsFieldNumber = 44 |
Field number for the "num_omp_threads" field. | |
const int | PerturbCostsInDualSimplexFieldNumber = 53 |
Field number for the "perturb_costs_in_dual_simplex" field. | |
const int | UseDedicatedDualFeasibilityAlgorithmFieldNumber = 62 |
Field number for the "use_dedicated_dual_feasibility_algorithm" field. | |
const int | RelativeCostPerturbationFieldNumber = 54 |
Field number for the "relative_cost_perturbation" field. | |
const int | RelativeMaxCostPerturbationFieldNumber = 55 |
Field number for the "relative_max_cost_perturbation" field. | |
const int | InitialConditionNumberThresholdFieldNumber = 59 |
Field number for the "initial_condition_number_threshold" field. | |
const int | LogSearchProgressFieldNumber = 61 |
Field number for the "log_search_progress" field. | |
const int | LogToStdoutFieldNumber = 66 |
Field number for the "log_to_stdout" field. | |
const int | CrossoverBoundSnappingDistanceFieldNumber = 64 |
Field number for the "crossover_bound_snapping_distance" field. | |
const int | PushToVertexFieldNumber = 65 |
Field number for the "push_to_vertex" field. | |
const int | UseImpliedFreePreprocessorFieldNumber = 67 |
Field number for the "use_implied_free_preprocessor" field. | |
const int | MaxValidMagnitudeFieldNumber = 70 |
Field number for the "max_valid_magnitude" field. | |
const int | DropMagnitudeFieldNumber = 71 |
Field number for the "drop_magnitude" field. | |
const int | DualPricePrioritizeNormFieldNumber = 69 |
Field number for the "dual_price_prioritize_norm" field. |
Properties | |
static pb::MessageParser< GlopParameters > | Parser [get] |
static pbr::MessageDescriptor | Descriptor [get] |
global::Google.OrTools.Glop.GlopParameters.Types.ScalingAlgorithm | ScalingMethod [get, set] |
bool | HasScalingMethod [get] |
Gets whether the "scaling_method" field is set. | |
global::Google.OrTools.Glop.GlopParameters.Types.PricingRule | FeasibilityRule [get, set] |
PricingRule to use during the feasibility phase. | |
bool | HasFeasibilityRule [get] |
Gets whether the "feasibility_rule" field is set. | |
global::Google.OrTools.Glop.GlopParameters.Types.PricingRule | OptimizationRule [get, set] |
PricingRule to use during the optimization phase. | |
bool | HasOptimizationRule [get] |
Gets whether the "optimization_rule" field is set. | |
double | RefactorizationThreshold [get, set] |
We estimate the factorization accuracy of B during each pivot by using the fact that we can compute the pivot coefficient in two ways: | |
bool | HasRefactorizationThreshold [get] |
Gets whether the "refactorization_threshold" field is set. | |
double | RecomputeReducedCostsThreshold [get, set] |
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. | |
bool | HasRecomputeReducedCostsThreshold [get] |
Gets whether the "recompute_reduced_costs_threshold" field is set. | |
double | RecomputeEdgesNormThreshold [get, set] |
bool | HasRecomputeEdgesNormThreshold [get] |
Gets whether the "recompute_edges_norm_threshold" field is set. | |
double | PrimalFeasibilityTolerance [get, set] |
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. | |
bool | HasPrimalFeasibilityTolerance [get] |
Gets whether the "primal_feasibility_tolerance" field is set. | |
double | DualFeasibilityTolerance [get, set] |
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. | |
bool | HasDualFeasibilityTolerance [get] |
Gets whether the "dual_feasibility_tolerance" field is set. | |
double | RatioTestZeroThreshold [get, set] |
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. | |
bool | HasRatioTestZeroThreshold [get] |
Gets whether the "ratio_test_zero_threshold" field is set. | |
double | HarrisToleranceRatio [get, set] |
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. | |
bool | HasHarrisToleranceRatio [get] |
Gets whether the "harris_tolerance_ratio" field is set. | |
double | SmallPivotThreshold [get, set] |
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. | |
bool | HasSmallPivotThreshold [get] |
Gets whether the "small_pivot_threshold" field is set. | |
double | MinimumAcceptablePivot [get, set] |
We never follow a basis change with a pivot under this threshold. | |
bool | HasMinimumAcceptablePivot [get] |
Gets whether the "minimum_acceptable_pivot" field is set. | |
double | DropTolerance [get, set] |
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. | |
bool | HasDropTolerance [get] |
Gets whether the "drop_tolerance" field is set. | |
bool | UseScaling [get, set] |
Whether or not we scale the matrix A so that the maximum coefficient on each line and each column is 1.0. | |
bool | HasUseScaling [get] |
Gets whether the "use_scaling" field is set. | |
global::Google.OrTools.Glop.GlopParameters.Types.CostScalingAlgorithm | CostScaling [get, set] |
bool | HasCostScaling [get] |
Gets whether the "cost_scaling" field is set. | |
global::Google.OrTools.Glop.GlopParameters.Types.InitialBasisHeuristic | InitialBasis [get, set] |
What heuristic is used to try to replace the fixed slack columns in the initial basis of the primal simplex. | |
bool | HasInitialBasis [get] |
Gets whether the "initial_basis" field is set. | |
bool | UseTransposedMatrix [get, set] |
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. | |
bool | HasUseTransposedMatrix [get] |
Gets whether the "use_transposed_matrix" field is set. | |
int | BasisRefactorizationPeriod [get, set] |
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. | |
bool | HasBasisRefactorizationPeriod [get] |
Gets whether the "basis_refactorization_period" field is set. | |
bool | DynamicallyAdjustRefactorizationPeriod [get, set] |
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. | |
bool | HasDynamicallyAdjustRefactorizationPeriod [get] |
Gets whether the "dynamically_adjust_refactorization_period" field is set. | |
global::Google.OrTools.Glop.GlopParameters.Types.SolverBehavior | SolveDualProblem [get, set] |
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). | |
bool | HasSolveDualProblem [get] |
Gets whether the "solve_dual_problem" field is set. | |
double | DualizerThreshold [get, set] |
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. | |
bool | HasDualizerThreshold [get] |
Gets whether the "dualizer_threshold" field is set. | |
double | SolutionFeasibilityTolerance [get, set] |
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. | |
bool | HasSolutionFeasibilityTolerance [get] |
Gets whether the "solution_feasibility_tolerance" field is set. | |
bool | ProvideStrongOptimalGuarantee [get, set] |
If true, then when the solver returns a solution with an OPTIMAL status, we can guarantee that: | |
bool | HasProvideStrongOptimalGuarantee [get] |
Gets whether the "provide_strong_optimal_guarantee" field is set. | |
bool | ChangeStatusToImprecise [get, set] |
If true, the internal API will change the return status to imprecise if the solution does not respect the internal tolerances. | |
bool | HasChangeStatusToImprecise [get] |
Gets whether the "change_status_to_imprecise" field is set. | |
double | MaxNumberOfReoptimizations [get, set] |
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. | |
bool | HasMaxNumberOfReoptimizations [get] |
Gets whether the "max_number_of_reoptimizations" field is set. | |
double | LuFactorizationPivotThreshold [get, set] |
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]. | |
bool | HasLuFactorizationPivotThreshold [get] |
Gets whether the "lu_factorization_pivot_threshold" field is set. | |
double | MaxTimeInSeconds [get, set] |
Maximum time allowed in seconds to solve a problem. | |
bool | HasMaxTimeInSeconds [get] |
Gets whether the "max_time_in_seconds" field is set. | |
double | MaxDeterministicTime [get, set] |
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). | |
bool | HasMaxDeterministicTime [get] |
Gets whether the "max_deterministic_time" field is set. | |
long | MaxNumberOfIterations [get, set] |
Maximum number of simplex iterations to solve a problem. A value of -1 means no limit. | |
bool | HasMaxNumberOfIterations [get] |
Gets whether the "max_number_of_iterations" field is set. | |
int | MarkowitzZlatevParameter [get, set] |
How many columns do we look at in the Markowitz pivoting rule to find a good pivot. See markowitz.h. | |
bool | HasMarkowitzZlatevParameter [get] |
Gets whether the "markowitz_zlatev_parameter" field is set. | |
double | MarkowitzSingularityThreshold [get, set] |
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). | |
bool | HasMarkowitzSingularityThreshold [get] |
Gets whether the "markowitz_singularity_threshold" field is set. | |
bool | UseDualSimplex [get, set] |
Whether or not we use the dual simplex algorithm instead of the primal. | |
bool | HasUseDualSimplex [get] |
Gets whether the "use_dual_simplex" field is set. | |
bool | AllowSimplexAlgorithmChange [get, set] |
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. | |
bool | HasAllowSimplexAlgorithmChange [get] |
Gets whether the "allow_simplex_algorithm_change" field is set. | |
int | DevexWeightsResetPeriod [get, set] |
Devex weights will be reset to 1.0 after that number of updates. | |
bool | HasDevexWeightsResetPeriod [get] |
Gets whether the "devex_weights_reset_period" field is set. | |
bool | UsePreprocessing [get, set] |
Whether or not we use advanced preprocessing techniques. | |
bool | HasUsePreprocessing [get] |
Gets whether the "use_preprocessing" field is set. | |
bool | UseMiddleProductFormUpdate [get, set] |
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. | |
bool | HasUseMiddleProductFormUpdate [get] |
Gets whether the "use_middle_product_form_update" field is set. | |
bool | InitializeDevexWithColumnNorms [get, set] |
Whether we initialize devex weights to 1.0 or to the norms of the matrix columns. | |
bool | HasInitializeDevexWithColumnNorms [get] |
Gets whether the "initialize_devex_with_column_norms" field is set. | |
bool | ExploitSingletonColumnInInitialBasis [get, set] |
Whether or not we exploit the singleton columns already present in the problem when we create the initial basis. | |
bool | HasExploitSingletonColumnInInitialBasis [get] |
Gets whether the "exploit_singleton_column_in_initial_basis" field is set. | |
double | DualSmallPivotThreshold [get, set] |
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. | |
bool | HasDualSmallPivotThreshold [get] |
Gets whether the "dual_small_pivot_threshold" field is set. | |
double | PreprocessorZeroTolerance [get, set] |
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. | |
bool | HasPreprocessorZeroTolerance [get] |
Gets whether the "preprocessor_zero_tolerance" field is set. | |
double | ObjectiveLowerLimit [get, set] |
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,. | |
bool | HasObjectiveLowerLimit [get] |
Gets whether the "objective_lower_limit" field is set. | |
double | ObjectiveUpperLimit [get, set] |
bool | HasObjectiveUpperLimit [get] |
Gets whether the "objective_upper_limit" field is set. | |
double | DegenerateMinistepFactor [get, set] |
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. | |
bool | HasDegenerateMinistepFactor [get] |
Gets whether the "degenerate_ministep_factor" field is set. | |
int | RandomSeed [get, set] |
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. | |
bool | HasRandomSeed [get] |
Gets whether the "random_seed" field is set. | |
bool | UseAbslRandom [get, set] |
Whether to use absl::BitGen instead of MTRandom. | |
bool | HasUseAbslRandom [get] |
Gets whether the "use_absl_random" field is set. | |
int | NumOmpThreads [get, set] |
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. | |
bool | HasNumOmpThreads [get] |
Gets whether the "num_omp_threads" field is set. | |
bool | PerturbCostsInDualSimplex [get, set] |
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. | |
bool | HasPerturbCostsInDualSimplex [get] |
Gets whether the "perturb_costs_in_dual_simplex" field is set. | |
bool | UseDedicatedDualFeasibilityAlgorithm [get, set] |
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. | |
bool | HasUseDedicatedDualFeasibilityAlgorithm [get] |
Gets whether the "use_dedicated_dual_feasibility_algorithm" field is set. | |
double | RelativeCostPerturbation [get, set] |
The magnitude of the cost perturbation is given by RandomIn(1.0, 2.0) * ( relative_cost_perturbation * cost. | |
bool | HasRelativeCostPerturbation [get] |
Gets whether the "relative_cost_perturbation" field is set. | |
double | RelativeMaxCostPerturbation [get, set] |
bool | HasRelativeMaxCostPerturbation [get] |
Gets whether the "relative_max_cost_perturbation" field is set. | |
double | InitialConditionNumberThreshold [get, set] |
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. | |
bool | HasInitialConditionNumberThreshold [get] |
Gets whether the "initial_condition_number_threshold" field is set. | |
bool | LogSearchProgress [get, set] |
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. | |
bool | HasLogSearchProgress [get] |
Gets whether the "log_search_progress" field is set. | |
bool | LogToStdout [get, set] |
If true, logs will be displayed to stdout instead of using Google log info. | |
bool | HasLogToStdout [get] |
Gets whether the "log_to_stdout" field is set. | |
double | CrossoverBoundSnappingDistance [get, set] |
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. | |
bool | HasCrossoverBoundSnappingDistance [get] |
Gets whether the "crossover_bound_snapping_distance" field is set. | |
bool | PushToVertex [get, set] |
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(). | |
bool | HasPushToVertex [get] |
Gets whether the "push_to_vertex" field is set. | |
bool | UseImpliedFreePreprocessor [get, set] |
If presolve runs, include the pass that detects implied free variables. | |
bool | HasUseImpliedFreePreprocessor [get] |
Gets whether the "use_implied_free_preprocessor" field is set. | |
double | MaxValidMagnitude [get, set] |
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. | |
bool | HasMaxValidMagnitude [get] |
Gets whether the "max_valid_magnitude" field is set. | |
double | DropMagnitude [get, set] |
Value in the input LP lower than this will be ignored. This is similar to drop_tolerance but more aggressive as this is used before scaling. This is mainly here to avoid underflow and have simpler invariant in the code, like a * b == 0 iff a or b is zero and things like this. | |
bool | HasDropMagnitude [get] |
Gets whether the "drop_magnitude" field is set. | |
bool | DualPricePrioritizeNorm [get, set] |
On some problem like stp3d or pds-100 this makes a huge difference in speed and number of iterations of the dual simplex. | |
bool | HasDualPricePrioritizeNorm [get] |
Gets whether the "dual_price_prioritize_norm" field is set. |
next id = 73
Definition at line 115 of file Parameters.pb.cs.
|
inline |
Definition at line 142 of file Parameters.pb.cs.
|
inline |
Definition at line 150 of file Parameters.pb.cs.
|
inline |
Definition at line 2852 of file Parameters.pb.cs.
|
inline |
Clears the value of the "allow_simplex_algorithm_change" field.
Definition at line 1316 of file Parameters.pb.cs.
|
inline |
Clears the value of the "basis_refactorization_period" field.
Definition at line 811 of file Parameters.pb.cs.
|
inline |
Clears the value of the "change_status_to_imprecise" field.
Definition at line 1027 of file Parameters.pb.cs.
|
inline |
Clears the value of the "cost_scaling" field.
Definition at line 716 of file Parameters.pb.cs.
|
inline |
Clears the value of the "crossover_bound_snapping_distance" field.
Definition at line 2036 of file Parameters.pb.cs.
|
inline |
Clears the value of the "degenerate_ministep_factor" field.
Definition at line 1657 of file Parameters.pb.cs.
|
inline |
Clears the value of the "devex_weights_reset_period" field.
Definition at line 1346 of file Parameters.pb.cs.
|
inline |
Clears the value of the "drop_magnitude" field.
Definition at line 2169 of file Parameters.pb.cs.
|
inline |
Clears the value of the "drop_tolerance" field.
Definition at line 658 of file Parameters.pb.cs.
|
inline |
Clears the value of the "dual_feasibility_tolerance" field.
Definition at line 485 of file Parameters.pb.cs.
|
inline |
Clears the value of the "dualizer_threshold" field.
Definition at line 909 of file Parameters.pb.cs.
|
inline |
Clears the value of the "dual_price_prioritize_norm" field.
Definition at line 2200 of file Parameters.pb.cs.
|
inline |
Clears the value of the "dual_small_pivot_threshold" field.
Definition at line 1506 of file Parameters.pb.cs.
|
inline |
Clears the value of the "dynamically_adjust_refactorization_period" field.
Definition at line 845 of file Parameters.pb.cs.
|
inline |
Clears the value of the "exploit_singleton_column_in_initial_basis" field.
Definition at line 1474 of file Parameters.pb.cs.
|
inline |
Clears the value of the "feasibility_rule" field.
Definition at line 274 of file Parameters.pb.cs.
|
inline |
Clears the value of the "harris_tolerance_ratio" field.
Definition at line 563 of file Parameters.pb.cs.
|
inline |
Clears the value of the "initial_basis" field.
Definition at line 747 of file Parameters.pb.cs.
|
inline |
Clears the value of the "initial_condition_number_threshold" field.
Definition at line 1927 of file Parameters.pb.cs.
|
inline |
Clears the value of the "initialize_devex_with_column_norms" field.
Definition at line 1443 of file Parameters.pb.cs.
|
inline |
Clears the value of the "log_search_progress" field.
Definition at line 1959 of file Parameters.pb.cs.
|
inline |
Clears the value of the "log_to_stdout" field.
Definition at line 1989 of file Parameters.pb.cs.
|
inline |
Clears the value of the "lu_factorization_pivot_threshold" field.
Definition at line 1093 of file Parameters.pb.cs.
|
inline |
Clears the value of the "markowitz_singularity_threshold" field.
Definition at line 1253 of file Parameters.pb.cs.
|
inline |
Clears the value of the "markowitz_zlatev_parameter" field.
Definition at line 1220 of file Parameters.pb.cs.
|
inline |
Clears the value of the "max_deterministic_time" field.
Definition at line 1158 of file Parameters.pb.cs.
|
inline |
Clears the value of the "max_number_of_iterations" field.
Definition at line 1189 of file Parameters.pb.cs.
|
inline |
Clears the value of the "max_number_of_reoptimizations" field.
Definition at line 1060 of file Parameters.pb.cs.
|
inline |
Clears the value of the "max_time_in_seconds" field.
Definition at line 1123 of file Parameters.pb.cs.
|
inline |
Clears the value of the "max_valid_magnitude" field.
Definition at line 2136 of file Parameters.pb.cs.
|
inline |
Clears the value of the "minimum_acceptable_pivot" field.
Definition at line 626 of file Parameters.pb.cs.
|
inline |
Clears the value of the "num_omp_threads" field.
Definition at line 1764 of file Parameters.pb.cs.
|
inline |
Clears the value of the "objective_lower_limit" field.
Definition at line 1581 of file Parameters.pb.cs.
|
inline |
Clears the value of the "objective_upper_limit" field.
Definition at line 1608 of file Parameters.pb.cs.
|
inline |
Clears the value of the "optimization_rule" field.
Definition at line 304 of file Parameters.pb.cs.
|
inline |
Clears the value of the "perturb_costs_in_dual_simplex" field.
Definition at line 1797 of file Parameters.pb.cs.
|
inline |
Clears the value of the "preprocessor_zero_tolerance" field.
Definition at line 1542 of file Parameters.pb.cs.
|
inline |
Clears the value of the "primal_feasibility_tolerance" field.
Definition at line 444 of file Parameters.pb.cs.
|
inline |
Clears the value of the "provide_strong_optimal_guarantee" field.
Definition at line 996 of file Parameters.pb.cs.
|
inline |
Clears the value of the "push_to_vertex" field.
Definition at line 2071 of file Parameters.pb.cs.
|
inline |
Clears the value of the "random_seed" field.
Definition at line 1703 of file Parameters.pb.cs.
|
inline |
Clears the value of the "ratio_test_zero_threshold" field.
Definition at line 522 of file Parameters.pb.cs.
|
inline |
Clears the value of the "recompute_edges_norm_threshold" field.
Definition at line 407 of file Parameters.pb.cs.
|
inline |
Clears the value of the "recompute_reduced_costs_threshold" field.
Definition at line 373 of file Parameters.pb.cs.
|
inline |
Clears the value of the "refactorization_threshold" field.
Definition at line 339 of file Parameters.pb.cs.
|
inline |
Clears the value of the "relative_cost_perturbation" field.
Definition at line 1868 of file Parameters.pb.cs.
|
inline |
Clears the value of the "relative_max_cost_perturbation" field.
Definition at line 1895 of file Parameters.pb.cs.
|
inline |
Clears the value of the "scaling_method" field.
Definition at line 244 of file Parameters.pb.cs.
|
inline |
Clears the value of the "small_pivot_threshold" field.
Definition at line 596 of file Parameters.pb.cs.
|
inline |
Clears the value of the "solution_feasibility_tolerance" field.
Definition at line 947 of file Parameters.pb.cs.
|
inline |
Clears the value of the "solve_dual_problem" field.
Definition at line 877 of file Parameters.pb.cs.
|
inline |
Clears the value of the "use_absl_random" field.
Definition at line 1733 of file Parameters.pb.cs.
|
inline |
Clears the value of the "use_dedicated_dual_feasibility_algorithm" field.
Definition at line 1835 of file Parameters.pb.cs.
|
inline |
Clears the value of the "use_dual_simplex" field.
Definition at line 1283 of file Parameters.pb.cs.
|
inline |
Clears the value of the "use_implied_free_preprocessor" field.
Definition at line 2101 of file Parameters.pb.cs.
|
inline |
Clears the value of the "use_middle_product_form_update" field.
Definition at line 1412 of file Parameters.pb.cs.
|
inline |
Clears the value of the "use_preprocessing" field.
Definition at line 1376 of file Parameters.pb.cs.
|
inline |
Clears the value of the "use_scaling" field.
Definition at line 689 of file Parameters.pb.cs.
|
inline |
Clears the value of the "use_transposed_matrix" field.
Definition at line 779 of file Parameters.pb.cs.
|
inline |
Definition at line 217 of file Parameters.pb.cs.
|
inline |
Definition at line 2212 of file Parameters.pb.cs.
|
inline |
Definition at line 2206 of file Parameters.pb.cs.
|
inline |
Definition at line 2283 of file Parameters.pb.cs.
|
inline |
Definition at line 3039 of file Parameters.pb.cs.
|
inline |
Definition at line 3225 of file Parameters.pb.cs.
|
inline |
Definition at line 2352 of file Parameters.pb.cs.
|
inline |
Definition at line 2358 of file Parameters.pb.cs.
|
static |
Field number for the "allow_simplex_algorithm_change" field.
Definition at line 1288 of file Parameters.pb.cs.
|
static |
Field number for the "basis_refactorization_period" field.
Definition at line 784 of file Parameters.pb.cs.
|
static |
Field number for the "change_status_to_imprecise" field.
Definition at line 1001 of file Parameters.pb.cs.
|
static |
Field number for the "cost_scaling" field.
Definition at line 694 of file Parameters.pb.cs.
|
static |
Field number for the "crossover_bound_snapping_distance" field.
Definition at line 1994 of file Parameters.pb.cs.
|
static |
Field number for the "degenerate_ministep_factor" field.
Definition at line 1613 of file Parameters.pb.cs.
|
static |
Field number for the "devex_weights_reset_period" field.
Definition at line 1321 of file Parameters.pb.cs.
|
static |
Field number for the "drop_magnitude" field.
Definition at line 2141 of file Parameters.pb.cs.
|
static |
Field number for the "drop_tolerance" field.
Definition at line 631 of file Parameters.pb.cs.
|
static |
Field number for the "dual_feasibility_tolerance" field.
Definition at line 449 of file Parameters.pb.cs.
|
static |
Field number for the "dualizer_threshold" field.
Definition at line 882 of file Parameters.pb.cs.
|
static |
Field number for the "dual_price_prioritize_norm" field.
Definition at line 2174 of file Parameters.pb.cs.
|
static |
Field number for the "dual_small_pivot_threshold" field.
Definition at line 1479 of file Parameters.pb.cs.
|
static |
Field number for the "dynamically_adjust_refactorization_period" field.
Definition at line 816 of file Parameters.pb.cs.
|
static |
Field number for the "exploit_singleton_column_in_initial_basis" field.
Definition at line 1448 of file Parameters.pb.cs.
|
static |
Field number for the "feasibility_rule" field.
Definition at line 249 of file Parameters.pb.cs.
|
static |
Field number for the "harris_tolerance_ratio" field.
Definition at line 527 of file Parameters.pb.cs.
|
static |
Field number for the "initial_basis" field.
Definition at line 721 of file Parameters.pb.cs.
|
static |
Field number for the "initial_condition_number_threshold" field.
Definition at line 1900 of file Parameters.pb.cs.
|
static |
Field number for the "initialize_devex_with_column_norms" field.
Definition at line 1417 of file Parameters.pb.cs.
|
static |
Field number for the "log_search_progress" field.
Definition at line 1932 of file Parameters.pb.cs.
|
static |
Field number for the "log_to_stdout" field.
Definition at line 1964 of file Parameters.pb.cs.
|
static |
Field number for the "lu_factorization_pivot_threshold" field.
Definition at line 1065 of file Parameters.pb.cs.
|
static |
Field number for the "markowitz_singularity_threshold" field.
Definition at line 1225 of file Parameters.pb.cs.
|
static |
Field number for the "markowitz_zlatev_parameter" field.
Definition at line 1194 of file Parameters.pb.cs.
|
static |
Field number for the "max_deterministic_time" field.
Definition at line 1128 of file Parameters.pb.cs.
|
static |
Field number for the "max_number_of_iterations" field.
Definition at line 1163 of file Parameters.pb.cs.
|
static |
Field number for the "max_number_of_reoptimizations" field.
Definition at line 1032 of file Parameters.pb.cs.
|
static |
Field number for the "max_time_in_seconds" field.
Definition at line 1098 of file Parameters.pb.cs.
|
static |
Field number for the "max_valid_magnitude" field.
Definition at line 2106 of file Parameters.pb.cs.
|
static |
Field number for the "minimum_acceptable_pivot" field.
Definition at line 601 of file Parameters.pb.cs.
|
static |
Field number for the "num_omp_threads" field.
Definition at line 1738 of file Parameters.pb.cs.
|
static |
Field number for the "objective_lower_limit" field.
Definition at line 1547 of file Parameters.pb.cs.
|
static |
Field number for the "objective_upper_limit" field.
Definition at line 1586 of file Parameters.pb.cs.
|
static |
Field number for the "optimization_rule" field.
Definition at line 279 of file Parameters.pb.cs.
|
static |
Field number for the "perturb_costs_in_dual_simplex" field.
Definition at line 1769 of file Parameters.pb.cs.
|
static |
Field number for the "preprocessor_zero_tolerance" field.
Definition at line 1511 of file Parameters.pb.cs.
|
static |
Field number for the "primal_feasibility_tolerance" field.
Definition at line 412 of file Parameters.pb.cs.
|
static |
Field number for the "provide_strong_optimal_guarantee" field.
Definition at line 952 of file Parameters.pb.cs.
|
static |
Field number for the "push_to_vertex" field.
Definition at line 2041 of file Parameters.pb.cs.
|
static |
Field number for the "random_seed" field.
Definition at line 1662 of file Parameters.pb.cs.
|
static |
Field number for the "ratio_test_zero_threshold" field.
Definition at line 490 of file Parameters.pb.cs.
|
static |
Field number for the "recompute_edges_norm_threshold" field.
Definition at line 378 of file Parameters.pb.cs.
|
static |
Field number for the "recompute_reduced_costs_threshold" field.
Definition at line 344 of file Parameters.pb.cs.
|
static |
Field number for the "refactorization_threshold" field.
Definition at line 309 of file Parameters.pb.cs.
|
static |
Field number for the "relative_cost_perturbation" field.
Definition at line 1840 of file Parameters.pb.cs.
|
static |
Field number for the "relative_max_cost_perturbation" field.
Definition at line 1873 of file Parameters.pb.cs.
|
static |
Field number for the "scaling_method" field.
Definition at line 222 of file Parameters.pb.cs.
|
static |
Field number for the "small_pivot_threshold" field.
Definition at line 568 of file Parameters.pb.cs.
|
static |
Field number for the "solution_feasibility_tolerance" field.
Definition at line 914 of file Parameters.pb.cs.
|
static |
Field number for the "solve_dual_problem" field.
Definition at line 850 of file Parameters.pb.cs.
|
static |
Field number for the "use_absl_random" field.
Definition at line 1708 of file Parameters.pb.cs.
|
static |
Field number for the "use_dedicated_dual_feasibility_algorithm" field.
Definition at line 1802 of file Parameters.pb.cs.
|
static |
Field number for the "use_dual_simplex" field.
Definition at line 1258 of file Parameters.pb.cs.
|
static |
Field number for the "use_implied_free_preprocessor" field.
Definition at line 2076 of file Parameters.pb.cs.
|
static |
Field number for the "use_middle_product_form_update" field.
Definition at line 1381 of file Parameters.pb.cs.
|
static |
Field number for the "use_preprocessing" field.
Definition at line 1351 of file Parameters.pb.cs.
|
static |
Field number for the "use_scaling" field.
Definition at line 663 of file Parameters.pb.cs.
|
static |
Field number for the "use_transposed_matrix" field.
Definition at line 752 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1300 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 795 of file Parameters.pb.cs.
|
getset |
If true, the internal API will change the return status to imprecise if the solution does not respect the internal tolerances.
Definition at line 1011 of file Parameters.pb.cs.
|
getset |
Definition at line 700 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 2020 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1641 of file Parameters.pb.cs.
|
staticget |
Definition at line 130 of file Parameters.pb.cs.
|
getset |
Devex weights will be reset to 1.0 after that number of updates.
Definition at line 1330 of file Parameters.pb.cs.
|
getset |
Value in the input LP lower than this will be ignored. This is similar to drop_tolerance but more aggressive as this is used before scaling. This is mainly here to avoid underflow and have simpler invariant in the code, like a * b == 0 iff a or b is zero and things like this.
Definition at line 2153 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 642 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 469 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 893 of file Parameters.pb.cs.
|
getset |
On some problem like stp3d or pds-100 this makes a huge difference in speed and number of iterations of the dual simplex.
Definition at line 2184 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1490 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 829 of file Parameters.pb.cs.
|
getset |
Whether or not we exploit the singleton columns already present in the problem when we create the initial basis.
Definition at line 1458 of file Parameters.pb.cs.
|
getset |
PricingRule to use during the feasibility phase.
Definition at line 258 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 547 of file Parameters.pb.cs.
|
get |
Gets whether the "allow_simplex_algorithm_change" field is set.
Definition at line 1310 of file Parameters.pb.cs.
|
get |
Gets whether the "basis_refactorization_period" field is set.
Definition at line 805 of file Parameters.pb.cs.
|
get |
Gets whether the "change_status_to_imprecise" field is set.
Definition at line 1021 of file Parameters.pb.cs.
|
get |
Gets whether the "cost_scaling" field is set.
Definition at line 710 of file Parameters.pb.cs.
|
get |
Gets whether the "crossover_bound_snapping_distance" field is set.
Definition at line 2030 of file Parameters.pb.cs.
|
get |
Gets whether the "degenerate_ministep_factor" field is set.
Definition at line 1651 of file Parameters.pb.cs.
|
get |
Gets whether the "devex_weights_reset_period" field is set.
Definition at line 1340 of file Parameters.pb.cs.
|
get |
Gets whether the "drop_magnitude" field is set.
Definition at line 2163 of file Parameters.pb.cs.
|
get |
Gets whether the "drop_tolerance" field is set.
Definition at line 652 of file Parameters.pb.cs.
|
get |
Gets whether the "dual_feasibility_tolerance" field is set.
Definition at line 479 of file Parameters.pb.cs.
|
get |
Gets whether the "dualizer_threshold" field is set.
Definition at line 903 of file Parameters.pb.cs.
|
get |
Gets whether the "dual_price_prioritize_norm" field is set.
Definition at line 2194 of file Parameters.pb.cs.
|
get |
Gets whether the "dual_small_pivot_threshold" field is set.
Definition at line 1500 of file Parameters.pb.cs.
|
get |
Gets whether the "dynamically_adjust_refactorization_period" field is set.
Definition at line 839 of file Parameters.pb.cs.
|
get |
Gets whether the "exploit_singleton_column_in_initial_basis" field is set.
Definition at line 1468 of file Parameters.pb.cs.
|
get |
Gets whether the "feasibility_rule" field is set.
Definition at line 268 of file Parameters.pb.cs.
|
get |
Gets whether the "harris_tolerance_ratio" field is set.
Definition at line 557 of file Parameters.pb.cs.
|
get |
Gets whether the "initial_basis" field is set.
Definition at line 741 of file Parameters.pb.cs.
|
get |
Gets whether the "initial_condition_number_threshold" field is set.
Definition at line 1921 of file Parameters.pb.cs.
|
get |
Gets whether the "initialize_devex_with_column_norms" field is set.
Definition at line 1437 of file Parameters.pb.cs.
|
get |
Gets whether the "log_search_progress" field is set.
Definition at line 1953 of file Parameters.pb.cs.
|
get |
Gets whether the "log_to_stdout" field is set.
Definition at line 1983 of file Parameters.pb.cs.
|
get |
Gets whether the "lu_factorization_pivot_threshold" field is set.
Definition at line 1087 of file Parameters.pb.cs.
|
get |
Gets whether the "markowitz_singularity_threshold" field is set.
Definition at line 1247 of file Parameters.pb.cs.
|
get |
Gets whether the "markowitz_zlatev_parameter" field is set.
Definition at line 1214 of file Parameters.pb.cs.
|
get |
Gets whether the "max_deterministic_time" field is set.
Definition at line 1152 of file Parameters.pb.cs.
|
get |
Gets whether the "max_number_of_iterations" field is set.
Definition at line 1183 of file Parameters.pb.cs.
|
get |
Gets whether the "max_number_of_reoptimizations" field is set.
Definition at line 1054 of file Parameters.pb.cs.
|
get |
Gets whether the "max_time_in_seconds" field is set.
Definition at line 1117 of file Parameters.pb.cs.
|
get |
Gets whether the "max_valid_magnitude" field is set.
Definition at line 2130 of file Parameters.pb.cs.
|
get |
Gets whether the "minimum_acceptable_pivot" field is set.
Definition at line 620 of file Parameters.pb.cs.
|
get |
Gets whether the "num_omp_threads" field is set.
Definition at line 1758 of file Parameters.pb.cs.
|
get |
Gets whether the "objective_lower_limit" field is set.
Definition at line 1575 of file Parameters.pb.cs.
|
get |
Gets whether the "objective_upper_limit" field is set.
Definition at line 1602 of file Parameters.pb.cs.
|
get |
Gets whether the "optimization_rule" field is set.
Definition at line 298 of file Parameters.pb.cs.
|
get |
Gets whether the "perturb_costs_in_dual_simplex" field is set.
Definition at line 1791 of file Parameters.pb.cs.
|
get |
Gets whether the "preprocessor_zero_tolerance" field is set.
Definition at line 1536 of file Parameters.pb.cs.
|
get |
Gets whether the "primal_feasibility_tolerance" field is set.
Definition at line 438 of file Parameters.pb.cs.
|
get |
Gets whether the "provide_strong_optimal_guarantee" field is set.
Definition at line 990 of file Parameters.pb.cs.
|
get |
Gets whether the "push_to_vertex" field is set.
Definition at line 2065 of file Parameters.pb.cs.
|
get |
Gets whether the "random_seed" field is set.
Definition at line 1697 of file Parameters.pb.cs.
|
get |
Gets whether the "ratio_test_zero_threshold" field is set.
Definition at line 516 of file Parameters.pb.cs.
|
get |
Gets whether the "recompute_edges_norm_threshold" field is set.
Definition at line 401 of file Parameters.pb.cs.
|
get |
Gets whether the "recompute_reduced_costs_threshold" field is set.
Definition at line 367 of file Parameters.pb.cs.
|
get |
Gets whether the "refactorization_threshold" field is set.
Definition at line 333 of file Parameters.pb.cs.
|
get |
Gets whether the "relative_cost_perturbation" field is set.
Definition at line 1862 of file Parameters.pb.cs.
|
get |
Gets whether the "relative_max_cost_perturbation" field is set.
Definition at line 1889 of file Parameters.pb.cs.
|
get |
Gets whether the "scaling_method" field is set.
Definition at line 238 of file Parameters.pb.cs.
|
get |
Gets whether the "small_pivot_threshold" field is set.
Definition at line 590 of file Parameters.pb.cs.
|
get |
Gets whether the "solution_feasibility_tolerance" field is set.
Definition at line 941 of file Parameters.pb.cs.
|
get |
Gets whether the "solve_dual_problem" field is set.
Definition at line 871 of file Parameters.pb.cs.
|
get |
Gets whether the "use_absl_random" field is set.
Definition at line 1727 of file Parameters.pb.cs.
|
get |
Gets whether the "use_dedicated_dual_feasibility_algorithm" field is set.
Definition at line 1829 of file Parameters.pb.cs.
|
get |
Gets whether the "use_dual_simplex" field is set.
Definition at line 1277 of file Parameters.pb.cs.
|
get |
Gets whether the "use_implied_free_preprocessor" field is set.
Definition at line 2095 of file Parameters.pb.cs.
|
get |
Gets whether the "use_middle_product_form_update" field is set.
Definition at line 1406 of file Parameters.pb.cs.
|
get |
Gets whether the "use_preprocessing" field is set.
Definition at line 1370 of file Parameters.pb.cs.
|
get |
Gets whether the "use_scaling" field is set.
Definition at line 683 of file Parameters.pb.cs.
|
get |
Gets whether the "use_transposed_matrix" field is set.
Definition at line 773 of file Parameters.pb.cs.
|
getset |
What heuristic is used to try to replace the fixed slack columns in the initial basis of the primal simplex.
Definition at line 731 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1911 of file Parameters.pb.cs.
|
getset |
Whether we initialize devex weights to 1.0 or to the norms of the matrix columns.
Definition at line 1427 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1943 of file Parameters.pb.cs.
|
getset |
If true, logs will be displayed to stdout instead of using Google log info.
Definition at line 1973 of file Parameters.pb.cs.
|
getset |
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].
Definition at line 1077 of file Parameters.pb.cs.
|
getset |
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).
Definition at line 1237 of file Parameters.pb.cs.
|
getset |
How many columns do we look at in the Markowitz pivoting rule to find a good pivot. See markowitz.h.
Definition at line 1204 of file Parameters.pb.cs.
|
getset |
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).
Definition at line 1142 of file Parameters.pb.cs.
|
getset |
Maximum number of simplex iterations to solve a problem. A value of -1 means no limit.
Definition at line 1173 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1044 of file Parameters.pb.cs.
|
getset |
Maximum time allowed in seconds to solve a problem.
Definition at line 1107 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 2120 of file Parameters.pb.cs.
|
getset |
We never follow a basis change with a pivot under this threshold.
Definition at line 610 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1748 of file Parameters.pb.cs.
|
getset |
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,.
Definition at line 1565 of file Parameters.pb.cs.
|
getset |
Definition at line 1592 of file Parameters.pb.cs.
|
getset |
PricingRule to use during the optimization phase.
Definition at line 288 of file Parameters.pb.cs.
|
staticget |
Definition at line 126 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1781 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1526 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 428 of file Parameters.pb.cs.
|
getset |
If true, then when the solver returns a solution with an OPTIMAL status, we can guarantee that:
Definition at line 980 of file Parameters.pb.cs.
|
getset |
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().
Definition at line 2055 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1687 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 506 of file Parameters.pb.cs.
|
getset |
Definition at line 391 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 357 of file Parameters.pb.cs.
|
getset |
We estimate the factorization accuracy of B during each pivot by using the fact that we can compute the pivot coefficient in two ways:
Definition at line 323 of file Parameters.pb.cs.
|
getset |
The magnitude of the cost perturbation is given by RandomIn(1.0, 2.0) * ( relative_cost_perturbation * cost.
Definition at line 1852 of file Parameters.pb.cs.
|
getset |
Definition at line 1879 of file Parameters.pb.cs.
|
getset |
Definition at line 228 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 580 of file Parameters.pb.cs.
|
getset |
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:
Definition at line 931 of file Parameters.pb.cs.
|
getset |
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).
Definition at line 861 of file Parameters.pb.cs.
|
getset |
Whether to use absl::BitGen instead of MTRandom.
Definition at line 1717 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1819 of file Parameters.pb.cs.
|
getset |
Whether or not we use the dual simplex algorithm instead of the primal.
Definition at line 1267 of file Parameters.pb.cs.
|
getset |
If presolve runs, include the pass that detects implied free variables.
Definition at line 2085 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 1396 of file Parameters.pb.cs.
|
getset |
Whether or not we use advanced preprocessing techniques.
Definition at line 1360 of file Parameters.pb.cs.
|
getset |
Whether or not we scale the matrix A so that the maximum coefficient on each line and each column is 1.0.
Definition at line 673 of file Parameters.pb.cs.
|
getset |
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.
Definition at line 763 of file Parameters.pb.cs.