Class TerminationCriteria

java.lang.Object
com.google.protobuf.AbstractMessageLite
com.google.protobuf.AbstractMessage
com.google.protobuf.GeneratedMessage
com.google.ortools.pdlp.TerminationCriteria
All Implemented Interfaces:
TerminationCriteriaOrBuilder, com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, Serializable

@Generated public final class TerminationCriteria extends com.google.protobuf.GeneratedMessage implements 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:
  • Field Details

    • OPTIMALITY_NORM_FIELD_NUMBER

      public static final int OPTIMALITY_NORM_FIELD_NUMBER
      See Also:
    • SIMPLE_OPTIMALITY_CRITERIA_FIELD_NUMBER

      public static final int SIMPLE_OPTIMALITY_CRITERIA_FIELD_NUMBER
      See Also:
    • DETAILED_OPTIMALITY_CRITERIA_FIELD_NUMBER

      public static final int DETAILED_OPTIMALITY_CRITERIA_FIELD_NUMBER
      See Also:
    • EPS_OPTIMAL_ABSOLUTE_FIELD_NUMBER

      public static final int EPS_OPTIMAL_ABSOLUTE_FIELD_NUMBER
      See Also:
    • EPS_OPTIMAL_RELATIVE_FIELD_NUMBER

      public static final int EPS_OPTIMAL_RELATIVE_FIELD_NUMBER
      See Also:
    • EPS_PRIMAL_INFEASIBLE_FIELD_NUMBER

      public static final int EPS_PRIMAL_INFEASIBLE_FIELD_NUMBER
      See Also:
    • EPS_DUAL_INFEASIBLE_FIELD_NUMBER

      public static final int EPS_DUAL_INFEASIBLE_FIELD_NUMBER
      See Also:
    • TIME_SEC_LIMIT_FIELD_NUMBER

      public static final int TIME_SEC_LIMIT_FIELD_NUMBER
      See Also:
    • ITERATION_LIMIT_FIELD_NUMBER

      public static final int ITERATION_LIMIT_FIELD_NUMBER
      See Also:
    • KKT_MATRIX_PASS_LIMIT_FIELD_NUMBER

      public static final int KKT_MATRIX_PASS_LIMIT_FIELD_NUMBER
      See Also:
  • Method Details

    • getDescriptor

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

      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable internalGetFieldAccessorTable()
      Specified by:
      internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessage
    • getOptimalityCriteriaCase

      public TerminationCriteria.OptimalityCriteriaCase getOptimalityCriteriaCase()
      Specified by:
      getOptimalityCriteriaCase in interface TerminationCriteriaOrBuilder
    • 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 TerminationCriteriaOrBuilder
      Returns:
      Whether the optimalityNorm field is set.
    • getOptimalityNorm

      public OptimalityNorm getOptimalityNorm()
      The norm that we are measuring the optimality criteria in.
      
      optional .operations_research.pdlp.OptimalityNorm optimality_norm = 1 [default = OPTIMALITY_NORM_L2];
      Specified by:
      getOptimalityNorm in interface TerminationCriteriaOrBuilder
      Returns:
      The optimalityNorm.
    • hasSimpleOptimalityCriteria

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

      public TerminationCriteria.SimpleOptimalityCriteria getSimpleOptimalityCriteria()
      .operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria simple_optimality_criteria = 9;
      Specified by:
      getSimpleOptimalityCriteria in interface TerminationCriteriaOrBuilder
      Returns:
      The simpleOptimalityCriteria.
    • getSimpleOptimalityCriteriaOrBuilder

      public TerminationCriteria.SimpleOptimalityCriteriaOrBuilder getSimpleOptimalityCriteriaOrBuilder()
      .operations_research.pdlp.TerminationCriteria.SimpleOptimalityCriteria simple_optimality_criteria = 9;
      Specified by:
      getSimpleOptimalityCriteriaOrBuilder in interface TerminationCriteriaOrBuilder
    • hasDetailedOptimalityCriteria

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

      public TerminationCriteria.DetailedOptimalityCriteria getDetailedOptimalityCriteria()
      .operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria detailed_optimality_criteria = 10;
      Specified by:
      getDetailedOptimalityCriteria in interface TerminationCriteriaOrBuilder
      Returns:
      The detailedOptimalityCriteria.
    • getDetailedOptimalityCriteriaOrBuilder

      public TerminationCriteria.DetailedOptimalityCriteriaOrBuilder getDetailedOptimalityCriteriaOrBuilder()
      .operations_research.pdlp.TerminationCriteria.DetailedOptimalityCriteria detailed_optimality_criteria = 10;
      Specified by:
      getDetailedOptimalityCriteriaOrBuilder in interface TerminationCriteriaOrBuilder
    • hasEpsOptimalAbsolute

      @Deprecated public boolean hasEpsOptimalAbsolute()
      Deprecated.
      operations_research.pdlp.TerminationCriteria.eps_optimal_absolute is deprecated. See ortools/pdlp/solvers.proto;l=147
      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 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=147
      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 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=154
      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 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=154
      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 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 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 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 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 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 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 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 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 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 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 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.GeneratedMessage
    • writeTo

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

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

      public boolean equals(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 TerminationCriteria parseFrom(ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

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

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

      public static 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 TerminationCriteria parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException
      Throws:
      com.google.protobuf.InvalidProtocolBufferException
    • parseFrom

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

      public static TerminationCriteria parseFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseFrom

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

      public static TerminationCriteria parseDelimitedFrom(InputStream input) throws IOException
      Throws:
      IOException
    • parseDelimitedFrom

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

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

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

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

      public static TerminationCriteria.Builder newBuilder()
    • newBuilder

      public static TerminationCriteria.Builder newBuilder(TerminationCriteria prototype)
    • toBuilder

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

      protected TerminationCriteria.Builder newBuilderForType(com.google.protobuf.AbstractMessage.BuilderParent parent)
      Overrides:
      newBuilderForType in class com.google.protobuf.AbstractMessage
    • getDefaultInstance

      public static TerminationCriteria getDefaultInstance()
    • parser

      public static com.google.protobuf.Parser<TerminationCriteria> parser()
    • getParserForType

      public com.google.protobuf.Parser<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.GeneratedMessage
    • getDefaultInstanceForType

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