Interface PrimalDualHybridGradientParamsOrBuilder

All Superinterfaces:
com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder
All Known Implementing Classes:
PrimalDualHybridGradientParams, PrimalDualHybridGradientParams.Builder

@Generated public interface PrimalDualHybridGradientParamsOrBuilder extends com.google.protobuf.MessageOrBuilder
  • Method Details

    • hasTerminationCriteria

      boolean hasTerminationCriteria()
      optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
      Returns:
      Whether the terminationCriteria field is set.
    • getTerminationCriteria

      TerminationCriteria getTerminationCriteria()
      optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
      Returns:
      The terminationCriteria.
    • getTerminationCriteriaOrBuilder

      TerminationCriteriaOrBuilder getTerminationCriteriaOrBuilder()
      optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
    • hasNumThreads

      boolean hasNumThreads()
      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.
      
      optional int32 num_threads = 2 [default = 1];
      Returns:
      Whether the numThreads field is set.
    • getNumThreads

      int getNumThreads()
      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.
      
      optional int32 num_threads = 2 [default = 1];
      Returns:
      The numThreads.
    • hasNumShards

      boolean hasNumShards()
      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.
      
      optional int32 num_shards = 27 [default = 0];
      Returns:
      Whether the numShards field is set.
    • getNumShards

      int getNumShards()
      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.
      
      optional int32 num_shards = 27 [default = 0];
      Returns:
      The numShards.
    • hasSchedulerType

      boolean hasSchedulerType()
      The type of scheduler used for CPU multi-threading. See the documentation
      of the corresponding enum for more details.
      
      optional .operations_research.pdlp.SchedulerType scheduler_type = 32 [default = SCHEDULER_TYPE_GOOGLE_THREADPOOL];
      Returns:
      Whether the schedulerType field is set.
    • getSchedulerType

      SchedulerType getSchedulerType()
      The type of scheduler used for CPU multi-threading. See the documentation
      of the corresponding enum for more details.
      
      optional .operations_research.pdlp.SchedulerType scheduler_type = 32 [default = SCHEDULER_TYPE_GOOGLE_THREADPOOL];
      Returns:
      The schedulerType.
    • hasRecordIterationStats

      boolean hasRecordIterationStats()
      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.
      
      optional bool record_iteration_stats = 3;
      Returns:
      Whether the recordIterationStats field is set.
    • getRecordIterationStats

      boolean getRecordIterationStats()
      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.
      
      optional bool record_iteration_stats = 3;
      Returns:
      The recordIterationStats.
    • hasVerbosityLevel

      boolean hasVerbosityLevel()
      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.
      
      optional int32 verbosity_level = 26 [default = 0];
      Returns:
      Whether the verbosityLevel field is set.
    • getVerbosityLevel

      int getVerbosityLevel()
      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.
      
      optional int32 verbosity_level = 26 [default = 0];
      Returns:
      The verbosityLevel.
    • hasLogIntervalSeconds

      boolean hasLogIntervalSeconds()
      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.
      
      optional double log_interval_seconds = 31 [default = 0];
      Returns:
      Whether the logIntervalSeconds field is set.
    • getLogIntervalSeconds

      double getLogIntervalSeconds()
      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.
      
      optional double log_interval_seconds = 31 [default = 0];
      Returns:
      The logIntervalSeconds.
    • hasMajorIterationFrequency

      boolean hasMajorIterationFrequency()
      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.
      
      optional int32 major_iteration_frequency = 4 [default = 64];
      Returns:
      Whether the majorIterationFrequency field is set.
    • getMajorIterationFrequency

      int getMajorIterationFrequency()
      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.
      
      optional int32 major_iteration_frequency = 4 [default = 64];
      Returns:
      The majorIterationFrequency.
    • hasTerminationCheckFrequency

      boolean hasTerminationCheckFrequency()
      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.
      
      optional int32 termination_check_frequency = 5 [default = 64];
      Returns:
      Whether the terminationCheckFrequency field is set.
    • getTerminationCheckFrequency

      int getTerminationCheckFrequency()
      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.
      
      optional int32 termination_check_frequency = 5 [default = 64];
      Returns:
      The terminationCheckFrequency.
    • hasRestartStrategy

      boolean hasRestartStrategy()
      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.
      
      optional .operations_research.pdlp.PrimalDualHybridGradientParams.RestartStrategy restart_strategy = 6 [default = ADAPTIVE_HEURISTIC];
      Returns:
      Whether the restartStrategy field is set.
    • getRestartStrategy

      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.
      
      optional .operations_research.pdlp.PrimalDualHybridGradientParams.RestartStrategy restart_strategy = 6 [default = ADAPTIVE_HEURISTIC];
      Returns:
      The restartStrategy.
    • hasPrimalWeightUpdateSmoothing

      boolean hasPrimalWeightUpdateSmoothing()
      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.
      
      optional double primal_weight_update_smoothing = 7 [default = 0.5];
      Returns:
      Whether the primalWeightUpdateSmoothing field is set.
    • getPrimalWeightUpdateSmoothing

      double getPrimalWeightUpdateSmoothing()
      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.
      
      optional double primal_weight_update_smoothing = 7 [default = 0.5];
      Returns:
      The primalWeightUpdateSmoothing.
    • hasInitialPrimalWeight

      boolean hasInitialPrimalWeight()
      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.
      
      optional double initial_primal_weight = 8;
      Returns:
      Whether the initialPrimalWeight field is set.
    • getInitialPrimalWeight

      double getInitialPrimalWeight()
      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.
      
      optional double initial_primal_weight = 8;
      Returns:
      The initialPrimalWeight.
    • hasPresolveOptions

      boolean hasPresolveOptions()
      optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
      Returns:
      Whether the presolveOptions field is set.
    • getPresolveOptions

      optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
      Returns:
      The presolveOptions.
    • getPresolveOptionsOrBuilder

      optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
    • hasLInfRuizIterations

      boolean hasLInfRuizIterations()
      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.
      
      optional int32 l_inf_ruiz_iterations = 9 [default = 5];
      Returns:
      Whether the lInfRuizIterations field is set.
    • getLInfRuizIterations

      int getLInfRuizIterations()
      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.
      
      optional int32 l_inf_ruiz_iterations = 9 [default = 5];
      Returns:
      The lInfRuizIterations.
    • hasL2NormRescaling

      boolean hasL2NormRescaling()
      If true, applies L_2 norm rescaling after the Ruiz rescaling. Heuristically
      this has been found to help convergence.
      
      optional bool l2_norm_rescaling = 10 [default = true];
      Returns:
      Whether the l2NormRescaling field is set.
    • getL2NormRescaling

      boolean getL2NormRescaling()
      If true, applies L_2 norm rescaling after the Ruiz rescaling. Heuristically
      this has been found to help convergence.
      
      optional bool l2_norm_rescaling = 10 [default = true];
      Returns:
      The l2NormRescaling.
    • hasSufficientReductionForRestart

      boolean hasSufficientReductionForRestart()
      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.
      
      optional double sufficient_reduction_for_restart = 11 [default = 0.1];
      Returns:
      Whether the sufficientReductionForRestart field is set.
    • getSufficientReductionForRestart

      double getSufficientReductionForRestart()
      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.
      
      optional double sufficient_reduction_for_restart = 11 [default = 0.1];
      Returns:
      The sufficientReductionForRestart.
    • hasNecessaryReductionForRestart

      boolean hasNecessaryReductionForRestart()
      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.
      
      optional double necessary_reduction_for_restart = 17 [default = 0.9];
      Returns:
      Whether the necessaryReductionForRestart field is set.
    • getNecessaryReductionForRestart

      double getNecessaryReductionForRestart()
      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.
      
      optional double necessary_reduction_for_restart = 17 [default = 0.9];
      Returns:
      The necessaryReductionForRestart.
    • hasLinesearchRule

      boolean hasLinesearchRule()
      Linesearch rule applied at each major iteration.
      
      optional .operations_research.pdlp.PrimalDualHybridGradientParams.LinesearchRule linesearch_rule = 12 [default = ADAPTIVE_LINESEARCH_RULE];
      Returns:
      Whether the linesearchRule field is set.
    • getLinesearchRule

      Linesearch rule applied at each major iteration.
      
      optional .operations_research.pdlp.PrimalDualHybridGradientParams.LinesearchRule linesearch_rule = 12 [default = ADAPTIVE_LINESEARCH_RULE];
      Returns:
      The linesearchRule.
    • hasAdaptiveLinesearchParameters

      boolean hasAdaptiveLinesearchParameters()
      optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
      Returns:
      Whether the adaptiveLinesearchParameters field is set.
    • getAdaptiveLinesearchParameters

      AdaptiveLinesearchParams getAdaptiveLinesearchParameters()
      optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
      Returns:
      The adaptiveLinesearchParameters.
    • getAdaptiveLinesearchParametersOrBuilder

      AdaptiveLinesearchParamsOrBuilder getAdaptiveLinesearchParametersOrBuilder()
      optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
    • hasMalitskyPockParameters

      boolean hasMalitskyPockParameters()
      optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
      Returns:
      Whether the malitskyPockParameters field is set.
    • getMalitskyPockParameters

      MalitskyPockParams getMalitskyPockParameters()
      optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
      Returns:
      The malitskyPockParameters.
    • getMalitskyPockParametersOrBuilder

      MalitskyPockParamsOrBuilder getMalitskyPockParametersOrBuilder()
      optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
    • hasInitialStepSizeScaling

      boolean hasInitialStepSizeScaling()
      Scaling factor applied to the initial step size (all step sizes if
      linesearch_rule == CONSTANT_STEP_SIZE_RULE).
      
      optional double initial_step_size_scaling = 25 [default = 1];
      Returns:
      Whether the initialStepSizeScaling field is set.
    • getInitialStepSizeScaling

      double getInitialStepSizeScaling()
      Scaling factor applied to the initial step size (all step sizes if
      linesearch_rule == CONSTANT_STEP_SIZE_RULE).
      
      optional double initial_step_size_scaling = 25 [default = 1];
      Returns:
      The initialStepSizeScaling.
    • getRandomProjectionSeedsList

      List<Integer> getRandomProjectionSeedsList()
      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.
      
      repeated int32 random_projection_seeds = 28 [packed = true];
      Returns:
      A list containing the randomProjectionSeeds.
    • getRandomProjectionSeedsCount

      int getRandomProjectionSeedsCount()
      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.
      
      repeated int32 random_projection_seeds = 28 [packed = true];
      Returns:
      The count of randomProjectionSeeds.
    • getRandomProjectionSeeds

      int getRandomProjectionSeeds(int index)
      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.
      
      repeated int32 random_projection_seeds = 28 [packed = true];
      Parameters:
      index - The index of the element to return.
      Returns:
      The randomProjectionSeeds at the given index.
    • hasInfiniteConstraintBoundThreshold

      boolean hasInfiniteConstraintBoundThreshold()
      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.
      
      optional double infinite_constraint_bound_threshold = 22 [default = inf];
      Returns:
      Whether the infiniteConstraintBoundThreshold field is set.
    • getInfiniteConstraintBoundThreshold

      double getInfiniteConstraintBoundThreshold()
      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.
      
      optional double infinite_constraint_bound_threshold = 22 [default = inf];
      Returns:
      The infiniteConstraintBoundThreshold.
    • hasHandleSomePrimalGradientsOnFiniteBoundsAsResiduals

      boolean hasHandleSomePrimalGradientsOnFiniteBoundsAsResiduals()
      See
      https://developers.google.com/optimization/lp/pdlp_math#treating_some_variable_bounds_as_infinite
      for a description of this flag.
      
      optional bool handle_some_primal_gradients_on_finite_bounds_as_residuals = 29 [default = true];
      Returns:
      Whether the handleSomePrimalGradientsOnFiniteBoundsAsResiduals field is set.
    • getHandleSomePrimalGradientsOnFiniteBoundsAsResiduals

      boolean getHandleSomePrimalGradientsOnFiniteBoundsAsResiduals()
      See
      https://developers.google.com/optimization/lp/pdlp_math#treating_some_variable_bounds_as_infinite
      for a description of this flag.
      
      optional bool handle_some_primal_gradients_on_finite_bounds_as_residuals = 29 [default = true];
      Returns:
      The handleSomePrimalGradientsOnFiniteBoundsAsResiduals.
    • hasUseDiagonalQpTrustRegionSolver

      boolean hasUseDiagonalQpTrustRegionSolver()
      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.
      
      optional bool use_diagonal_qp_trust_region_solver = 23 [default = false];
      Returns:
      Whether the useDiagonalQpTrustRegionSolver field is set.
    • getUseDiagonalQpTrustRegionSolver

      boolean getUseDiagonalQpTrustRegionSolver()
      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.
      
      optional bool use_diagonal_qp_trust_region_solver = 23 [default = false];
      Returns:
      The useDiagonalQpTrustRegionSolver.
    • hasDiagonalQpTrustRegionSolverTolerance

      boolean hasDiagonalQpTrustRegionSolverTolerance()
      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.
      
      optional double diagonal_qp_trust_region_solver_tolerance = 24 [default = 1e-08];
      Returns:
      Whether the diagonalQpTrustRegionSolverTolerance field is set.
    • getDiagonalQpTrustRegionSolverTolerance

      double getDiagonalQpTrustRegionSolverTolerance()
      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.
      
      optional double diagonal_qp_trust_region_solver_tolerance = 24 [default = 1e-08];
      Returns:
      The diagonalQpTrustRegionSolverTolerance.
    • hasUseFeasibilityPolishing

      boolean hasUseFeasibilityPolishing()
      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.
      
      optional bool use_feasibility_polishing = 30 [default = false];
      Returns:
      Whether the useFeasibilityPolishing field is set.
    • getUseFeasibilityPolishing

      boolean getUseFeasibilityPolishing()
      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.
      
      optional bool use_feasibility_polishing = 30 [default = false];
      Returns:
      The useFeasibilityPolishing.
    • hasApplyFeasibilityPolishingAfterLimitsReached

      boolean hasApplyFeasibilityPolishingAfterLimitsReached()
      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.
      
      optional bool apply_feasibility_polishing_after_limits_reached = 33 [default = false];
      Returns:
      Whether the applyFeasibilityPolishingAfterLimitsReached field is set.
    • getApplyFeasibilityPolishingAfterLimitsReached

      boolean getApplyFeasibilityPolishingAfterLimitsReached()
      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.
      
      optional bool apply_feasibility_polishing_after_limits_reached = 33 [default = false];
      Returns:
      The applyFeasibilityPolishingAfterLimitsReached.
    • hasApplyFeasibilityPolishingIfSolverIsInterrupted

      boolean hasApplyFeasibilityPolishingIfSolverIsInterrupted()
      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.
      
      optional bool apply_feasibility_polishing_if_solver_is_interrupted = 34 [default = false];
      Returns:
      Whether the applyFeasibilityPolishingIfSolverIsInterrupted field is set.
    • getApplyFeasibilityPolishingIfSolverIsInterrupted

      boolean getApplyFeasibilityPolishingIfSolverIsInterrupted()
      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.
      
      optional bool apply_feasibility_polishing_if_solver_is_interrupted = 34 [default = false];
      Returns:
      The applyFeasibilityPolishingIfSolverIsInterrupted.