Class Solvers.TerminationCriteria

  • All Implemented Interfaces:
    com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, java.io.Serializable, Solvers.TerminationCriteriaOrBuilder
    Enclosing class:
    Solvers

    public static final class Solvers.TerminationCriteria
    extends com.google.protobuf.GeneratedMessageV3
    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
    See Also:
    Serialized Form
    • Field Detail

      • OPTIMALITY_NORM_FIELD_NUMBER

        public static final int OPTIMALITY_NORM_FIELD_NUMBER
        See Also:
        Constant Field Values
      • SIMPLE_OPTIMALITY_CRITERIA_FIELD_NUMBER

        public static final int SIMPLE_OPTIMALITY_CRITERIA_FIELD_NUMBER
        See Also:
        Constant Field Values
      • DETAILED_OPTIMALITY_CRITERIA_FIELD_NUMBER

        public static final int DETAILED_OPTIMALITY_CRITERIA_FIELD_NUMBER
        See Also:
        Constant Field Values
      • EPS_OPTIMAL_ABSOLUTE_FIELD_NUMBER

        public static final int EPS_OPTIMAL_ABSOLUTE_FIELD_NUMBER
        See Also:
        Constant Field Values
      • EPS_OPTIMAL_RELATIVE_FIELD_NUMBER

        public static final int EPS_OPTIMAL_RELATIVE_FIELD_NUMBER
        See Also:
        Constant Field Values
      • EPS_PRIMAL_INFEASIBLE_FIELD_NUMBER

        public static final int EPS_PRIMAL_INFEASIBLE_FIELD_NUMBER
        See Also:
        Constant Field Values
      • EPS_DUAL_INFEASIBLE_FIELD_NUMBER

        public static final int EPS_DUAL_INFEASIBLE_FIELD_NUMBER
        See Also:
        Constant Field Values
      • TIME_SEC_LIMIT_FIELD_NUMBER

        public static final int TIME_SEC_LIMIT_FIELD_NUMBER
        See Also:
        Constant Field Values
      • ITERATION_LIMIT_FIELD_NUMBER

        public static final int ITERATION_LIMIT_FIELD_NUMBER
        See Also:
        Constant Field Values
      • KKT_MATRIX_PASS_LIMIT_FIELD_NUMBER

        public static final int KKT_MATRIX_PASS_LIMIT_FIELD_NUMBER
        See Also:
        Constant Field Values
    • Method Detail

      • newInstance

        protected java.lang.Object newInstance​(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused)
        Overrides:
        newInstance in class com.google.protobuf.GeneratedMessageV3
      • 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
      • 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.
      • 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.
      • 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.
      • 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.
      • 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.
      • 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.
      • 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.
      • 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.
      • 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.
      • 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.
      • isInitialized

        public final boolean isInitialized()
        Specified by:
        isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
        Overrides:
        isInitialized in class com.google.protobuf.GeneratedMessageV3
      • writeTo

        public void writeTo​(com.google.protobuf.CodedOutputStream output)
                     throws java.io.IOException
        Specified by:
        writeTo in interface com.google.protobuf.MessageLite
        Overrides:
        writeTo in class com.google.protobuf.GeneratedMessageV3
        Throws:
        java.io.IOException
      • getSerializedSize

        public int getSerializedSize()
        Specified by:
        getSerializedSize in interface com.google.protobuf.MessageLite
        Overrides:
        getSerializedSize in class com.google.protobuf.GeneratedMessageV3
      • equals

        public boolean equals​(java.lang.Object obj)
        Specified by:
        equals in interface com.google.protobuf.Message
        Overrides:
        equals in class com.google.protobuf.AbstractMessage
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface com.google.protobuf.Message
        Overrides:
        hashCode in class com.google.protobuf.AbstractMessage
      • parseFrom

        public static Solvers.TerminationCriteria parseFrom​(java.nio.ByteBuffer data)
                                                     throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Solvers.TerminationCriteria parseFrom​(java.nio.ByteBuffer data,
                                                            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                     throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Solvers.TerminationCriteria parseFrom​(com.google.protobuf.ByteString data)
                                                     throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Solvers.TerminationCriteria parseFrom​(com.google.protobuf.ByteString data,
                                                            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                     throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Solvers.TerminationCriteria parseFrom​(byte[] data)
                                                     throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Solvers.TerminationCriteria parseFrom​(byte[] data,
                                                            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                     throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static Solvers.TerminationCriteria parseFrom​(java.io.InputStream input)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static Solvers.TerminationCriteria parseFrom​(java.io.InputStream input,
                                                            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • parseDelimitedFrom

        public static Solvers.TerminationCriteria parseDelimitedFrom​(java.io.InputStream input)
                                                              throws java.io.IOException
        Throws:
        java.io.IOException
      • parseDelimitedFrom

        public static Solvers.TerminationCriteria parseDelimitedFrom​(java.io.InputStream input,
                                                                     com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                              throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static Solvers.TerminationCriteria parseFrom​(com.google.protobuf.CodedInputStream input)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • parseFrom

        public static Solvers.TerminationCriteria parseFrom​(com.google.protobuf.CodedInputStream input,
                                                            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • newBuilderForType

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

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

        protected Solvers.TerminationCriteria.Builder newBuilderForType​(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
        Specified by:
        newBuilderForType in class com.google.protobuf.GeneratedMessageV3
      • getParserForType

        public com.google.protobuf.Parser<Solvers.TerminationCriteria> getParserForType()
        Specified by:
        getParserForType in interface com.google.protobuf.Message
        Specified by:
        getParserForType in interface com.google.protobuf.MessageLite
        Overrides:
        getParserForType in class com.google.protobuf.GeneratedMessageV3
      • getDefaultInstanceForType

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