![]() |
Google OR-Tools v9.14
a fast and portable software suite for combinatorial optimization
|
Parameters for PrimalDualHybridGradient() in primal_dual_hybrid_gradient.h. While the defaults are generally good, it is usually worthwhile to perform a parameter sweep to find good settings for a particular family of problems. The following parameters should be considered for tuning: More...
Classes | |
class | Types |
Container for nested types declared in the PrimalDualHybridGradientParams message type. More... |
Public Member Functions | |
PrimalDualHybridGradientParams () | |
PrimalDualHybridGradientParams (PrimalDualHybridGradientParams other) | |
PrimalDualHybridGradientParams | Clone () |
void | ClearNumThreads () |
Clears the value of the "num_threads" field. | |
void | ClearNumShards () |
Clears the value of the "num_shards" field. | |
void | ClearSchedulerType () |
Clears the value of the "scheduler_type" field. | |
void | ClearRecordIterationStats () |
Clears the value of the "record_iteration_stats" field. | |
void | ClearVerbosityLevel () |
Clears the value of the "verbosity_level" field. | |
void | ClearLogIntervalSeconds () |
Clears the value of the "log_interval_seconds" field. | |
void | ClearMajorIterationFrequency () |
Clears the value of the "major_iteration_frequency" field. | |
void | ClearTerminationCheckFrequency () |
Clears the value of the "termination_check_frequency" field. | |
void | ClearRestartStrategy () |
Clears the value of the "restart_strategy" field. | |
void | ClearPrimalWeightUpdateSmoothing () |
Clears the value of the "primal_weight_update_smoothing" field. | |
void | ClearInitialPrimalWeight () |
Clears the value of the "initial_primal_weight" field. | |
void | ClearLInfRuizIterations () |
Clears the value of the "l_inf_ruiz_iterations" field. | |
void | ClearL2NormRescaling () |
Clears the value of the "l2_norm_rescaling" field. | |
void | ClearSufficientReductionForRestart () |
Clears the value of the "sufficient_reduction_for_restart" field. | |
void | ClearNecessaryReductionForRestart () |
Clears the value of the "necessary_reduction_for_restart" field. | |
void | ClearLinesearchRule () |
Clears the value of the "linesearch_rule" field. | |
void | ClearInitialStepSizeScaling () |
Clears the value of the "initial_step_size_scaling" field. | |
void | ClearInfiniteConstraintBoundThreshold () |
Clears the value of the "infinite_constraint_bound_threshold" field. | |
void | ClearHandleSomePrimalGradientsOnFiniteBoundsAsResiduals () |
Clears the value of the "handle_some_primal_gradients_on_finite_bounds_as_residuals" field. | |
void | ClearUseDiagonalQpTrustRegionSolver () |
Clears the value of the "use_diagonal_qp_trust_region_solver" field. | |
void | ClearDiagonalQpTrustRegionSolverTolerance () |
Clears the value of the "diagonal_qp_trust_region_solver_tolerance" field. | |
void | ClearUseFeasibilityPolishing () |
Clears the value of the "use_feasibility_polishing" field. | |
void | ClearApplyFeasibilityPolishingAfterLimitsReached () |
Clears the value of the "apply_feasibility_polishing_after_limits_reached" field. | |
void | ClearApplyFeasibilityPolishingIfSolverIsInterrupted () |
Clears the value of the "apply_feasibility_polishing_if_solver_is_interrupted" field. | |
override bool | Equals (object other) |
bool | Equals (PrimalDualHybridGradientParams other) |
override int | GetHashCode () |
override string | ToString () |
void | WriteTo (pb::CodedOutputStream output) |
int | CalculateSize () |
void | MergeFrom (PrimalDualHybridGradientParams other) |
void | MergeFrom (pb::CodedInputStream input) |
Static Public Attributes | |
const int | TerminationCriteriaFieldNumber = 1 |
Field number for the "termination_criteria" field. | |
const int | NumThreadsFieldNumber = 2 |
Field number for the "num_threads" field. | |
const int | NumShardsFieldNumber = 27 |
Field number for the "num_shards" field. | |
const int | SchedulerTypeFieldNumber = 32 |
Field number for the "scheduler_type" field. | |
const int | RecordIterationStatsFieldNumber = 3 |
Field number for the "record_iteration_stats" field. | |
const int | VerbosityLevelFieldNumber = 26 |
Field number for the "verbosity_level" field. | |
const int | LogIntervalSecondsFieldNumber = 31 |
Field number for the "log_interval_seconds" field. | |
const int | MajorIterationFrequencyFieldNumber = 4 |
Field number for the "major_iteration_frequency" field. | |
const int | TerminationCheckFrequencyFieldNumber = 5 |
Field number for the "termination_check_frequency" field. | |
const int | RestartStrategyFieldNumber = 6 |
Field number for the "restart_strategy" field. | |
const int | PrimalWeightUpdateSmoothingFieldNumber = 7 |
Field number for the "primal_weight_update_smoothing" field. | |
const int | InitialPrimalWeightFieldNumber = 8 |
Field number for the "initial_primal_weight" field. | |
const int | PresolveOptionsFieldNumber = 16 |
Field number for the "presolve_options" field. | |
const int | LInfRuizIterationsFieldNumber = 9 |
Field number for the "l_inf_ruiz_iterations" field. | |
const int | L2NormRescalingFieldNumber = 10 |
Field number for the "l2_norm_rescaling" field. | |
const int | SufficientReductionForRestartFieldNumber = 11 |
Field number for the "sufficient_reduction_for_restart" field. | |
const int | NecessaryReductionForRestartFieldNumber = 17 |
Field number for the "necessary_reduction_for_restart" field. | |
const int | LinesearchRuleFieldNumber = 12 |
Field number for the "linesearch_rule" field. | |
const int | AdaptiveLinesearchParametersFieldNumber = 18 |
Field number for the "adaptive_linesearch_parameters" field. | |
const int | MalitskyPockParametersFieldNumber = 19 |
Field number for the "malitsky_pock_parameters" field. | |
const int | InitialStepSizeScalingFieldNumber = 25 |
Field number for the "initial_step_size_scaling" field. | |
const int | RandomProjectionSeedsFieldNumber = 28 |
Field number for the "random_projection_seeds" field. | |
const int | InfiniteConstraintBoundThresholdFieldNumber = 22 |
Field number for the "infinite_constraint_bound_threshold" field. | |
const int | HandleSomePrimalGradientsOnFiniteBoundsAsResidualsFieldNumber = 29 |
Field number for the "handle_some_primal_gradients_on_finite_bounds_as_residuals" field. | |
const int | UseDiagonalQpTrustRegionSolverFieldNumber = 23 |
Field number for the "use_diagonal_qp_trust_region_solver" field. | |
const int | DiagonalQpTrustRegionSolverToleranceFieldNumber = 24 |
Field number for the "diagonal_qp_trust_region_solver_tolerance" field. | |
const int | UseFeasibilityPolishingFieldNumber = 30 |
Field number for the "use_feasibility_polishing" field. | |
const int | ApplyFeasibilityPolishingAfterLimitsReachedFieldNumber = 33 |
Field number for the "apply_feasibility_polishing_after_limits_reached" field. | |
const int | ApplyFeasibilityPolishingIfSolverIsInterruptedFieldNumber = 34 |
Field number for the "apply_feasibility_polishing_if_solver_is_interrupted" field. |
Properties | |
static pb::MessageParser< PrimalDualHybridGradientParams > | Parser [get] |
static pbr::MessageDescriptor | Descriptor [get] |
global::Google.OrTools.PDLP.TerminationCriteria | TerminationCriteria [get, set] |
int | NumThreads [get, set] |
The number of threads to use. Must be positive. Try various values of num_threads, up to the number of physical cores. Performance may not be monotonically increasing with the number of threads because of memory bandwidth limitations. | |
bool | HasNumThreads [get] |
Gets whether the "num_threads" field is set. | |
int | NumShards [get, set] |
For more efficient parallel computation, the matrices and vectors are divided (virtually) into num_shards shards. Results are computed independently for each shard and then combined. As a consequence, the order of computation, and hence floating point roundoff, depends on the number of shards so reproducible results require using the same value for num_shards. However, for efficiency num_shards should a be at least num_threads, and preferably at least 4*num_threads to allow better load balancing. If num_shards is positive, the computation will use that many shards. Otherwise a default that depends on num_threads will be used. | |
bool | HasNumShards [get] |
Gets whether the "num_shards" field is set. | |
global::Google.OrTools.PDLP.SchedulerType | SchedulerType [get, set] |
The type of scheduler used for CPU multi-threading. See the documentation of the corresponding enum for more details. | |
bool | HasSchedulerType [get] |
Gets whether the "scheduler_type" field is set. | |
bool | RecordIterationStats [get, set] |
If true, the iteration_stats field of the SolveLog output will be populated at every iteration. Note that we only compute solution statistics at termination checks. Setting this parameter to true may substantially increase the size of the output. | |
bool | HasRecordIterationStats [get] |
Gets whether the "record_iteration_stats" field is set. | |
int | VerbosityLevel [get, set] |
The verbosity of logging. 0: No informational logging. (Errors are logged.) 1: Summary statistics only. No iteration-level details. 2: A table of iteration-level statistics is logged. (See ToShortString() in primal_dual_hybrid_gradient.cc). 3: A more detailed table of iteration-level statistics is logged. (See ToString() in primal_dual_hybrid_gradient.cc). 4: For iteration-level details, prints the statistics of both the average (prefixed with A) and the current iterate (prefixed with C). Also prints internal algorithmic state and details. Logging at levels 2-4 also includes messages from level 1. | |
bool | HasVerbosityLevel [get] |
Gets whether the "verbosity_level" field is set. | |
double | LogIntervalSeconds [get, set] |
Time between iteration-level statistics logging (if verbosity_level > 1). Since iteration-level statistics are only generated when performing termination checks, logs will be generated from next termination check after log_interval_seconds have elapsed. Should be >= 0.0. 0.0 (the default) means log statistics at every termination check. | |
bool | HasLogIntervalSeconds [get] |
Gets whether the "log_interval_seconds" field is set. | |
int | MajorIterationFrequency [get, set] |
The frequency at which extra work is performed to make major algorithmic decisions, e.g., performing restarts and updating the primal weight. Major iterations also trigger a termination check. For best performance using the NO_RESTARTS or EVERY_MAJOR_ITERATION rule, one should perform a log-scale grid search over this parameter, for example, over powers of two. ADAPTIVE_HEURISTIC is mostly insensitive to this value. | |
bool | HasMajorIterationFrequency [get] |
Gets whether the "major_iteration_frequency" field is set. | |
int | TerminationCheckFrequency [get, set] |
The frequency (based on a counter reset every major iteration) to check for termination (involves extra work) and log iteration stats. Termination checks do not affect algorithmic progress unless termination is triggered. | |
bool | HasTerminationCheckFrequency [get] |
Gets whether the "termination_check_frequency" field is set. | |
global::Google.OrTools.PDLP.PrimalDualHybridGradientParams.Types.RestartStrategy | RestartStrategy [get, set] |
NO_RESTARTS and EVERY_MAJOR_ITERATION occasionally outperform the default. If using a strategy other than ADAPTIVE_HEURISTIC, you must also tune major_iteration_frequency. | |
bool | HasRestartStrategy [get] |
Gets whether the "restart_strategy" field is set. | |
double | PrimalWeightUpdateSmoothing [get, set] |
This parameter controls exponential smoothing of log(primal_weight) when a primal weight update occurs (i.e., when the ratio of primal and dual step sizes is adjusted). At 0.0, the primal weight will be frozen at its initial value and there will be no dynamic updates in the algorithm. At 1.0, there is no smoothing in the updates. The default of 0.5 generally performs well, but has been observed on occasion to trigger unstable swings in the primal weight. We recommend also trying 0.0 (disabling primal weight updates), in which case you must also tune initial_primal_weight. | |
bool | HasPrimalWeightUpdateSmoothing [get] |
Gets whether the "primal_weight_update_smoothing" field is set. | |
double | InitialPrimalWeight [get, set] |
The initial value of the primal weight (i.e., the ratio of primal and dual step sizes). The primal weight remains fixed throughout the solve if primal_weight_update_smoothing = 0.0. If unset, the default is the ratio of the norm of the objective vector to the L2 norm of the combined constraint bounds vector (as defined above). If this ratio is not finite and positive, then the default is 1.0 instead. For tuning, try powers of 10, for example, from 10^{-6} to 10^6. | |
bool | HasInitialPrimalWeight [get] |
Gets whether the "initial_primal_weight" field is set. | |
global::Google.OrTools.PDLP.PrimalDualHybridGradientParams.Types.PresolveOptions | PresolveOptions [get, set] |
int | LInfRuizIterations [get, set] |
Number of L_infinity Ruiz rescaling iterations to apply to the constraint matrix. Zero disables this rescaling pass. Recommended values to try when tuning are 0, 5, and 10. | |
bool | HasLInfRuizIterations [get] |
Gets whether the "l_inf_ruiz_iterations" field is set. | |
bool | L2NormRescaling [get, set] |
If true, applies L_2 norm rescaling after the Ruiz rescaling. Heuristically this has been found to help convergence. | |
bool | HasL2NormRescaling [get] |
Gets whether the "l2_norm_rescaling" field is set. | |
double | SufficientReductionForRestart [get, set] |
For ADAPTIVE_HEURISTIC and ADAPTIVE_DISTANCE_BASED only: A relative reduction in the potential function by this amount always triggers a restart. Must be between 0.0 and 1.0. | |
bool | HasSufficientReductionForRestart [get] |
Gets whether the "sufficient_reduction_for_restart" field is set. | |
double | NecessaryReductionForRestart [get, set] |
For ADAPTIVE_HEURISTIC only: A relative reduction in the potential function by this amount triggers a restart if, additionally, the quality of the iterates appears to be getting worse. The value must be in the interval [sufficient_reduction_for_restart, 1). Smaller values make restarts less frequent, and larger values make them more frequent. | |
bool | HasNecessaryReductionForRestart [get] |
Gets whether the "necessary_reduction_for_restart" field is set. | |
global::Google.OrTools.PDLP.PrimalDualHybridGradientParams.Types.LinesearchRule | LinesearchRule [get, set] |
Linesearch rule applied at each major iteration. | |
bool | HasLinesearchRule [get] |
Gets whether the "linesearch_rule" field is set. | |
global::Google.OrTools.PDLP.AdaptiveLinesearchParams | AdaptiveLinesearchParameters [get, set] |
global::Google.OrTools.PDLP.MalitskyPockParams | MalitskyPockParameters [get, set] |
double | InitialStepSizeScaling [get, set] |
Scaling factor applied to the initial step size (all step sizes if linesearch_rule == CONSTANT_STEP_SIZE_RULE). | |
bool | HasInitialStepSizeScaling [get] |
Gets whether the "initial_step_size_scaling" field is set. | |
pbc::RepeatedField< int > | RandomProjectionSeeds [get] |
Seeds for generating (pseudo-)random projections of iterates during termination checks. For each seed, the projection of the primal and dual solutions onto random planes in primal and dual space will be computed and added the IterationStats if record_iteration_stats is true. The random planes generated will be determined by the seeds, the primal and dual dimensions, and num_threads. | |
double | InfiniteConstraintBoundThreshold [get, set] |
Constraint bounds with absolute value at least this threshold are replaced with infinities. | |
bool | HasInfiniteConstraintBoundThreshold [get] |
Gets whether the "infinite_constraint_bound_threshold" field is set. | |
bool | HandleSomePrimalGradientsOnFiniteBoundsAsResiduals [get, set] |
See https://developers.google.com/optimization/lp/pdlp_math#treating_some_variable_bounds_as_infinite for a description of this flag. | |
bool | HasHandleSomePrimalGradientsOnFiniteBoundsAsResiduals [get] |
Gets whether the "handle_some_primal_gradients_on_finite_bounds_as_residuals" field is set. | |
bool | UseDiagonalQpTrustRegionSolver [get, set] |
When solving QPs with diagonal objective matrices, this option can be turned on to enable an experimental solver that avoids linearization of the quadratic term. The diagonal_qp_solver_accuracy parameter controls the solve accuracy. | |
bool | HasUseDiagonalQpTrustRegionSolver [get] |
Gets whether the "use_diagonal_qp_trust_region_solver" field is set. | |
double | DiagonalQpTrustRegionSolverTolerance [get, set] |
The solve tolerance of the experimental trust region solver for diagonal QPs, controlling the accuracy of binary search over a one-dimensional scaling parameter. Smaller values imply smaller relative error of the final solution vector. | |
bool | HasDiagonalQpTrustRegionSolverTolerance [get] |
Gets whether the "diagonal_qp_trust_region_solver_tolerance" field is set. | |
bool | UseFeasibilityPolishing [get, set] |
If true, periodically runs feasibility polishing, which attempts to move from latest average iterate to one that is closer to feasibility (i.e., has smaller primal and dual residuals) while probably increasing the objective gap. This is useful primarily when the feasibility tolerances are fairly tight and the objective gap tolerance is somewhat looser. Note that this does not change the termination criteria, but rather can help achieve the termination criteria more quickly when the objective gap is not as important as feasibility. | |
bool | HasUseFeasibilityPolishing [get] |
Gets whether the "use_feasibility_polishing" field is set. | |
bool | ApplyFeasibilityPolishingAfterLimitsReached [get, set] |
If true, feasibility polishing will be applied after the iteration limit, kkt limit, or time limit is reached. This can result in a solution that is closer to feasibility, at the expense of violating the limit by a moderate amount. | |
bool | HasApplyFeasibilityPolishingAfterLimitsReached [get] |
Gets whether the "apply_feasibility_polishing_after_limits_reached" field is set. | |
bool | ApplyFeasibilityPolishingIfSolverIsInterrupted [get, set] |
If true, feasibility polishing will be applied after the solver is interrupted. This can result in a solution that is closer to feasibility, at the expense of not stopping as promptly when interrupted. | |
bool | HasApplyFeasibilityPolishingIfSolverIsInterrupted [get] |
Gets whether the "apply_feasibility_polishing_if_solver_is_interrupted" field is set. |
Parameters for PrimalDualHybridGradient() in primal_dual_hybrid_gradient.h. While the defaults are generally good, it is usually worthwhile to perform a parameter sweep to find good settings for a particular family of problems. The following parameters should be considered for tuning:
Definition at line 2357 of file Solvers.pb.cs.
|
inline |
Definition at line 2383 of file Solvers.pb.cs.
|
inline |
Definition at line 2391 of file Solvers.pb.cs.
|
inline |
Definition at line 3669 of file Solvers.pb.cs.
|
inline |
Clears the value of the "apply_feasibility_polishing_after_limits_reached" field.
Definition at line 3291 of file Solvers.pb.cs.
|
inline |
Clears the value of the "apply_feasibility_polishing_if_solver_is_interrupted" field.
Definition at line 3323 of file Solvers.pb.cs.
|
inline |
Clears the value of the "diagonal_qp_trust_region_solver_tolerance" field.
Definition at line 3201 of file Solvers.pb.cs.
|
inline |
Clears the value of the "handle_some_primal_gradients_on_finite_bounds_as_residuals" field.
Definition at line 3132 of file Solvers.pb.cs.
|
inline |
Clears the value of the "infinite_constraint_bound_threshold" field.
Definition at line 3100 of file Solvers.pb.cs.
|
inline |
Clears the value of the "initial_primal_weight" field.
Definition at line 2820 of file Solvers.pb.cs.
|
inline |
Clears the value of the "initial_step_size_scaling" field.
Definition at line 3046 of file Solvers.pb.cs.
|
inline |
Clears the value of the "l2_norm_rescaling" field.
Definition at line 2895 of file Solvers.pb.cs.
|
inline |
Clears the value of the "linesearch_rule" field.
Definition at line 2991 of file Solvers.pb.cs.
|
inline |
Clears the value of the "l_inf_ruiz_iterations" field.
Definition at line 2864 of file Solvers.pb.cs.
|
inline |
Clears the value of the "log_interval_seconds" field.
Definition at line 2648 of file Solvers.pb.cs.
|
inline |
Clears the value of the "major_iteration_frequency" field.
Definition at line 2683 of file Solvers.pb.cs.
|
inline |
Clears the value of the "necessary_reduction_for_restart" field.
Definition at line 2961 of file Solvers.pb.cs.
|
inline |
Clears the value of the "num_shards" field.
Definition at line 2510 of file Solvers.pb.cs.
|
inline |
Clears the value of the "num_threads" field.
Definition at line 2472 of file Solvers.pb.cs.
|
inline |
Clears the value of the "primal_weight_update_smoothing" field.
Definition at line 2784 of file Solvers.pb.cs.
|
inline |
Clears the value of the "record_iteration_stats" field.
Definition at line 2574 of file Solvers.pb.cs.
|
inline |
Clears the value of the "restart_strategy" field.
Definition at line 2747 of file Solvers.pb.cs.
|
inline |
Clears the value of the "scheduler_type" field.
Definition at line 2541 of file Solvers.pb.cs.
|
inline |
Clears the value of the "sufficient_reduction_for_restart" field.
Definition at line 2927 of file Solvers.pb.cs.
|
inline |
Clears the value of the "termination_check_frequency" field.
Definition at line 2715 of file Solvers.pb.cs.
|
inline |
Clears the value of the "use_diagonal_qp_trust_region_solver" field.
Definition at line 3167 of file Solvers.pb.cs.
|
inline |
Clears the value of the "use_feasibility_polishing" field.
Definition at line 3258 of file Solvers.pb.cs.
|
inline |
Clears the value of the "verbosity_level" field.
Definition at line 2614 of file Solvers.pb.cs.
|
inline |
Definition at line 2427 of file Solvers.pb.cs.
|
inline |
Definition at line 3329 of file Solvers.pb.cs.
|
inline |
Definition at line 3335 of file Solvers.pb.cs.
|
inline |
Definition at line 3376 of file Solvers.pb.cs.
|
inline |
Definition at line 3870 of file Solvers.pb.cs.
|
inline |
Definition at line 3764 of file Solvers.pb.cs.
|
inline |
Definition at line 3415 of file Solvers.pb.cs.
|
inline |
Definition at line 3421 of file Solvers.pb.cs.
|
static |
Field number for the "adaptive_linesearch_parameters" field.
Definition at line 2996 of file Solvers.pb.cs.
|
static |
Field number for the "apply_feasibility_polishing_after_limits_reached" field.
Definition at line 3263 of file Solvers.pb.cs.
|
static |
Field number for the "apply_feasibility_polishing_if_solver_is_interrupted" field.
Definition at line 3296 of file Solvers.pb.cs.
|
static |
Field number for the "diagonal_qp_trust_region_solver_tolerance" field.
Definition at line 3172 of file Solvers.pb.cs.
|
static |
Field number for the "handle_some_primal_gradients_on_finite_bounds_as_residuals" field.
Definition at line 3105 of file Solvers.pb.cs.
|
static |
Field number for the "infinite_constraint_bound_threshold" field.
Definition at line 3070 of file Solvers.pb.cs.
|
static |
Field number for the "initial_primal_weight" field.
Definition at line 2789 of file Solvers.pb.cs.
|
static |
Field number for the "initial_step_size_scaling" field.
Definition at line 3020 of file Solvers.pb.cs.
|
static |
Field number for the "l2_norm_rescaling" field.
Definition at line 2869 of file Solvers.pb.cs.
|
static |
Field number for the "linesearch_rule" field.
Definition at line 2966 of file Solvers.pb.cs.
|
static |
Field number for the "l_inf_ruiz_iterations" field.
Definition at line 2837 of file Solvers.pb.cs.
|
static |
Field number for the "log_interval_seconds" field.
Definition at line 2619 of file Solvers.pb.cs.
|
static |
Field number for the "major_iteration_frequency" field.
Definition at line 2653 of file Solvers.pb.cs.
|
static |
Field number for the "malitsky_pock_parameters" field.
Definition at line 3008 of file Solvers.pb.cs.
|
static |
Field number for the "necessary_reduction_for_restart" field.
Definition at line 2932 of file Solvers.pb.cs.
|
static |
Field number for the "num_shards" field.
Definition at line 2477 of file Solvers.pb.cs.
|
static |
Field number for the "num_threads" field.
Definition at line 2444 of file Solvers.pb.cs.
|
static |
Field number for the "presolve_options" field.
Definition at line 2825 of file Solvers.pb.cs.
|
static |
Field number for the "primal_weight_update_smoothing" field.
Definition at line 2752 of file Solvers.pb.cs.
|
static |
Field number for the "random_projection_seeds" field.
Definition at line 3051 of file Solvers.pb.cs.
|
static |
Field number for the "record_iteration_stats" field.
Definition at line 2546 of file Solvers.pb.cs.
|
static |
Field number for the "restart_strategy" field.
Definition at line 2720 of file Solvers.pb.cs.
|
static |
Field number for the "scheduler_type" field.
Definition at line 2515 of file Solvers.pb.cs.
|
static |
Field number for the "sufficient_reduction_for_restart" field.
Definition at line 2900 of file Solvers.pb.cs.
|
static |
Field number for the "termination_check_frequency" field.
Definition at line 2688 of file Solvers.pb.cs.
|
static |
Field number for the "termination_criteria" field.
Definition at line 2432 of file Solvers.pb.cs.
|
static |
Field number for the "use_diagonal_qp_trust_region_solver" field.
Definition at line 3137 of file Solvers.pb.cs.
|
static |
Field number for the "use_feasibility_polishing" field.
Definition at line 3206 of file Solvers.pb.cs.
|
static |
Field number for the "verbosity_level" field.
Definition at line 2579 of file Solvers.pb.cs.
|
getset |
Definition at line 3000 of file Solvers.pb.cs.
|
getset |
If true, feasibility polishing will be applied after the iteration limit, kkt limit, or time limit is reached. This can result in a solution that is closer to feasibility, at the expense of violating the limit by a moderate amount.
Definition at line 3275 of file Solvers.pb.cs.
|
getset |
If true, feasibility polishing will be applied after the solver is interrupted. This can result in a solution that is closer to feasibility, at the expense of not stopping as promptly when interrupted.
Definition at line 3307 of file Solvers.pb.cs.
|
staticget |
Definition at line 2371 of file Solvers.pb.cs.
|
getset |
The solve tolerance of the experimental trust region solver for diagonal QPs, controlling the accuracy of binary search over a one-dimensional scaling parameter. Smaller values imply smaller relative error of the final solution vector.
Definition at line 3185 of file Solvers.pb.cs.
|
getset |
See https://developers.google.com/optimization/lp/pdlp_math#treating_some_variable_bounds_as_infinite for a description of this flag.
Definition at line 3116 of file Solvers.pb.cs.
|
get |
Gets whether the "apply_feasibility_polishing_after_limits_reached" field is set.
Definition at line 3285 of file Solvers.pb.cs.
|
get |
Gets whether the "apply_feasibility_polishing_if_solver_is_interrupted" field is set.
Definition at line 3317 of file Solvers.pb.cs.
|
get |
Gets whether the "diagonal_qp_trust_region_solver_tolerance" field is set.
Definition at line 3195 of file Solvers.pb.cs.
|
get |
Gets whether the "handle_some_primal_gradients_on_finite_bounds_as_residuals" field is set.
Definition at line 3126 of file Solvers.pb.cs.
|
get |
Gets whether the "infinite_constraint_bound_threshold" field is set.
Definition at line 3094 of file Solvers.pb.cs.
|
get |
Gets whether the "initial_primal_weight" field is set.
Definition at line 2814 of file Solvers.pb.cs.
|
get |
Gets whether the "initial_step_size_scaling" field is set.
Definition at line 3040 of file Solvers.pb.cs.
|
get |
Gets whether the "l2_norm_rescaling" field is set.
Definition at line 2889 of file Solvers.pb.cs.
|
get |
Gets whether the "linesearch_rule" field is set.
Definition at line 2985 of file Solvers.pb.cs.
|
get |
Gets whether the "l_inf_ruiz_iterations" field is set.
Definition at line 2858 of file Solvers.pb.cs.
|
get |
Gets whether the "log_interval_seconds" field is set.
Definition at line 2642 of file Solvers.pb.cs.
|
get |
Gets whether the "major_iteration_frequency" field is set.
Definition at line 2677 of file Solvers.pb.cs.
|
get |
Gets whether the "necessary_reduction_for_restart" field is set.
Definition at line 2955 of file Solvers.pb.cs.
|
get |
Gets whether the "num_shards" field is set.
Definition at line 2504 of file Solvers.pb.cs.
|
get |
Gets whether the "num_threads" field is set.
Definition at line 2466 of file Solvers.pb.cs.
|
get |
Gets whether the "primal_weight_update_smoothing" field is set.
Definition at line 2778 of file Solvers.pb.cs.
|
get |
Gets whether the "record_iteration_stats" field is set.
Definition at line 2568 of file Solvers.pb.cs.
|
get |
Gets whether the "restart_strategy" field is set.
Definition at line 2741 of file Solvers.pb.cs.
|
get |
Gets whether the "scheduler_type" field is set.
Definition at line 2535 of file Solvers.pb.cs.
|
get |
Gets whether the "sufficient_reduction_for_restart" field is set.
Definition at line 2921 of file Solvers.pb.cs.
|
get |
Gets whether the "termination_check_frequency" field is set.
Definition at line 2709 of file Solvers.pb.cs.
|
get |
Gets whether the "use_diagonal_qp_trust_region_solver" field is set.
Definition at line 3161 of file Solvers.pb.cs.
|
get |
Gets whether the "use_feasibility_polishing" field is set.
Definition at line 3252 of file Solvers.pb.cs.
|
get |
Gets whether the "verbosity_level" field is set.
Definition at line 2608 of file Solvers.pb.cs.
|
getset |
Constraint bounds with absolute value at least this threshold are replaced with infinities.
Definition at line 3084 of file Solvers.pb.cs.
|
getset |
The initial value of the primal weight (i.e., the ratio of primal and dual step sizes). The primal weight remains fixed throughout the solve if primal_weight_update_smoothing = 0.0. If unset, the default is the ratio of the norm of the objective vector to the L2 norm of the combined constraint bounds vector (as defined above). If this ratio is not finite and positive, then the default is 1.0 instead. For tuning, try powers of 10, for example, from 10^{-6} to 10^6.
Definition at line 2804 of file Solvers.pb.cs.
|
getset |
Scaling factor applied to the initial step size (all step sizes if linesearch_rule == CONSTANT_STEP_SIZE_RULE).
Definition at line 3030 of file Solvers.pb.cs.
|
getset |
If true, applies L_2 norm rescaling after the Ruiz rescaling. Heuristically this has been found to help convergence.
Definition at line 2879 of file Solvers.pb.cs.
|
getset |
Linesearch rule applied at each major iteration.
Definition at line 2975 of file Solvers.pb.cs.
|
getset |
Number of L_infinity Ruiz rescaling iterations to apply to the constraint matrix. Zero disables this rescaling pass. Recommended values to try when tuning are 0, 5, and 10.
Definition at line 2848 of file Solvers.pb.cs.
|
getset |
Time between iteration-level statistics logging (if verbosity_level > 1). Since iteration-level statistics are only generated when performing termination checks, logs will be generated from next termination check after log_interval_seconds have elapsed. Should be >= 0.0. 0.0 (the default) means log statistics at every termination check.
Definition at line 2632 of file Solvers.pb.cs.
|
getset |
The frequency at which extra work is performed to make major algorithmic decisions, e.g., performing restarts and updating the primal weight. Major iterations also trigger a termination check. For best performance using the NO_RESTARTS or EVERY_MAJOR_ITERATION rule, one should perform a log-scale grid search over this parameter, for example, over powers of two. ADAPTIVE_HEURISTIC is mostly insensitive to this value.
Definition at line 2667 of file Solvers.pb.cs.
|
getset |
Definition at line 3012 of file Solvers.pb.cs.
|
getset |
For ADAPTIVE_HEURISTIC only: A relative reduction in the potential function by this amount triggers a restart if, additionally, the quality of the iterates appears to be getting worse. The value must be in the interval [sufficient_reduction_for_restart, 1). Smaller values make restarts less frequent, and larger values make them more frequent.
Definition at line 2945 of file Solvers.pb.cs.
|
getset |
For more efficient parallel computation, the matrices and vectors are divided (virtually) into num_shards shards. Results are computed independently for each shard and then combined. As a consequence, the order of computation, and hence floating point roundoff, depends on the number of shards so reproducible results require using the same value for num_shards. However, for efficiency num_shards should a be at least num_threads, and preferably at least 4*num_threads to allow better load balancing. If num_shards is positive, the computation will use that many shards. Otherwise a default that depends on num_threads will be used.
Definition at line 2494 of file Solvers.pb.cs.
|
getset |
The number of threads to use. Must be positive. Try various values of num_threads, up to the number of physical cores. Performance may not be monotonically increasing with the number of threads because of memory bandwidth limitations.
Definition at line 2456 of file Solvers.pb.cs.
|
staticget |
Definition at line 2367 of file Solvers.pb.cs.
|
getset |
Definition at line 2829 of file Solvers.pb.cs.
|
getset |
This parameter controls exponential smoothing of log(primal_weight) when a primal weight update occurs (i.e., when the ratio of primal and dual step sizes is adjusted). At 0.0, the primal weight will be frozen at its initial value and there will be no dynamic updates in the algorithm. At 1.0, there is no smoothing in the updates. The default of 0.5 generally performs well, but has been observed on occasion to trigger unstable swings in the primal weight. We recommend also trying 0.0 (disabling primal weight updates), in which case you must also tune initial_primal_weight.
Definition at line 2768 of file Solvers.pb.cs.
|
get |
Seeds for generating (pseudo-)random projections of iterates during termination checks. For each seed, the projection of the primal and dual solutions onto random planes in primal and dual space will be computed and added the IterationStats if record_iteration_stats is true. The random planes generated will be determined by the seeds, the primal and dual dimensions, and num_threads.
Definition at line 3065 of file Solvers.pb.cs.
|
getset |
If true, the iteration_stats field of the SolveLog output will be populated at every iteration. Note that we only compute solution statistics at termination checks. Setting this parameter to true may substantially increase the size of the output.
Definition at line 2558 of file Solvers.pb.cs.
|
getset |
NO_RESTARTS and EVERY_MAJOR_ITERATION occasionally outperform the default. If using a strategy other than ADAPTIVE_HEURISTIC, you must also tune major_iteration_frequency.
Definition at line 2731 of file Solvers.pb.cs.
|
getset |
The type of scheduler used for CPU multi-threading. See the documentation of the corresponding enum for more details.
Definition at line 2525 of file Solvers.pb.cs.
|
getset |
For ADAPTIVE_HEURISTIC and ADAPTIVE_DISTANCE_BASED only: A relative reduction in the potential function by this amount always triggers a restart. Must be between 0.0 and 1.0.
Definition at line 2911 of file Solvers.pb.cs.
|
getset |
The frequency (based on a counter reset every major iteration) to check for termination (involves extra work) and log iteration stats. Termination checks do not affect algorithmic progress unless termination is triggered.
Definition at line 2699 of file Solvers.pb.cs.
|
getset |
Definition at line 2436 of file Solvers.pb.cs.
|
getset |
When solving QPs with diagonal objective matrices, this option can be turned on to enable an experimental solver that avoids linearization of the quadratic term. The diagonal_qp_solver_accuracy parameter controls the solve accuracy.
Definition at line 3151 of file Solvers.pb.cs.
|
getset |
If true, periodically runs feasibility polishing, which attempts to move from latest average iterate to one that is closer to feasibility (i.e., has smaller primal and dual residuals) while probably increasing the objective gap. This is useful primarily when the feasibility tolerances are fairly tight and the objective gap tolerance is somewhat looser. Note that this does not change the termination criteria, but rather can help achieve the termination criteria more quickly when the objective gap is not as important as feasibility.
use_feasibility_polishing cannot be used with glop presolve, and requires handle_some_primal_gradients_on_finite_bounds_as_residuals == false. use_feasibility_polishing can only be used with linear programs. Feasibility polishing runs two separate phases, primal feasibility and dual feasibility. The primal feasibility phase runs PDHG on the primal feasibility problem (obtained by changing the objective vector to all zeros), using the average primal iterate and zero dual (which is optimal for the primal feasibility problem) as the initial solution. The dual feasibility phase runs PDHG on the dual feasibility problem (obtained by changing all finite variable and constraint bounds to zero), using the average dual iterate and zero primal (which is optimal for the dual feasibility problem) as the initial solution. The primal solution from the primal feasibility phase and dual solution from the dual feasibility phase are then combined (forming a solution of type POINT_TYPE_FEASIBILITY_POLISHING_SOLUTION) and checked against the termination criteria.
Definition at line 3242 of file Solvers.pb.cs.
|
getset |
The verbosity of logging. 0: No informational logging. (Errors are logged.) 1: Summary statistics only. No iteration-level details. 2: A table of iteration-level statistics is logged. (See ToShortString() in primal_dual_hybrid_gradient.cc). 3: A more detailed table of iteration-level statistics is logged. (See ToString() in primal_dual_hybrid_gradient.cc). 4: For iteration-level details, prints the statistics of both the average (prefixed with A) and the current iterate (prefixed with C). Also prints internal algorithmic state and details. Logging at levels 2-4 also includes messages from level 1.
Definition at line 2598 of file Solvers.pb.cs.