Class Solvers.TerminationCriteria.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.TerminationCriteriaOrBuilder
    Enclosing class:
    Solvers.TerminationCriteria

    public static final class Solvers.TerminationCriteria.Builder
    extends com.google.protobuf.GeneratedMessageV3.Builder<Solvers.TerminationCriteria.Builder>
    implements Solvers.TerminationCriteriaOrBuilder
     Relevant readings on infeasibility certificates:
     (1) https://docs.mosek.com/modeling-cookbook/qcqo.html provides references
     explaining why the primal rays imply dual infeasibility and dual rays imply
     primal infeasibility.
     (2) The termination criteria for Mosek's linear programming optimizer
     https://docs.mosek.com/9.0/pythonfusion/solving-linear.html.
     (3) The termination criteria for OSQP is in section 3.3 of
     https://web.stanford.edu/~boyd/papers/pdf/osqp.pdf.
     (4) The termination criteria for SCS is in section 3.5 of
     https://arxiv.org/pdf/1312.3039.pdf.
     
    Protobuf type operations_research.pdlp.TerminationCriteria
    • 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.TerminationCriteria.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.TerminationCriteria.Builder>
      • getDefaultInstanceForType

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

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

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

        public Solvers.TerminationCriteria.Builder setRepeatedField​(com.google.protobuf.Descriptors.FieldDescriptor field,
                                                                    int index,
                                                                    java.lang.Object value)
        Specified by:
        setRepeatedField in interface com.google.protobuf.Message.Builder
        Overrides:
        setRepeatedField in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.TerminationCriteria.Builder>
      • addRepeatedField

        public Solvers.TerminationCriteria.Builder addRepeatedField​(com.google.protobuf.Descriptors.FieldDescriptor field,
                                                                    java.lang.Object value)
        Specified by:
        addRepeatedField in interface com.google.protobuf.Message.Builder
        Overrides:
        addRepeatedField in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.TerminationCriteria.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.TerminationCriteria.Builder>
      • mergeFrom

        public Solvers.TerminationCriteria.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.TerminationCriteria.Builder>
        Throws:
        java.io.IOException
      • hasOptimalityNorm

        public boolean hasOptimalityNorm()
         The norm that we are measuring the optimality criteria in.
         
        optional .operations_research.pdlp.OptimalityNorm optimality_norm = 1 [default = OPTIMALITY_NORM_L2];
        Specified by:
        hasOptimalityNorm in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        Whether the optimalityNorm field is set.
      • setOptimalityNorm

        public Solvers.TerminationCriteria.Builder setOptimalityNorm​(Solvers.OptimalityNorm value)
         The norm that we are measuring the optimality criteria in.
         
        optional .operations_research.pdlp.OptimalityNorm optimality_norm = 1 [default = OPTIMALITY_NORM_L2];
        Parameters:
        value - The optimalityNorm to set.
        Returns:
        This builder for chaining.
      • clearOptimalityNorm

        public Solvers.TerminationCriteria.Builder clearOptimalityNorm()
         The norm that we are measuring the optimality criteria in.
         
        optional .operations_research.pdlp.OptimalityNorm optimality_norm = 1 [default = OPTIMALITY_NORM_L2];
        Returns:
        This builder for chaining.
      • hasSimpleOptimalityCriteria

        public boolean hasSimpleOptimalityCriteria()
        .operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria simple_optimality_criteria = 9;
        Specified by:
        hasSimpleOptimalityCriteria in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        Whether the simpleOptimalityCriteria field is set.
      • clearSimpleOptimalityCriteria

        public Solvers.TerminationCriteria.Builder clearSimpleOptimalityCriteria()
        .operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria simple_optimality_criteria = 9;
      • hasDetailedOptimalityCriteria

        public boolean hasDetailedOptimalityCriteria()
        .operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria detailed_optimality_criteria = 10;
        Specified by:
        hasDetailedOptimalityCriteria in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        Whether the detailedOptimalityCriteria field is set.
      • clearDetailedOptimalityCriteria

        public Solvers.TerminationCriteria.Builder clearDetailedOptimalityCriteria()
        .operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria detailed_optimality_criteria = 10;
      • hasEpsOptimalAbsolute

        @Deprecated
        public boolean hasEpsOptimalAbsolute()
        Deprecated.
        operations_research.pdlp.TerminationCriteria.eps_optimal_absolute is deprecated. See ortools/pdlp/solvers.proto;l=133
         Absolute tolerance on primal residual, dual residual, and the objective
         gap.
         Deprecated, use simple_optimality_criteria instead.
         TODO(b/241462829) delete this deprecated field.
         
        optional double eps_optimal_absolute = 2 [default = 1e-06, deprecated = true];
        Specified by:
        hasEpsOptimalAbsolute in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        Whether the epsOptimalAbsolute field is set.
      • getEpsOptimalAbsolute

        @Deprecated
        public double getEpsOptimalAbsolute()
        Deprecated.
        operations_research.pdlp.TerminationCriteria.eps_optimal_absolute is deprecated. See ortools/pdlp/solvers.proto;l=133
         Absolute tolerance on primal residual, dual residual, and the objective
         gap.
         Deprecated, use simple_optimality_criteria instead.
         TODO(b/241462829) delete this deprecated field.
         
        optional double eps_optimal_absolute = 2 [default = 1e-06, deprecated = true];
        Specified by:
        getEpsOptimalAbsolute in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        The epsOptimalAbsolute.
      • setEpsOptimalAbsolute

        @Deprecated
        public Solvers.TerminationCriteria.Builder setEpsOptimalAbsolute​(double value)
        Deprecated.
        operations_research.pdlp.TerminationCriteria.eps_optimal_absolute is deprecated. See ortools/pdlp/solvers.proto;l=133
         Absolute tolerance on primal residual, dual residual, and the objective
         gap.
         Deprecated, use simple_optimality_criteria instead.
         TODO(b/241462829) delete this deprecated field.
         
        optional double eps_optimal_absolute = 2 [default = 1e-06, deprecated = true];
        Parameters:
        value - The epsOptimalAbsolute to set.
        Returns:
        This builder for chaining.
      • clearEpsOptimalAbsolute

        @Deprecated
        public Solvers.TerminationCriteria.Builder clearEpsOptimalAbsolute()
        Deprecated.
        operations_research.pdlp.TerminationCriteria.eps_optimal_absolute is deprecated. See ortools/pdlp/solvers.proto;l=133
         Absolute tolerance on primal residual, dual residual, and the objective
         gap.
         Deprecated, use simple_optimality_criteria instead.
         TODO(b/241462829) delete this deprecated field.
         
        optional double eps_optimal_absolute = 2 [default = 1e-06, deprecated = true];
        Returns:
        This builder for chaining.
      • hasEpsOptimalRelative

        @Deprecated
        public boolean hasEpsOptimalRelative()
        Deprecated.
        operations_research.pdlp.TerminationCriteria.eps_optimal_relative is deprecated. See ortools/pdlp/solvers.proto;l=140
         Relative tolerance on primal residual, dual residual, and the objective
         gap.
         Deprecated, use simple_optimality_criteria instead.
         TODO(b/241462829) delete this deprecated field.
         
        optional double eps_optimal_relative = 3 [default = 1e-06, deprecated = true];
        Specified by:
        hasEpsOptimalRelative in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        Whether the epsOptimalRelative field is set.
      • getEpsOptimalRelative

        @Deprecated
        public double getEpsOptimalRelative()
        Deprecated.
        operations_research.pdlp.TerminationCriteria.eps_optimal_relative is deprecated. See ortools/pdlp/solvers.proto;l=140
         Relative tolerance on primal residual, dual residual, and the objective
         gap.
         Deprecated, use simple_optimality_criteria instead.
         TODO(b/241462829) delete this deprecated field.
         
        optional double eps_optimal_relative = 3 [default = 1e-06, deprecated = true];
        Specified by:
        getEpsOptimalRelative in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        The epsOptimalRelative.
      • setEpsOptimalRelative

        @Deprecated
        public Solvers.TerminationCriteria.Builder setEpsOptimalRelative​(double value)
        Deprecated.
        operations_research.pdlp.TerminationCriteria.eps_optimal_relative is deprecated. See ortools/pdlp/solvers.proto;l=140
         Relative tolerance on primal residual, dual residual, and the objective
         gap.
         Deprecated, use simple_optimality_criteria instead.
         TODO(b/241462829) delete this deprecated field.
         
        optional double eps_optimal_relative = 3 [default = 1e-06, deprecated = true];
        Parameters:
        value - The epsOptimalRelative to set.
        Returns:
        This builder for chaining.
      • clearEpsOptimalRelative

        @Deprecated
        public Solvers.TerminationCriteria.Builder clearEpsOptimalRelative()
        Deprecated.
        operations_research.pdlp.TerminationCriteria.eps_optimal_relative is deprecated. See ortools/pdlp/solvers.proto;l=140
         Relative tolerance on primal residual, dual residual, and the objective
         gap.
         Deprecated, use simple_optimality_criteria instead.
         TODO(b/241462829) delete this deprecated field.
         
        optional double eps_optimal_relative = 3 [default = 1e-06, deprecated = true];
        Returns:
        This builder for chaining.
      • hasEpsPrimalInfeasible

        public boolean hasEpsPrimalInfeasible()
         If the following two conditions hold we say that we have obtained an
         approximate dual ray, which is an approximate certificate of primal
         infeasibility.
         (1) dual_ray_objective > 0,
         (2) max_dual_ray_infeasibility / dual_ray_objective <=
         eps_primal_infeasible.
         
        optional double eps_primal_infeasible = 4 [default = 1e-08];
        Specified by:
        hasEpsPrimalInfeasible in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        Whether the epsPrimalInfeasible field is set.
      • getEpsPrimalInfeasible

        public double getEpsPrimalInfeasible()
         If the following two conditions hold we say that we have obtained an
         approximate dual ray, which is an approximate certificate of primal
         infeasibility.
         (1) dual_ray_objective > 0,
         (2) max_dual_ray_infeasibility / dual_ray_objective <=
         eps_primal_infeasible.
         
        optional double eps_primal_infeasible = 4 [default = 1e-08];
        Specified by:
        getEpsPrimalInfeasible in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        The epsPrimalInfeasible.
      • setEpsPrimalInfeasible

        public Solvers.TerminationCriteria.Builder setEpsPrimalInfeasible​(double value)
         If the following two conditions hold we say that we have obtained an
         approximate dual ray, which is an approximate certificate of primal
         infeasibility.
         (1) dual_ray_objective > 0,
         (2) max_dual_ray_infeasibility / dual_ray_objective <=
         eps_primal_infeasible.
         
        optional double eps_primal_infeasible = 4 [default = 1e-08];
        Parameters:
        value - The epsPrimalInfeasible to set.
        Returns:
        This builder for chaining.
      • clearEpsPrimalInfeasible

        public Solvers.TerminationCriteria.Builder clearEpsPrimalInfeasible()
         If the following two conditions hold we say that we have obtained an
         approximate dual ray, which is an approximate certificate of primal
         infeasibility.
         (1) dual_ray_objective > 0,
         (2) max_dual_ray_infeasibility / dual_ray_objective <=
         eps_primal_infeasible.
         
        optional double eps_primal_infeasible = 4 [default = 1e-08];
        Returns:
        This builder for chaining.
      • hasEpsDualInfeasible

        public boolean hasEpsDualInfeasible()
         If the following three conditions hold we say we have obtained an
         approximate primal ray, which is an approximate certificate of dual
         infeasibility.
         (1) primal_ray_linear_objective < 0,
         (2) max_primal_ray_infeasibility / (-primal_ray_linear_objective) <=
         eps_dual_infeasible
         (3) primal_ray_quadratic_norm / (-primal_ray_linear_objective) <=
         eps_dual_infeasible.
         
        optional double eps_dual_infeasible = 5 [default = 1e-08];
        Specified by:
        hasEpsDualInfeasible in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        Whether the epsDualInfeasible field is set.
      • getEpsDualInfeasible

        public double getEpsDualInfeasible()
         If the following three conditions hold we say we have obtained an
         approximate primal ray, which is an approximate certificate of dual
         infeasibility.
         (1) primal_ray_linear_objective < 0,
         (2) max_primal_ray_infeasibility / (-primal_ray_linear_objective) <=
         eps_dual_infeasible
         (3) primal_ray_quadratic_norm / (-primal_ray_linear_objective) <=
         eps_dual_infeasible.
         
        optional double eps_dual_infeasible = 5 [default = 1e-08];
        Specified by:
        getEpsDualInfeasible in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        The epsDualInfeasible.
      • setEpsDualInfeasible

        public Solvers.TerminationCriteria.Builder setEpsDualInfeasible​(double value)
         If the following three conditions hold we say we have obtained an
         approximate primal ray, which is an approximate certificate of dual
         infeasibility.
         (1) primal_ray_linear_objective < 0,
         (2) max_primal_ray_infeasibility / (-primal_ray_linear_objective) <=
         eps_dual_infeasible
         (3) primal_ray_quadratic_norm / (-primal_ray_linear_objective) <=
         eps_dual_infeasible.
         
        optional double eps_dual_infeasible = 5 [default = 1e-08];
        Parameters:
        value - The epsDualInfeasible to set.
        Returns:
        This builder for chaining.
      • clearEpsDualInfeasible

        public Solvers.TerminationCriteria.Builder clearEpsDualInfeasible()
         If the following three conditions hold we say we have obtained an
         approximate primal ray, which is an approximate certificate of dual
         infeasibility.
         (1) primal_ray_linear_objective < 0,
         (2) max_primal_ray_infeasibility / (-primal_ray_linear_objective) <=
         eps_dual_infeasible
         (3) primal_ray_quadratic_norm / (-primal_ray_linear_objective) <=
         eps_dual_infeasible.
         
        optional double eps_dual_infeasible = 5 [default = 1e-08];
        Returns:
        This builder for chaining.
      • hasTimeSecLimit

        public boolean hasTimeSecLimit()
         If termination_reason = TERMINATION_REASON_TIME_LIMIT then the solver has
         taken at least time_sec_limit time.
         
        optional double time_sec_limit = 6 [default = inf];
        Specified by:
        hasTimeSecLimit in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        Whether the timeSecLimit field is set.
      • getTimeSecLimit

        public double getTimeSecLimit()
         If termination_reason = TERMINATION_REASON_TIME_LIMIT then the solver has
         taken at least time_sec_limit time.
         
        optional double time_sec_limit = 6 [default = inf];
        Specified by:
        getTimeSecLimit in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        The timeSecLimit.
      • setTimeSecLimit

        public Solvers.TerminationCriteria.Builder setTimeSecLimit​(double value)
         If termination_reason = TERMINATION_REASON_TIME_LIMIT then the solver has
         taken at least time_sec_limit time.
         
        optional double time_sec_limit = 6 [default = inf];
        Parameters:
        value - The timeSecLimit to set.
        Returns:
        This builder for chaining.
      • clearTimeSecLimit

        public Solvers.TerminationCriteria.Builder clearTimeSecLimit()
         If termination_reason = TERMINATION_REASON_TIME_LIMIT then the solver has
         taken at least time_sec_limit time.
         
        optional double time_sec_limit = 6 [default = inf];
        Returns:
        This builder for chaining.
      • hasIterationLimit

        public boolean hasIterationLimit()
         If termination_reason = TERMINATION_REASON_ITERATION_LIMIT then the solver
         has taken at least iterations_limit iterations.
         
        optional int32 iteration_limit = 7 [default = 2147483647];
        Specified by:
        hasIterationLimit in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        Whether the iterationLimit field is set.
      • getIterationLimit

        public int getIterationLimit()
         If termination_reason = TERMINATION_REASON_ITERATION_LIMIT then the solver
         has taken at least iterations_limit iterations.
         
        optional int32 iteration_limit = 7 [default = 2147483647];
        Specified by:
        getIterationLimit in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        The iterationLimit.
      • setIterationLimit

        public Solvers.TerminationCriteria.Builder setIterationLimit​(int value)
         If termination_reason = TERMINATION_REASON_ITERATION_LIMIT then the solver
         has taken at least iterations_limit iterations.
         
        optional int32 iteration_limit = 7 [default = 2147483647];
        Parameters:
        value - The iterationLimit to set.
        Returns:
        This builder for chaining.
      • clearIterationLimit

        public Solvers.TerminationCriteria.Builder clearIterationLimit()
         If termination_reason = TERMINATION_REASON_ITERATION_LIMIT then the solver
         has taken at least iterations_limit iterations.
         
        optional int32 iteration_limit = 7 [default = 2147483647];
        Returns:
        This builder for chaining.
      • hasKktMatrixPassLimit

        public boolean hasKktMatrixPassLimit()
         If termination_reason = TERMINATION_REASON_KKT_MATRIX_PASS_LIMIT then
         cumulative_kkt_matrix_passes is at least kkt_pass_limit.
         
        optional double kkt_matrix_pass_limit = 8 [default = inf];
        Specified by:
        hasKktMatrixPassLimit in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        Whether the kktMatrixPassLimit field is set.
      • getKktMatrixPassLimit

        public double getKktMatrixPassLimit()
         If termination_reason = TERMINATION_REASON_KKT_MATRIX_PASS_LIMIT then
         cumulative_kkt_matrix_passes is at least kkt_pass_limit.
         
        optional double kkt_matrix_pass_limit = 8 [default = inf];
        Specified by:
        getKktMatrixPassLimit in interface Solvers.TerminationCriteriaOrBuilder
        Returns:
        The kktMatrixPassLimit.
      • setKktMatrixPassLimit

        public Solvers.TerminationCriteria.Builder setKktMatrixPassLimit​(double value)
         If termination_reason = TERMINATION_REASON_KKT_MATRIX_PASS_LIMIT then
         cumulative_kkt_matrix_passes is at least kkt_pass_limit.
         
        optional double kkt_matrix_pass_limit = 8 [default = inf];
        Parameters:
        value - The kktMatrixPassLimit to set.
        Returns:
        This builder for chaining.
      • clearKktMatrixPassLimit

        public Solvers.TerminationCriteria.Builder clearKktMatrixPassLimit()
         If termination_reason = TERMINATION_REASON_KKT_MATRIX_PASS_LIMIT then
         cumulative_kkt_matrix_passes is at least kkt_pass_limit.
         
        optional double kkt_matrix_pass_limit = 8 [default = inf];
        Returns:
        This builder for chaining.
      • mergeUnknownFields

        public final Solvers.TerminationCriteria.Builder mergeUnknownFields​(com.google.protobuf.UnknownFieldSet unknownFields)
        Specified by:
        mergeUnknownFields in interface com.google.protobuf.Message.Builder
        Overrides:
        mergeUnknownFields in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.TerminationCriteria.Builder>