Class PrimalDualHybridGradientParams
java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessage
com.google.ortools.pdlp.PrimalDualHybridGradientParams
- All Implemented Interfaces:
PrimalDualHybridGradientParamsOrBuilder
,com.google.protobuf.Message
,com.google.protobuf.MessageLite
,com.google.protobuf.MessageLiteOrBuilder
,com.google.protobuf.MessageOrBuilder
,Serializable
@Generated
public final class PrimalDualHybridGradientParams
extends com.google.protobuf.GeneratedMessage
implements PrimalDualHybridGradientParamsOrBuilder
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.Protobuf type
operations_research.pdlp.PrimalDualHybridGradientParams
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
Parameters for PrimalDualHybridGradient() in primal_dual_hybrid_gradient.h.static enum
Protobuf enumoperations_research.pdlp.PrimalDualHybridGradientParams.LinesearchRule
static final class
Protobuf typeoperations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions
static interface
static enum
Protobuf enumoperations_research.pdlp.PrimalDualHybridGradientParams.RestartStrategy
Nested classes/interfaces inherited from class com.google.protobuf.GeneratedMessage
com.google.protobuf.GeneratedMessage.ExtendableBuilder<MessageT extends com.google.protobuf.GeneratedMessage.ExtendableMessage<MessageT>, BuilderT extends com.google.protobuf.GeneratedMessage.ExtendableBuilder<MessageT,
BuilderT>>, com.google.protobuf.GeneratedMessage.ExtendableMessage<MessageT extends com.google.protobuf.GeneratedMessage.ExtendableMessage<MessageT>>, com.google.protobuf.GeneratedMessage.ExtendableMessageOrBuilder<MessageT extends com.google.protobuf.GeneratedMessage.ExtendableMessage<MessageT>>, com.google.protobuf.GeneratedMessage.FieldAccessorTable, com.google.protobuf.GeneratedMessage.GeneratedExtension<ContainingT extends com.google.protobuf.Message, T>, com.google.protobuf.GeneratedMessage.UnusedPrivateParameter Nested classes/interfaces inherited from class com.google.protobuf.AbstractMessage
com.google.protobuf.AbstractMessage.BuilderParent
Nested classes/interfaces inherited from class com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessageLite.InternalOneOfEnum
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
Fields inherited from class com.google.protobuf.GeneratedMessage
alwaysUseFieldBuilders, unknownFields
Fields inherited from class com.google.protobuf.AbstractMessage
memoizedSize
Fields inherited from class com.google.protobuf.AbstractMessageLite
memoizedHashCode
-
Method Summary
Modifier and TypeMethodDescriptionboolean
optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
boolean
If true, feasibility polishing will be applied after the iteration limit, kkt limit, or time limit is reached.boolean
If true, feasibility polishing will be applied after the solver is interrupted.static final com.google.protobuf.Descriptors.Descriptor
double
The solve tolerance of the experimental trust region solver for diagonal QPs, controlling the accuracy of binary search over a one-dimensional scaling parameter.boolean
See https://developers.google.com/optimization/lp/pdlp_math#treating_some_variable_bounds_as_infinite for a description of this flag.double
Constraint bounds with absolute value at least this threshold are replaced with infinities.double
The initial value of the primal weight (i.e., the ratio of primal and dual step sizes).double
Scaling factor applied to the initial step size (all step sizes if linesearch_rule == CONSTANT_STEP_SIZE_RULE).boolean
If true, applies L_2 norm rescaling after the Ruiz rescaling.Linesearch rule applied at each major iteration.int
Number of L_infinity Ruiz rescaling iterations to apply to the constraint matrix.double
Time between iteration-level statistics logging (if `verbosity_level > 1`).int
The frequency at which extra work is performed to make major algorithmic decisions, e.g., performing restarts and updating the primal weight.optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
double
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.int
For more efficient parallel computation, the matrices and vectors are divided (virtually) into num_shards shards.int
The number of threads to use.com.google.protobuf.Parser
<PrimalDualHybridGradientParams> optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
double
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).int
getRandomProjectionSeeds
(int index) Seeds for generating (pseudo-)random projections of iterates during termination checks.int
Seeds for generating (pseudo-)random projections of iterates during termination checks.Seeds for generating (pseudo-)random projections of iterates during termination checks.boolean
If true, the iteration_stats field of the SolveLog output will be populated at every iteration.NO_RESTARTS and EVERY_MAJOR_ITERATION occasionally outperform the default.The type of scheduler used for CPU multi-threading.int
double
For ADAPTIVE_HEURISTIC and ADAPTIVE_DISTANCE_BASED only: A relative reduction in the potential function by this amount always triggers a restart.int
The frequency (based on a counter reset every major iteration) to check for termination (involves extra work) and log iteration stats.optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
boolean
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.boolean
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.int
The verbosity of logging. 0: No informational logging.boolean
optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
boolean
If true, feasibility polishing will be applied after the iteration limit, kkt limit, or time limit is reached.boolean
If true, feasibility polishing will be applied after the solver is interrupted.boolean
The solve tolerance of the experimental trust region solver for diagonal QPs, controlling the accuracy of binary search over a one-dimensional scaling parameter.boolean
See https://developers.google.com/optimization/lp/pdlp_math#treating_some_variable_bounds_as_infinite for a description of this flag.int
hashCode()
boolean
Constraint bounds with absolute value at least this threshold are replaced with infinities.boolean
The initial value of the primal weight (i.e., the ratio of primal and dual step sizes).boolean
Scaling factor applied to the initial step size (all step sizes if linesearch_rule == CONSTANT_STEP_SIZE_RULE).boolean
If true, applies L_2 norm rescaling after the Ruiz rescaling.boolean
Linesearch rule applied at each major iteration.boolean
Number of L_infinity Ruiz rescaling iterations to apply to the constraint matrix.boolean
Time between iteration-level statistics logging (if `verbosity_level > 1`).boolean
The frequency at which extra work is performed to make major algorithmic decisions, e.g., performing restarts and updating the primal weight.boolean
optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
boolean
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.boolean
For more efficient parallel computation, the matrices and vectors are divided (virtually) into num_shards shards.boolean
The number of threads to use.boolean
optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
boolean
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).boolean
If true, the iteration_stats field of the SolveLog output will be populated at every iteration.boolean
NO_RESTARTS and EVERY_MAJOR_ITERATION occasionally outperform the default.boolean
The type of scheduler used for CPU multi-threading.boolean
For ADAPTIVE_HEURISTIC and ADAPTIVE_DISTANCE_BASED only: A relative reduction in the potential function by this amount always triggers a restart.boolean
The frequency (based on a counter reset every major iteration) to check for termination (involves extra work) and log iteration stats.boolean
optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
boolean
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.boolean
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.boolean
The verbosity of logging. 0: No informational logging.protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
final boolean
newBuilder
(PrimalDualHybridGradientParams prototype) protected PrimalDualHybridGradientParams.Builder
newBuilderForType
(com.google.protobuf.AbstractMessage.BuilderParent parent) parseDelimitedFrom
(InputStream input) parseDelimitedFrom
(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) parseFrom
(byte[] data) parseFrom
(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) parseFrom
(com.google.protobuf.ByteString data) parseFrom
(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) parseFrom
(com.google.protobuf.CodedInputStream input) parseFrom
(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) parseFrom
(InputStream input) parseFrom
(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) parseFrom
(ByteBuffer data) parseFrom
(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) static com.google.protobuf.Parser
<PrimalDualHybridGradientParams> parser()
void
writeTo
(com.google.protobuf.CodedOutputStream output) Methods inherited from class com.google.protobuf.GeneratedMessage
canUseUnsafe, computeStringSize, computeStringSizeNoTag, emptyBooleanList, emptyDoubleList, emptyFloatList, emptyIntList, emptyList, emptyLongList, getAllFields, getDescriptorForType, getField, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, getUnknownFields, hasField, hasOneof, internalGetMapField, internalGetMapFieldReflection, isStringEmpty, makeMutableCopy, makeMutableCopy, mergeFromAndMakeImmutableInternal, newFileScopedGeneratedExtension, newInstance, newMessageScopedGeneratedExtension, parseDelimitedWithIOException, parseDelimitedWithIOException, parseUnknownField, parseUnknownFieldProto3, parseWithIOException, parseWithIOException, parseWithIOException, parseWithIOException, serializeBooleanMapTo, serializeIntegerMapTo, serializeLongMapTo, serializeStringMapTo, writeReplace, writeString, writeStringNoTag
Methods inherited from class com.google.protobuf.AbstractMessage
findInitializationErrors, getInitializationErrorString, hashFields, toString
Methods inherited from class com.google.protobuf.AbstractMessageLite
addAll, checkByteStringIsUtf8, toByteArray, toByteString, writeDelimitedTo, writeTo
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.google.protobuf.MessageLite
toByteArray, toByteString, writeDelimitedTo, writeTo
Methods inherited from interface com.google.protobuf.MessageOrBuilder
findInitializationErrors, getAllFields, getDescriptorForType, getField, getInitializationErrorString, getOneofFieldDescriptor, getRepeatedField, getRepeatedFieldCount, getUnknownFields, hasField, hasOneof
-
Field Details
-
TERMINATION_CRITERIA_FIELD_NUMBER
public static final int TERMINATION_CRITERIA_FIELD_NUMBER- See Also:
-
NUM_THREADS_FIELD_NUMBER
public static final int NUM_THREADS_FIELD_NUMBER- See Also:
-
NUM_SHARDS_FIELD_NUMBER
public static final int NUM_SHARDS_FIELD_NUMBER- See Also:
-
SCHEDULER_TYPE_FIELD_NUMBER
public static final int SCHEDULER_TYPE_FIELD_NUMBER- See Also:
-
RECORD_ITERATION_STATS_FIELD_NUMBER
public static final int RECORD_ITERATION_STATS_FIELD_NUMBER- See Also:
-
VERBOSITY_LEVEL_FIELD_NUMBER
public static final int VERBOSITY_LEVEL_FIELD_NUMBER- See Also:
-
LOG_INTERVAL_SECONDS_FIELD_NUMBER
public static final int LOG_INTERVAL_SECONDS_FIELD_NUMBER- See Also:
-
MAJOR_ITERATION_FREQUENCY_FIELD_NUMBER
public static final int MAJOR_ITERATION_FREQUENCY_FIELD_NUMBER- See Also:
-
TERMINATION_CHECK_FREQUENCY_FIELD_NUMBER
public static final int TERMINATION_CHECK_FREQUENCY_FIELD_NUMBER- See Also:
-
RESTART_STRATEGY_FIELD_NUMBER
public static final int RESTART_STRATEGY_FIELD_NUMBER- See Also:
-
PRIMAL_WEIGHT_UPDATE_SMOOTHING_FIELD_NUMBER
public static final int PRIMAL_WEIGHT_UPDATE_SMOOTHING_FIELD_NUMBER- See Also:
-
INITIAL_PRIMAL_WEIGHT_FIELD_NUMBER
public static final int INITIAL_PRIMAL_WEIGHT_FIELD_NUMBER- See Also:
-
PRESOLVE_OPTIONS_FIELD_NUMBER
public static final int PRESOLVE_OPTIONS_FIELD_NUMBER- See Also:
-
L_INF_RUIZ_ITERATIONS_FIELD_NUMBER
public static final int L_INF_RUIZ_ITERATIONS_FIELD_NUMBER- See Also:
-
L2_NORM_RESCALING_FIELD_NUMBER
public static final int L2_NORM_RESCALING_FIELD_NUMBER- See Also:
-
SUFFICIENT_REDUCTION_FOR_RESTART_FIELD_NUMBER
public static final int SUFFICIENT_REDUCTION_FOR_RESTART_FIELD_NUMBER- See Also:
-
NECESSARY_REDUCTION_FOR_RESTART_FIELD_NUMBER
public static final int NECESSARY_REDUCTION_FOR_RESTART_FIELD_NUMBER- See Also:
-
LINESEARCH_RULE_FIELD_NUMBER
public static final int LINESEARCH_RULE_FIELD_NUMBER- See Also:
-
ADAPTIVE_LINESEARCH_PARAMETERS_FIELD_NUMBER
public static final int ADAPTIVE_LINESEARCH_PARAMETERS_FIELD_NUMBER- See Also:
-
MALITSKY_POCK_PARAMETERS_FIELD_NUMBER
public static final int MALITSKY_POCK_PARAMETERS_FIELD_NUMBER- See Also:
-
INITIAL_STEP_SIZE_SCALING_FIELD_NUMBER
public static final int INITIAL_STEP_SIZE_SCALING_FIELD_NUMBER- See Also:
-
RANDOM_PROJECTION_SEEDS_FIELD_NUMBER
public static final int RANDOM_PROJECTION_SEEDS_FIELD_NUMBER- See Also:
-
INFINITE_CONSTRAINT_BOUND_THRESHOLD_FIELD_NUMBER
public static final int INFINITE_CONSTRAINT_BOUND_THRESHOLD_FIELD_NUMBER- See Also:
-
HANDLE_SOME_PRIMAL_GRADIENTS_ON_FINITE_BOUNDS_AS_RESIDUALS_FIELD_NUMBER
public static final int HANDLE_SOME_PRIMAL_GRADIENTS_ON_FINITE_BOUNDS_AS_RESIDUALS_FIELD_NUMBER- See Also:
-
USE_DIAGONAL_QP_TRUST_REGION_SOLVER_FIELD_NUMBER
public static final int USE_DIAGONAL_QP_TRUST_REGION_SOLVER_FIELD_NUMBER- See Also:
-
DIAGONAL_QP_TRUST_REGION_SOLVER_TOLERANCE_FIELD_NUMBER
public static final int DIAGONAL_QP_TRUST_REGION_SOLVER_TOLERANCE_FIELD_NUMBER- See Also:
-
USE_FEASIBILITY_POLISHING_FIELD_NUMBER
public static final int USE_FEASIBILITY_POLISHING_FIELD_NUMBER- See Also:
-
APPLY_FEASIBILITY_POLISHING_AFTER_LIMITS_REACHED_FIELD_NUMBER
public static final int APPLY_FEASIBILITY_POLISHING_AFTER_LIMITS_REACHED_FIELD_NUMBER- See Also:
-
APPLY_FEASIBILITY_POLISHING_IF_SOLVER_IS_INTERRUPTED_FIELD_NUMBER
public static final int APPLY_FEASIBILITY_POLISHING_IF_SOLVER_IS_INTERRUPTED_FIELD_NUMBER- See Also:
-
-
Method Details
-
getDescriptor
public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() -
internalGetFieldAccessorTable
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable()- Specified by:
internalGetFieldAccessorTable
in classcom.google.protobuf.GeneratedMessage
-
hasTerminationCriteria
public boolean hasTerminationCriteria()optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
- Specified by:
hasTerminationCriteria
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the terminationCriteria field is set.
-
getTerminationCriteria
optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
- Specified by:
getTerminationCriteria
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The terminationCriteria.
-
getTerminationCriteriaOrBuilder
optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
- Specified by:
getTerminationCriteriaOrBuilder
in interfacePrimalDualHybridGradientParamsOrBuilder
-
hasNumThreads
public 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];
- Specified by:
hasNumThreads
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the numThreads field is set.
-
getNumThreads
public 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];
- Specified by:
getNumThreads
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The numThreads.
-
hasNumShards
public 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];
- Specified by:
hasNumShards
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the numShards field is set.
-
getNumShards
public 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];
- Specified by:
getNumShards
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The numShards.
-
hasSchedulerType
public 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];
- Specified by:
hasSchedulerType
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the schedulerType field is set.
-
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];
- Specified by:
getSchedulerType
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The schedulerType.
-
hasRecordIterationStats
public 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;
- Specified by:
hasRecordIterationStats
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the recordIterationStats field is set.
-
getRecordIterationStats
public 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;
- Specified by:
getRecordIterationStats
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The recordIterationStats.
-
hasVerbosityLevel
public 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];
- Specified by:
hasVerbosityLevel
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the verbosityLevel field is set.
-
getVerbosityLevel
public 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];
- Specified by:
getVerbosityLevel
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The verbosityLevel.
-
hasLogIntervalSeconds
public 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];
- Specified by:
hasLogIntervalSeconds
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the logIntervalSeconds field is set.
-
getLogIntervalSeconds
public 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];
- Specified by:
getLogIntervalSeconds
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The logIntervalSeconds.
-
hasMajorIterationFrequency
public 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];
- Specified by:
hasMajorIterationFrequency
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the majorIterationFrequency field is set.
-
getMajorIterationFrequency
public 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];
- Specified by:
getMajorIterationFrequency
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The majorIterationFrequency.
-
hasTerminationCheckFrequency
public 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];
- Specified by:
hasTerminationCheckFrequency
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the terminationCheckFrequency field is set.
-
getTerminationCheckFrequency
public 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];
- Specified by:
getTerminationCheckFrequency
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The terminationCheckFrequency.
-
hasRestartStrategy
public 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];
- Specified by:
hasRestartStrategy
in interfacePrimalDualHybridGradientParamsOrBuilder
- 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];
- Specified by:
getRestartStrategy
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The restartStrategy.
-
hasPrimalWeightUpdateSmoothing
public 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];
- Specified by:
hasPrimalWeightUpdateSmoothing
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the primalWeightUpdateSmoothing field is set.
-
getPrimalWeightUpdateSmoothing
public 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];
- Specified by:
getPrimalWeightUpdateSmoothing
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The primalWeightUpdateSmoothing.
-
hasInitialPrimalWeight
public 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;
- Specified by:
hasInitialPrimalWeight
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the initialPrimalWeight field is set.
-
getInitialPrimalWeight
public 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;
- Specified by:
getInitialPrimalWeight
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The initialPrimalWeight.
-
hasPresolveOptions
public boolean hasPresolveOptions()optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
- Specified by:
hasPresolveOptions
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the presolveOptions field is set.
-
getPresolveOptions
optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
- Specified by:
getPresolveOptions
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The presolveOptions.
-
getPresolveOptionsOrBuilder
optional .operations_research.pdlp.PrimalDualHybridGradientParams.PresolveOptions presolve_options = 16;
- Specified by:
getPresolveOptionsOrBuilder
in interfacePrimalDualHybridGradientParamsOrBuilder
-
hasLInfRuizIterations
public 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];
- Specified by:
hasLInfRuizIterations
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the lInfRuizIterations field is set.
-
getLInfRuizIterations
public 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];
- Specified by:
getLInfRuizIterations
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The lInfRuizIterations.
-
hasL2NormRescaling
public 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];
- Specified by:
hasL2NormRescaling
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the l2NormRescaling field is set.
-
getL2NormRescaling
public 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];
- Specified by:
getL2NormRescaling
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The l2NormRescaling.
-
hasSufficientReductionForRestart
public 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];
- Specified by:
hasSufficientReductionForRestart
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the sufficientReductionForRestart field is set.
-
getSufficientReductionForRestart
public 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];
- Specified by:
getSufficientReductionForRestart
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The sufficientReductionForRestart.
-
hasNecessaryReductionForRestart
public 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];
- Specified by:
hasNecessaryReductionForRestart
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the necessaryReductionForRestart field is set.
-
getNecessaryReductionForRestart
public 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];
- Specified by:
getNecessaryReductionForRestart
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The necessaryReductionForRestart.
-
hasLinesearchRule
public boolean hasLinesearchRule()Linesearch rule applied at each major iteration.
optional .operations_research.pdlp.PrimalDualHybridGradientParams.LinesearchRule linesearch_rule = 12 [default = ADAPTIVE_LINESEARCH_RULE];
- Specified by:
hasLinesearchRule
in interfacePrimalDualHybridGradientParamsOrBuilder
- 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];
- Specified by:
getLinesearchRule
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The linesearchRule.
-
hasAdaptiveLinesearchParameters
public boolean hasAdaptiveLinesearchParameters()optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
- Specified by:
hasAdaptiveLinesearchParameters
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the adaptiveLinesearchParameters field is set.
-
getAdaptiveLinesearchParameters
optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
- Specified by:
getAdaptiveLinesearchParameters
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The adaptiveLinesearchParameters.
-
getAdaptiveLinesearchParametersOrBuilder
optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
- Specified by:
getAdaptiveLinesearchParametersOrBuilder
in interfacePrimalDualHybridGradientParamsOrBuilder
-
hasMalitskyPockParameters
public boolean hasMalitskyPockParameters()optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
- Specified by:
hasMalitskyPockParameters
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the malitskyPockParameters field is set.
-
getMalitskyPockParameters
optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
- Specified by:
getMalitskyPockParameters
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The malitskyPockParameters.
-
getMalitskyPockParametersOrBuilder
optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
- Specified by:
getMalitskyPockParametersOrBuilder
in interfacePrimalDualHybridGradientParamsOrBuilder
-
hasInitialStepSizeScaling
public 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];
- Specified by:
hasInitialStepSizeScaling
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the initialStepSizeScaling field is set.
-
getInitialStepSizeScaling
public 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];
- Specified by:
getInitialStepSizeScaling
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The initialStepSizeScaling.
-
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];
- Specified by:
getRandomProjectionSeedsList
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- A list containing the randomProjectionSeeds.
-
getRandomProjectionSeedsCount
public 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];
- Specified by:
getRandomProjectionSeedsCount
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The count of randomProjectionSeeds.
-
getRandomProjectionSeeds
public 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];
- Specified by:
getRandomProjectionSeeds
in interfacePrimalDualHybridGradientParamsOrBuilder
- Parameters:
index
- The index of the element to return.- Returns:
- The randomProjectionSeeds at the given index.
-
hasInfiniteConstraintBoundThreshold
public 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];
- Specified by:
hasInfiniteConstraintBoundThreshold
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the infiniteConstraintBoundThreshold field is set.
-
getInfiniteConstraintBoundThreshold
public 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];
- Specified by:
getInfiniteConstraintBoundThreshold
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The infiniteConstraintBoundThreshold.
-
hasHandleSomePrimalGradientsOnFiniteBoundsAsResiduals
public 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];
- Specified by:
hasHandleSomePrimalGradientsOnFiniteBoundsAsResiduals
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the handleSomePrimalGradientsOnFiniteBoundsAsResiduals field is set.
-
getHandleSomePrimalGradientsOnFiniteBoundsAsResiduals
public 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];
- Specified by:
getHandleSomePrimalGradientsOnFiniteBoundsAsResiduals
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The handleSomePrimalGradientsOnFiniteBoundsAsResiduals.
-
hasUseDiagonalQpTrustRegionSolver
public 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];
- Specified by:
hasUseDiagonalQpTrustRegionSolver
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the useDiagonalQpTrustRegionSolver field is set.
-
getUseDiagonalQpTrustRegionSolver
public 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];
- Specified by:
getUseDiagonalQpTrustRegionSolver
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The useDiagonalQpTrustRegionSolver.
-
hasDiagonalQpTrustRegionSolverTolerance
public 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];
- Specified by:
hasDiagonalQpTrustRegionSolverTolerance
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the diagonalQpTrustRegionSolverTolerance field is set.
-
getDiagonalQpTrustRegionSolverTolerance
public 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];
- Specified by:
getDiagonalQpTrustRegionSolverTolerance
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The diagonalQpTrustRegionSolverTolerance.
-
hasUseFeasibilityPolishing
public 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];
- Specified by:
hasUseFeasibilityPolishing
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the useFeasibilityPolishing field is set.
-
getUseFeasibilityPolishing
public 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];
- Specified by:
getUseFeasibilityPolishing
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The useFeasibilityPolishing.
-
hasApplyFeasibilityPolishingAfterLimitsReached
public 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];
- Specified by:
hasApplyFeasibilityPolishingAfterLimitsReached
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the applyFeasibilityPolishingAfterLimitsReached field is set.
-
getApplyFeasibilityPolishingAfterLimitsReached
public 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];
- Specified by:
getApplyFeasibilityPolishingAfterLimitsReached
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The applyFeasibilityPolishingAfterLimitsReached.
-
hasApplyFeasibilityPolishingIfSolverIsInterrupted
public 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];
- Specified by:
hasApplyFeasibilityPolishingIfSolverIsInterrupted
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- Whether the applyFeasibilityPolishingIfSolverIsInterrupted field is set.
-
getApplyFeasibilityPolishingIfSolverIsInterrupted
public 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];
- Specified by:
getApplyFeasibilityPolishingIfSolverIsInterrupted
in interfacePrimalDualHybridGradientParamsOrBuilder
- Returns:
- The applyFeasibilityPolishingIfSolverIsInterrupted.
-
isInitialized
public final boolean isInitialized()- Specified by:
isInitialized
in interfacecom.google.protobuf.MessageLiteOrBuilder
- Overrides:
isInitialized
in classcom.google.protobuf.GeneratedMessage
-
writeTo
- Specified by:
writeTo
in interfacecom.google.protobuf.MessageLite
- Overrides:
writeTo
in classcom.google.protobuf.GeneratedMessage
- Throws:
IOException
-
getSerializedSize
public int getSerializedSize()- Specified by:
getSerializedSize
in interfacecom.google.protobuf.MessageLite
- Overrides:
getSerializedSize
in classcom.google.protobuf.GeneratedMessage
-
equals
- Specified by:
equals
in interfacecom.google.protobuf.Message
- Overrides:
equals
in classcom.google.protobuf.AbstractMessage
-
hashCode
public int hashCode()- Specified by:
hashCode
in interfacecom.google.protobuf.Message
- Overrides:
hashCode
in classcom.google.protobuf.AbstractMessage
-
parseFrom
public static PrimalDualHybridGradientParams parseFrom(ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException - Throws:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
public static PrimalDualHybridGradientParams parseFrom(ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException - Throws:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
public static PrimalDualHybridGradientParams parseFrom(com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException - Throws:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
public static PrimalDualHybridGradientParams parseFrom(com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException - Throws:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
public static PrimalDualHybridGradientParams parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException - Throws:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
public static PrimalDualHybridGradientParams parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException - Throws:
com.google.protobuf.InvalidProtocolBufferException
-
parseFrom
- Throws:
IOException
-
parseFrom
public static PrimalDualHybridGradientParams parseFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException - Throws:
IOException
-
parseDelimitedFrom
public static PrimalDualHybridGradientParams parseDelimitedFrom(InputStream input) throws IOException - Throws:
IOException
-
parseDelimitedFrom
public static PrimalDualHybridGradientParams parseDelimitedFrom(InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException - Throws:
IOException
-
parseFrom
public static PrimalDualHybridGradientParams parseFrom(com.google.protobuf.CodedInputStream input) throws IOException - Throws:
IOException
-
parseFrom
public static PrimalDualHybridGradientParams parseFrom(com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws IOException - Throws:
IOException
-
newBuilderForType
- Specified by:
newBuilderForType
in interfacecom.google.protobuf.Message
- Specified by:
newBuilderForType
in interfacecom.google.protobuf.MessageLite
-
newBuilder
-
newBuilder
public static PrimalDualHybridGradientParams.Builder newBuilder(PrimalDualHybridGradientParams prototype) -
toBuilder
- Specified by:
toBuilder
in interfacecom.google.protobuf.Message
- Specified by:
toBuilder
in interfacecom.google.protobuf.MessageLite
-
newBuilderForType
protected PrimalDualHybridGradientParams.Builder newBuilderForType(com.google.protobuf.AbstractMessage.BuilderParent parent) - Overrides:
newBuilderForType
in classcom.google.protobuf.AbstractMessage
-
getDefaultInstance
-
parser
-
getParserForType
- Specified by:
getParserForType
in interfacecom.google.protobuf.Message
- Specified by:
getParserForType
in interfacecom.google.protobuf.MessageLite
- Overrides:
getParserForType
in classcom.google.protobuf.GeneratedMessage
-
getDefaultInstanceForType
- Specified by:
getDefaultInstanceForType
in interfacecom.google.protobuf.MessageLiteOrBuilder
- Specified by:
getDefaultInstanceForType
in interfacecom.google.protobuf.MessageOrBuilder
-