Google OR-Tools v9.12
a fast and portable software suite for combinatorial optimization
Loading...
Searching...
No Matches
Google.OrTools.PDLP.PrimalDualHybridGradientParams Class Referencesealed

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...

Inheritance diagram for Google.OrTools.PDLP.PrimalDualHybridGradientParams:

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.
 
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.
 

Properties

static pb::MessageParser< PrimalDualHybridGradientParamsParser [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.
 

Detailed Description

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:

  • restart_strategy (jointly with major_iteration_frequency)
  • primal_weight_update_smoothing (jointly with initial_primal_weight)
  • presolve_options.use_glop
  • l_inf_ruiz_iterations
  • l2_norm_rescaling In addition, tune num_threads to speed up the solve.

Definition at line 2354 of file Solvers.pb.cs.

Constructor & Destructor Documentation

◆ PrimalDualHybridGradientParams() [1/2]

Google.OrTools.PDLP.PrimalDualHybridGradientParams.PrimalDualHybridGradientParams ( )
inline

Definition at line 2380 of file Solvers.pb.cs.

◆ PrimalDualHybridGradientParams() [2/2]

Google.OrTools.PDLP.PrimalDualHybridGradientParams.PrimalDualHybridGradientParams ( PrimalDualHybridGradientParams other)
inline

Definition at line 2388 of file Solvers.pb.cs.

Member Function Documentation

◆ CalculateSize()

int Google.OrTools.PDLP.PrimalDualHybridGradientParams.CalculateSize ( )
inline

Definition at line 3579 of file Solvers.pb.cs.

◆ ClearDiagonalQpTrustRegionSolverTolerance()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearDiagonalQpTrustRegionSolverTolerance ( )
inline

Clears the value of the "diagonal_qp_trust_region_solver_tolerance" field.

Definition at line 3196 of file Solvers.pb.cs.

◆ ClearHandleSomePrimalGradientsOnFiniteBoundsAsResiduals()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearHandleSomePrimalGradientsOnFiniteBoundsAsResiduals ( )
inline

Clears the value of the "handle_some_primal_gradients_on_finite_bounds_as_residuals" field.

Definition at line 3127 of file Solvers.pb.cs.

◆ ClearInfiniteConstraintBoundThreshold()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearInfiniteConstraintBoundThreshold ( )
inline

Clears the value of the "infinite_constraint_bound_threshold" field.

Definition at line 3095 of file Solvers.pb.cs.

◆ ClearInitialPrimalWeight()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearInitialPrimalWeight ( )
inline

Clears the value of the "initial_primal_weight" field.

Definition at line 2815 of file Solvers.pb.cs.

◆ ClearInitialStepSizeScaling()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearInitialStepSizeScaling ( )
inline

Clears the value of the "initial_step_size_scaling" field.

Definition at line 3041 of file Solvers.pb.cs.

◆ ClearL2NormRescaling()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearL2NormRescaling ( )
inline

Clears the value of the "l2_norm_rescaling" field.

Definition at line 2890 of file Solvers.pb.cs.

◆ ClearLinesearchRule()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearLinesearchRule ( )
inline

Clears the value of the "linesearch_rule" field.

Definition at line 2986 of file Solvers.pb.cs.

◆ ClearLInfRuizIterations()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearLInfRuizIterations ( )
inline

Clears the value of the "l_inf_ruiz_iterations" field.

Definition at line 2859 of file Solvers.pb.cs.

◆ ClearLogIntervalSeconds()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearLogIntervalSeconds ( )
inline

Clears the value of the "log_interval_seconds" field.

Definition at line 2643 of file Solvers.pb.cs.

◆ ClearMajorIterationFrequency()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearMajorIterationFrequency ( )
inline

Clears the value of the "major_iteration_frequency" field.

Definition at line 2678 of file Solvers.pb.cs.

◆ ClearNecessaryReductionForRestart()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearNecessaryReductionForRestart ( )
inline

Clears the value of the "necessary_reduction_for_restart" field.

Definition at line 2956 of file Solvers.pb.cs.

◆ ClearNumShards()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearNumShards ( )
inline

Clears the value of the "num_shards" field.

Definition at line 2505 of file Solvers.pb.cs.

◆ ClearNumThreads()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearNumThreads ( )
inline

Clears the value of the "num_threads" field.

Definition at line 2467 of file Solvers.pb.cs.

◆ ClearPrimalWeightUpdateSmoothing()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearPrimalWeightUpdateSmoothing ( )
inline

Clears the value of the "primal_weight_update_smoothing" field.

Definition at line 2779 of file Solvers.pb.cs.

◆ ClearRecordIterationStats()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearRecordIterationStats ( )
inline

Clears the value of the "record_iteration_stats" field.

Definition at line 2569 of file Solvers.pb.cs.

◆ ClearRestartStrategy()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearRestartStrategy ( )
inline

Clears the value of the "restart_strategy" field.

Definition at line 2742 of file Solvers.pb.cs.

◆ ClearSchedulerType()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearSchedulerType ( )
inline

Clears the value of the "scheduler_type" field.

Definition at line 2536 of file Solvers.pb.cs.

◆ ClearSufficientReductionForRestart()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearSufficientReductionForRestart ( )
inline

Clears the value of the "sufficient_reduction_for_restart" field.

Definition at line 2922 of file Solvers.pb.cs.

◆ ClearTerminationCheckFrequency()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearTerminationCheckFrequency ( )
inline

Clears the value of the "termination_check_frequency" field.

Definition at line 2710 of file Solvers.pb.cs.

◆ ClearUseDiagonalQpTrustRegionSolver()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearUseDiagonalQpTrustRegionSolver ( )
inline

Clears the value of the "use_diagonal_qp_trust_region_solver" field.

Definition at line 3162 of file Solvers.pb.cs.

◆ ClearUseFeasibilityPolishing()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearUseFeasibilityPolishing ( )
inline

Clears the value of the "use_feasibility_polishing" field.

Definition at line 3253 of file Solvers.pb.cs.

◆ ClearVerbosityLevel()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.ClearVerbosityLevel ( )
inline

Clears the value of the "verbosity_level" field.

Definition at line 2609 of file Solvers.pb.cs.

◆ Clone()

PrimalDualHybridGradientParams Google.OrTools.PDLP.PrimalDualHybridGradientParams.Clone ( )
inline

Definition at line 2422 of file Solvers.pb.cs.

◆ Equals() [1/2]

override bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.Equals ( object other)
inline

Definition at line 3259 of file Solvers.pb.cs.

◆ Equals() [2/2]

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.Equals ( PrimalDualHybridGradientParams other)
inline

Definition at line 3265 of file Solvers.pb.cs.

◆ GetHashCode()

override int Google.OrTools.PDLP.PrimalDualHybridGradientParams.GetHashCode ( )
inline

Definition at line 3304 of file Solvers.pb.cs.

◆ MergeFrom() [1/2]

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.MergeFrom ( pb.CodedInputStream input)
inline

Definition at line 3768 of file Solvers.pb.cs.

◆ MergeFrom() [2/2]

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.MergeFrom ( PrimalDualHybridGradientParams other)
inline

Definition at line 3668 of file Solvers.pb.cs.

◆ ToString()

override string Google.OrTools.PDLP.PrimalDualHybridGradientParams.ToString ( )
inline

Definition at line 3341 of file Solvers.pb.cs.

◆ WriteTo()

void Google.OrTools.PDLP.PrimalDualHybridGradientParams.WriteTo ( pb.CodedOutputStream output)
inline

Definition at line 3347 of file Solvers.pb.cs.

Member Data Documentation

◆ AdaptiveLinesearchParametersFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.AdaptiveLinesearchParametersFieldNumber = 18
static

Field number for the "adaptive_linesearch_parameters" field.

Definition at line 2991 of file Solvers.pb.cs.

◆ DiagonalQpTrustRegionSolverToleranceFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.DiagonalQpTrustRegionSolverToleranceFieldNumber = 24
static

Field number for the "diagonal_qp_trust_region_solver_tolerance" field.

Definition at line 3167 of file Solvers.pb.cs.

◆ HandleSomePrimalGradientsOnFiniteBoundsAsResidualsFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.HandleSomePrimalGradientsOnFiniteBoundsAsResidualsFieldNumber = 29
static

Field number for the "handle_some_primal_gradients_on_finite_bounds_as_residuals" field.

Definition at line 3100 of file Solvers.pb.cs.

◆ InfiniteConstraintBoundThresholdFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.InfiniteConstraintBoundThresholdFieldNumber = 22
static

Field number for the "infinite_constraint_bound_threshold" field.

Definition at line 3065 of file Solvers.pb.cs.

◆ InitialPrimalWeightFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.InitialPrimalWeightFieldNumber = 8
static

Field number for the "initial_primal_weight" field.

Definition at line 2784 of file Solvers.pb.cs.

◆ InitialStepSizeScalingFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.InitialStepSizeScalingFieldNumber = 25
static

Field number for the "initial_step_size_scaling" field.

Definition at line 3015 of file Solvers.pb.cs.

◆ L2NormRescalingFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.L2NormRescalingFieldNumber = 10
static

Field number for the "l2_norm_rescaling" field.

Definition at line 2864 of file Solvers.pb.cs.

◆ LinesearchRuleFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.LinesearchRuleFieldNumber = 12
static

Field number for the "linesearch_rule" field.

Definition at line 2961 of file Solvers.pb.cs.

◆ LInfRuizIterationsFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.LInfRuizIterationsFieldNumber = 9
static

Field number for the "l_inf_ruiz_iterations" field.

Definition at line 2832 of file Solvers.pb.cs.

◆ LogIntervalSecondsFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.LogIntervalSecondsFieldNumber = 31
static

Field number for the "log_interval_seconds" field.

Definition at line 2614 of file Solvers.pb.cs.

◆ MajorIterationFrequencyFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.MajorIterationFrequencyFieldNumber = 4
static

Field number for the "major_iteration_frequency" field.

Definition at line 2648 of file Solvers.pb.cs.

◆ MalitskyPockParametersFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.MalitskyPockParametersFieldNumber = 19
static

Field number for the "malitsky_pock_parameters" field.

Definition at line 3003 of file Solvers.pb.cs.

◆ NecessaryReductionForRestartFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.NecessaryReductionForRestartFieldNumber = 17
static

Field number for the "necessary_reduction_for_restart" field.

Definition at line 2927 of file Solvers.pb.cs.

◆ NumShardsFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.NumShardsFieldNumber = 27
static

Field number for the "num_shards" field.

Definition at line 2472 of file Solvers.pb.cs.

◆ NumThreadsFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.NumThreadsFieldNumber = 2
static

Field number for the "num_threads" field.

Definition at line 2439 of file Solvers.pb.cs.

◆ PresolveOptionsFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.PresolveOptionsFieldNumber = 16
static

Field number for the "presolve_options" field.

Definition at line 2820 of file Solvers.pb.cs.

◆ PrimalWeightUpdateSmoothingFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.PrimalWeightUpdateSmoothingFieldNumber = 7
static

Field number for the "primal_weight_update_smoothing" field.

Definition at line 2747 of file Solvers.pb.cs.

◆ RandomProjectionSeedsFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.RandomProjectionSeedsFieldNumber = 28
static

Field number for the "random_projection_seeds" field.

Definition at line 3046 of file Solvers.pb.cs.

◆ RecordIterationStatsFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.RecordIterationStatsFieldNumber = 3
static

Field number for the "record_iteration_stats" field.

Definition at line 2541 of file Solvers.pb.cs.

◆ RestartStrategyFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.RestartStrategyFieldNumber = 6
static

Field number for the "restart_strategy" field.

Definition at line 2715 of file Solvers.pb.cs.

◆ SchedulerTypeFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.SchedulerTypeFieldNumber = 32
static

Field number for the "scheduler_type" field.

Definition at line 2510 of file Solvers.pb.cs.

◆ SufficientReductionForRestartFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.SufficientReductionForRestartFieldNumber = 11
static

Field number for the "sufficient_reduction_for_restart" field.

Definition at line 2895 of file Solvers.pb.cs.

◆ TerminationCheckFrequencyFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.TerminationCheckFrequencyFieldNumber = 5
static

Field number for the "termination_check_frequency" field.

Definition at line 2683 of file Solvers.pb.cs.

◆ TerminationCriteriaFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.TerminationCriteriaFieldNumber = 1
static

Field number for the "termination_criteria" field.

Definition at line 2427 of file Solvers.pb.cs.

◆ UseDiagonalQpTrustRegionSolverFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.UseDiagonalQpTrustRegionSolverFieldNumber = 23
static

Field number for the "use_diagonal_qp_trust_region_solver" field.

Definition at line 3132 of file Solvers.pb.cs.

◆ UseFeasibilityPolishingFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.UseFeasibilityPolishingFieldNumber = 30
static

Field number for the "use_feasibility_polishing" field.

Definition at line 3201 of file Solvers.pb.cs.

◆ VerbosityLevelFieldNumber

const int Google.OrTools.PDLP.PrimalDualHybridGradientParams.VerbosityLevelFieldNumber = 26
static

Field number for the "verbosity_level" field.

Definition at line 2574 of file Solvers.pb.cs.

Property Documentation

◆ AdaptiveLinesearchParameters

global.Google.OrTools.PDLP.AdaptiveLinesearchParams Google.OrTools.PDLP.PrimalDualHybridGradientParams.AdaptiveLinesearchParameters
getset

Definition at line 2995 of file Solvers.pb.cs.

◆ Descriptor

pbr.MessageDescriptor Google.OrTools.PDLP.PrimalDualHybridGradientParams.Descriptor
staticget

Definition at line 2368 of file Solvers.pb.cs.

◆ DiagonalQpTrustRegionSolverTolerance

double Google.OrTools.PDLP.PrimalDualHybridGradientParams.DiagonalQpTrustRegionSolverTolerance
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.

Todo
(user): Find an expression for the final relative error.

Definition at line 3180 of file Solvers.pb.cs.

◆ HandleSomePrimalGradientsOnFiniteBoundsAsResiduals

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HandleSomePrimalGradientsOnFiniteBoundsAsResiduals
getset

◆ HasDiagonalQpTrustRegionSolverTolerance

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasDiagonalQpTrustRegionSolverTolerance
get

Gets whether the "diagonal_qp_trust_region_solver_tolerance" field is set.

Definition at line 3190 of file Solvers.pb.cs.

◆ HasHandleSomePrimalGradientsOnFiniteBoundsAsResiduals

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasHandleSomePrimalGradientsOnFiniteBoundsAsResiduals
get

Gets whether the "handle_some_primal_gradients_on_finite_bounds_as_residuals" field is set.

Definition at line 3121 of file Solvers.pb.cs.

◆ HasInfiniteConstraintBoundThreshold

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasInfiniteConstraintBoundThreshold
get

Gets whether the "infinite_constraint_bound_threshold" field is set.

Definition at line 3089 of file Solvers.pb.cs.

◆ HasInitialPrimalWeight

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasInitialPrimalWeight
get

Gets whether the "initial_primal_weight" field is set.

Definition at line 2809 of file Solvers.pb.cs.

◆ HasInitialStepSizeScaling

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasInitialStepSizeScaling
get

Gets whether the "initial_step_size_scaling" field is set.

Definition at line 3035 of file Solvers.pb.cs.

◆ HasL2NormRescaling

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasL2NormRescaling
get

Gets whether the "l2_norm_rescaling" field is set.

Definition at line 2884 of file Solvers.pb.cs.

◆ HasLinesearchRule

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasLinesearchRule
get

Gets whether the "linesearch_rule" field is set.

Definition at line 2980 of file Solvers.pb.cs.

◆ HasLInfRuizIterations

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasLInfRuizIterations
get

Gets whether the "l_inf_ruiz_iterations" field is set.

Definition at line 2853 of file Solvers.pb.cs.

◆ HasLogIntervalSeconds

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasLogIntervalSeconds
get

Gets whether the "log_interval_seconds" field is set.

Definition at line 2637 of file Solvers.pb.cs.

◆ HasMajorIterationFrequency

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasMajorIterationFrequency
get

Gets whether the "major_iteration_frequency" field is set.

Definition at line 2672 of file Solvers.pb.cs.

◆ HasNecessaryReductionForRestart

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasNecessaryReductionForRestart
get

Gets whether the "necessary_reduction_for_restart" field is set.

Definition at line 2950 of file Solvers.pb.cs.

◆ HasNumShards

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasNumShards
get

Gets whether the "num_shards" field is set.

Definition at line 2499 of file Solvers.pb.cs.

◆ HasNumThreads

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasNumThreads
get

Gets whether the "num_threads" field is set.

Definition at line 2461 of file Solvers.pb.cs.

◆ HasPrimalWeightUpdateSmoothing

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasPrimalWeightUpdateSmoothing
get

Gets whether the "primal_weight_update_smoothing" field is set.

Definition at line 2773 of file Solvers.pb.cs.

◆ HasRecordIterationStats

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasRecordIterationStats
get

Gets whether the "record_iteration_stats" field is set.

Definition at line 2563 of file Solvers.pb.cs.

◆ HasRestartStrategy

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasRestartStrategy
get

Gets whether the "restart_strategy" field is set.

Definition at line 2736 of file Solvers.pb.cs.

◆ HasSchedulerType

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasSchedulerType
get

Gets whether the "scheduler_type" field is set.

Definition at line 2530 of file Solvers.pb.cs.

◆ HasSufficientReductionForRestart

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasSufficientReductionForRestart
get

Gets whether the "sufficient_reduction_for_restart" field is set.

Definition at line 2916 of file Solvers.pb.cs.

◆ HasTerminationCheckFrequency

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasTerminationCheckFrequency
get

Gets whether the "termination_check_frequency" field is set.

Definition at line 2704 of file Solvers.pb.cs.

◆ HasUseDiagonalQpTrustRegionSolver

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasUseDiagonalQpTrustRegionSolver
get

Gets whether the "use_diagonal_qp_trust_region_solver" field is set.

Definition at line 3156 of file Solvers.pb.cs.

◆ HasUseFeasibilityPolishing

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasUseFeasibilityPolishing
get

Gets whether the "use_feasibility_polishing" field is set.

Definition at line 3247 of file Solvers.pb.cs.

◆ HasVerbosityLevel

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.HasVerbosityLevel
get

Gets whether the "verbosity_level" field is set.

Definition at line 2603 of file Solvers.pb.cs.

◆ InfiniteConstraintBoundThreshold

double Google.OrTools.PDLP.PrimalDualHybridGradientParams.InfiniteConstraintBoundThreshold
getset

Constraint bounds with absolute value at least this threshold are replaced with infinities.

Note
This primarily affects the relative convergence criteria. A smaller value makes the relative convergence criteria stronger. It also affects the problem statistics LOG()ed at the start of the run, and the default initial primal weight, since that is based on the norm of the bounds.

Definition at line 3079 of file Solvers.pb.cs.

◆ InitialPrimalWeight

double Google.OrTools.PDLP.PrimalDualHybridGradientParams.InitialPrimalWeight
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 2799 of file Solvers.pb.cs.

◆ InitialStepSizeScaling

double Google.OrTools.PDLP.PrimalDualHybridGradientParams.InitialStepSizeScaling
getset

Scaling factor applied to the initial step size (all step sizes if linesearch_rule == CONSTANT_STEP_SIZE_RULE).

Definition at line 3025 of file Solvers.pb.cs.

◆ L2NormRescaling

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.L2NormRescaling
getset

If true, applies L_2 norm rescaling after the Ruiz rescaling. Heuristically this has been found to help convergence.

Definition at line 2874 of file Solvers.pb.cs.

◆ LinesearchRule

global.Google.OrTools.PDLP.PrimalDualHybridGradientParams.Types.LinesearchRule Google.OrTools.PDLP.PrimalDualHybridGradientParams.LinesearchRule
getset

Linesearch rule applied at each major iteration.

Definition at line 2970 of file Solvers.pb.cs.

◆ LInfRuizIterations

int Google.OrTools.PDLP.PrimalDualHybridGradientParams.LInfRuizIterations
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 2843 of file Solvers.pb.cs.

◆ LogIntervalSeconds

double Google.OrTools.PDLP.PrimalDualHybridGradientParams.LogIntervalSeconds
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 2627 of file Solvers.pb.cs.

◆ MajorIterationFrequency

int Google.OrTools.PDLP.PrimalDualHybridGradientParams.MajorIterationFrequency
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 2662 of file Solvers.pb.cs.

◆ MalitskyPockParameters

global.Google.OrTools.PDLP.MalitskyPockParams Google.OrTools.PDLP.PrimalDualHybridGradientParams.MalitskyPockParameters
getset

Definition at line 3007 of file Solvers.pb.cs.

◆ NecessaryReductionForRestart

double Google.OrTools.PDLP.PrimalDualHybridGradientParams.NecessaryReductionForRestart
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 2940 of file Solvers.pb.cs.

◆ NumShards

int Google.OrTools.PDLP.PrimalDualHybridGradientParams.NumShards
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 2489 of file Solvers.pb.cs.

◆ NumThreads

int Google.OrTools.PDLP.PrimalDualHybridGradientParams.NumThreads
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 2451 of file Solvers.pb.cs.

◆ Parser

pb.MessageParser<PrimalDualHybridGradientParams> Google.OrTools.PDLP.PrimalDualHybridGradientParams.Parser
staticget

Definition at line 2364 of file Solvers.pb.cs.

◆ PresolveOptions

global.Google.OrTools.PDLP.PrimalDualHybridGradientParams.Types.PresolveOptions Google.OrTools.PDLP.PrimalDualHybridGradientParams.PresolveOptions
getset

Definition at line 2824 of file Solvers.pb.cs.

◆ PrimalWeightUpdateSmoothing

double Google.OrTools.PDLP.PrimalDualHybridGradientParams.PrimalWeightUpdateSmoothing
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 2763 of file Solvers.pb.cs.

◆ RandomProjectionSeeds

pbc.RepeatedField<int> Google.OrTools.PDLP.PrimalDualHybridGradientParams.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.

Definition at line 3060 of file Solvers.pb.cs.

◆ RecordIterationStats

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.RecordIterationStats
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 2553 of file Solvers.pb.cs.

◆ RestartStrategy

global.Google.OrTools.PDLP.PrimalDualHybridGradientParams.Types.RestartStrategy Google.OrTools.PDLP.PrimalDualHybridGradientParams.RestartStrategy
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 2726 of file Solvers.pb.cs.

◆ SchedulerType

global.Google.OrTools.PDLP.SchedulerType Google.OrTools.PDLP.PrimalDualHybridGradientParams.SchedulerType
getset

The type of scheduler used for CPU multi-threading. See the documentation of the corresponding enum for more details.

Definition at line 2520 of file Solvers.pb.cs.

◆ SufficientReductionForRestart

double Google.OrTools.PDLP.PrimalDualHybridGradientParams.SufficientReductionForRestart
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 2906 of file Solvers.pb.cs.

◆ TerminationCheckFrequency

int Google.OrTools.PDLP.PrimalDualHybridGradientParams.TerminationCheckFrequency
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 2694 of file Solvers.pb.cs.

◆ TerminationCriteria

global.Google.OrTools.PDLP.TerminationCriteria Google.OrTools.PDLP.PrimalDualHybridGradientParams.TerminationCriteria
getset

Definition at line 2431 of file Solvers.pb.cs.

◆ UseDiagonalQpTrustRegionSolver

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.UseDiagonalQpTrustRegionSolver
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.

Todo
(user): Turn this option on by default for quadratic programs after numerical evaluation.

Definition at line 3146 of file Solvers.pb.cs.

◆ UseFeasibilityPolishing

bool Google.OrTools.PDLP.PrimalDualHybridGradientParams.UseFeasibilityPolishing
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 3237 of file Solvers.pb.cs.

◆ VerbosityLevel

int Google.OrTools.PDLP.PrimalDualHybridGradientParams.VerbosityLevel
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 2593 of file Solvers.pb.cs.


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