Class Solvers.PrimalDualHybridGradientParams.Builder

  • All Implemented Interfaces:
    com.google.protobuf.Message.Builder, com.google.protobuf.MessageLite.Builder, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, java.lang.Cloneable, Solvers.PrimalDualHybridGradientParamsOrBuilder
    Enclosing class:
    Solvers.PrimalDualHybridGradientParams

    public static final class Solvers.PrimalDualHybridGradientParams.Builder
    extends com.google.protobuf.GeneratedMessageV3.Builder<Solvers.PrimalDualHybridGradientParams.Builder>
    implements Solvers.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
    • Method Detail

      • getDescriptor

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
      • internalGetFieldAccessorTable

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
        Specified by:
        internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.PrimalDualHybridGradientParams.Builder>
      • getDescriptorForType

        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType()
        Specified by:
        getDescriptorForType in interface com.google.protobuf.Message.Builder
        Specified by:
        getDescriptorForType in interface com.google.protobuf.MessageOrBuilder
        Overrides:
        getDescriptorForType in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.PrimalDualHybridGradientParams.Builder>
      • getDefaultInstanceForType

        public Solvers.PrimalDualHybridGradientParams getDefaultInstanceForType()
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder
      • build

        public Solvers.PrimalDualHybridGradientParams build()
        Specified by:
        build in interface com.google.protobuf.Message.Builder
        Specified by:
        build in interface com.google.protobuf.MessageLite.Builder
      • buildPartial

        public Solvers.PrimalDualHybridGradientParams buildPartial()
        Specified by:
        buildPartial in interface com.google.protobuf.Message.Builder
        Specified by:
        buildPartial in interface com.google.protobuf.MessageLite.Builder
      • isInitialized

        public final boolean isInitialized()
        Specified by:
        isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
        Overrides:
        isInitialized in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.PrimalDualHybridGradientParams.Builder>
      • mergeFrom

        public Solvers.PrimalDualHybridGradientParams.Builder mergeFrom​(com.google.protobuf.CodedInputStream input,
                                                                        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                                 throws java.io.IOException
        Specified by:
        mergeFrom in interface com.google.protobuf.Message.Builder
        Specified by:
        mergeFrom in interface com.google.protobuf.MessageLite.Builder
        Overrides:
        mergeFrom in class com.google.protobuf.AbstractMessage.Builder<Solvers.PrimalDualHybridGradientParams.Builder>
        Throws:
        java.io.IOException
      • getTerminationCriteriaBuilder

        public Solvers.TerminationCriteria.Builder getTerminationCriteriaBuilder()
        optional .operations_research.pdlp.TerminationCriteria termination_criteria = 1;
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The numThreads.
      • setNumThreads

        public Solvers.PrimalDualHybridGradientParams.Builder setNumThreads​(int value)
         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];
        Parameters:
        value - The numThreads to set.
        Returns:
        This builder for chaining.
      • clearNumThreads

        public Solvers.PrimalDualHybridGradientParams.Builder clearNumThreads()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The numShards.
      • setNumShards

        public Solvers.PrimalDualHybridGradientParams.Builder setNumShards​(int value)
         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];
        Parameters:
        value - The numShards to set.
        Returns:
        This builder for chaining.
      • clearNumShards

        public Solvers.PrimalDualHybridGradientParams.Builder clearNumShards()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The recordIterationStats.
      • setRecordIterationStats

        public Solvers.PrimalDualHybridGradientParams.Builder setRecordIterationStats​(boolean value)
         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;
        Parameters:
        value - The recordIterationStats to set.
        Returns:
        This builder for chaining.
      • clearRecordIterationStats

        public Solvers.PrimalDualHybridGradientParams.Builder clearRecordIterationStats()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The verbosityLevel.
      • setVerbosityLevel

        public Solvers.PrimalDualHybridGradientParams.Builder setVerbosityLevel​(int value)
         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];
        Parameters:
        value - The verbosityLevel to set.
        Returns:
        This builder for chaining.
      • clearVerbosityLevel

        public Solvers.PrimalDualHybridGradientParams.Builder clearVerbosityLevel()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The logIntervalSeconds.
      • setLogIntervalSeconds

        public Solvers.PrimalDualHybridGradientParams.Builder setLogIntervalSeconds​(double value)
         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];
        Parameters:
        value - The logIntervalSeconds to set.
        Returns:
        This builder for chaining.
      • clearLogIntervalSeconds

        public Solvers.PrimalDualHybridGradientParams.Builder clearLogIntervalSeconds()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The majorIterationFrequency.
      • setMajorIterationFrequency

        public Solvers.PrimalDualHybridGradientParams.Builder setMajorIterationFrequency​(int value)
         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];
        Parameters:
        value - The majorIterationFrequency to set.
        Returns:
        This builder for chaining.
      • clearMajorIterationFrequency

        public Solvers.PrimalDualHybridGradientParams.Builder clearMajorIterationFrequency()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The terminationCheckFrequency.
      • setTerminationCheckFrequency

        public Solvers.PrimalDualHybridGradientParams.Builder setTerminationCheckFrequency​(int value)
         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];
        Parameters:
        value - The terminationCheckFrequency to set.
        Returns:
        This builder for chaining.
      • clearTerminationCheckFrequency

        public Solvers.PrimalDualHybridGradientParams.Builder clearTerminationCheckFrequency()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        Whether the restartStrategy field is set.
      • setRestartStrategy

        public Solvers.PrimalDualHybridGradientParams.Builder setRestartStrategy​(Solvers.PrimalDualHybridGradientParams.RestartStrategy value)
         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];
        Parameters:
        value - The restartStrategy to set.
        Returns:
        This builder for chaining.
      • clearRestartStrategy

        public Solvers.PrimalDualHybridGradientParams.Builder clearRestartStrategy()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The primalWeightUpdateSmoothing.
      • setPrimalWeightUpdateSmoothing

        public Solvers.PrimalDualHybridGradientParams.Builder setPrimalWeightUpdateSmoothing​(double value)
         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];
        Parameters:
        value - The primalWeightUpdateSmoothing to set.
        Returns:
        This builder for chaining.
      • clearPrimalWeightUpdateSmoothing

        public Solvers.PrimalDualHybridGradientParams.Builder clearPrimalWeightUpdateSmoothing()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The initialPrimalWeight.
      • setInitialPrimalWeight

        public Solvers.PrimalDualHybridGradientParams.Builder setInitialPrimalWeight​(double value)
         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;
        Parameters:
        value - The initialPrimalWeight to set.
        Returns:
        This builder for chaining.
      • clearInitialPrimalWeight

        public Solvers.PrimalDualHybridGradientParams.Builder clearInitialPrimalWeight()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The lInfRuizIterations.
      • setLInfRuizIterations

        public Solvers.PrimalDualHybridGradientParams.Builder setLInfRuizIterations​(int value)
         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];
        Parameters:
        value - The lInfRuizIterations to set.
        Returns:
        This builder for chaining.
      • clearLInfRuizIterations

        public Solvers.PrimalDualHybridGradientParams.Builder clearLInfRuizIterations()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The l2NormRescaling.
      • setL2NormRescaling

        public Solvers.PrimalDualHybridGradientParams.Builder setL2NormRescaling​(boolean value)
         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];
        Parameters:
        value - The l2NormRescaling to set.
        Returns:
        This builder for chaining.
      • clearL2NormRescaling

        public Solvers.PrimalDualHybridGradientParams.Builder clearL2NormRescaling()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The sufficientReductionForRestart.
      • setSufficientReductionForRestart

        public Solvers.PrimalDualHybridGradientParams.Builder setSufficientReductionForRestart​(double value)
         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];
        Parameters:
        value - The sufficientReductionForRestart to set.
        Returns:
        This builder for chaining.
      • clearSufficientReductionForRestart

        public Solvers.PrimalDualHybridGradientParams.Builder clearSufficientReductionForRestart()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The necessaryReductionForRestart.
      • setNecessaryReductionForRestart

        public Solvers.PrimalDualHybridGradientParams.Builder setNecessaryReductionForRestart​(double value)
         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];
        Parameters:
        value - The necessaryReductionForRestart to set.
        Returns:
        This builder for chaining.
      • clearNecessaryReductionForRestart

        public Solvers.PrimalDualHybridGradientParams.Builder clearNecessaryReductionForRestart()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        Whether the linesearchRule field is set.
      • clearLinesearchRule

        public Solvers.PrimalDualHybridGradientParams.Builder clearLinesearchRule()
         Linesearch rule applied at each major iteration.
         
        optional .operations_research.pdlp.PrimalDualHybridGradientParams.LinesearchRule linesearch_rule = 12 [default = ADAPTIVE_LINESEARCH_RULE];
        Returns:
        This builder for chaining.
      • getAdaptiveLinesearchParametersBuilder

        public Solvers.AdaptiveLinesearchParams.Builder getAdaptiveLinesearchParametersBuilder()
        optional .operations_research.pdlp.AdaptiveLinesearchParams adaptive_linesearch_parameters = 18;
      • getMalitskyPockParametersBuilder

        public Solvers.MalitskyPockParams.Builder getMalitskyPockParametersBuilder()
        optional .operations_research.pdlp.MalitskyPockParams malitsky_pock_parameters = 19;
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The initialStepSizeScaling.
      • setInitialStepSizeScaling

        public Solvers.PrimalDualHybridGradientParams.Builder setInitialStepSizeScaling​(double value)
         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];
        Parameters:
        value - The initialStepSizeScaling to set.
        Returns:
        This builder for chaining.
      • clearInitialStepSizeScaling

        public Solvers.PrimalDualHybridGradientParams.Builder clearInitialStepSizeScaling()
         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:
        This builder for chaining.
      • getRandomProjectionSeedsList

        public java.util.List<java.lang.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];
        Specified by:
        getRandomProjectionSeedsList in interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Parameters:
        index - The index of the element to return.
        Returns:
        The randomProjectionSeeds at the given index.
      • setRandomProjectionSeeds

        public Solvers.PrimalDualHybridGradientParams.Builder setRandomProjectionSeeds​(int index,
                                                                                       int value)
         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 to set the value at.
        value - The randomProjectionSeeds to set.
        Returns:
        This builder for chaining.
      • addRandomProjectionSeeds

        public Solvers.PrimalDualHybridGradientParams.Builder addRandomProjectionSeeds​(int value)
         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:
        value - The randomProjectionSeeds to add.
        Returns:
        This builder for chaining.
      • addAllRandomProjectionSeeds

        public Solvers.PrimalDualHybridGradientParams.Builder addAllRandomProjectionSeeds​(java.lang.Iterable<? extends java.lang.Integer> values)
         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:
        values - The randomProjectionSeeds to add.
        Returns:
        This builder for chaining.
      • clearRandomProjectionSeeds

        public Solvers.PrimalDualHybridGradientParams.Builder clearRandomProjectionSeeds()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The infiniteConstraintBoundThreshold.
      • setInfiniteConstraintBoundThreshold

        public Solvers.PrimalDualHybridGradientParams.Builder setInfiniteConstraintBoundThreshold​(double value)
         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];
        Parameters:
        value - The infiniteConstraintBoundThreshold to set.
        Returns:
        This builder for chaining.
      • clearInfiniteConstraintBoundThreshold

        public Solvers.PrimalDualHybridGradientParams.Builder clearInfiniteConstraintBoundThreshold()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The handleSomePrimalGradientsOnFiniteBoundsAsResiduals.
      • setHandleSomePrimalGradientsOnFiniteBoundsAsResiduals

        public Solvers.PrimalDualHybridGradientParams.Builder setHandleSomePrimalGradientsOnFiniteBoundsAsResiduals​(boolean value)
         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];
        Parameters:
        value - The handleSomePrimalGradientsOnFiniteBoundsAsResiduals to set.
        Returns:
        This builder for chaining.
      • clearHandleSomePrimalGradientsOnFiniteBoundsAsResiduals

        public Solvers.PrimalDualHybridGradientParams.Builder clearHandleSomePrimalGradientsOnFiniteBoundsAsResiduals()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The useDiagonalQpTrustRegionSolver.
      • setUseDiagonalQpTrustRegionSolver

        public Solvers.PrimalDualHybridGradientParams.Builder setUseDiagonalQpTrustRegionSolver​(boolean value)
         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];
        Parameters:
        value - The useDiagonalQpTrustRegionSolver to set.
        Returns:
        This builder for chaining.
      • clearUseDiagonalQpTrustRegionSolver

        public Solvers.PrimalDualHybridGradientParams.Builder clearUseDiagonalQpTrustRegionSolver()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The diagonalQpTrustRegionSolverTolerance.
      • setDiagonalQpTrustRegionSolverTolerance

        public Solvers.PrimalDualHybridGradientParams.Builder setDiagonalQpTrustRegionSolverTolerance​(double value)
         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];
        Parameters:
        value - The diagonalQpTrustRegionSolverTolerance to set.
        Returns:
        This builder for chaining.
      • clearDiagonalQpTrustRegionSolverTolerance

        public Solvers.PrimalDualHybridGradientParams.Builder clearDiagonalQpTrustRegionSolverTolerance()
         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:
        This builder for chaining.
      • 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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        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 interface Solvers.PrimalDualHybridGradientParamsOrBuilder
        Returns:
        The useFeasibilityPolishing.
      • setUseFeasibilityPolishing

        public Solvers.PrimalDualHybridGradientParams.Builder setUseFeasibilityPolishing​(boolean value)
         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];
        Parameters:
        value - The useFeasibilityPolishing to set.
        Returns:
        This builder for chaining.
      • clearUseFeasibilityPolishing

        public Solvers.PrimalDualHybridGradientParams.Builder clearUseFeasibilityPolishing()
         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:
        This builder for chaining.