Class Solvers.TerminationCriteria.Builder

java.lang.Object
com.google.protobuf.AbstractMessageLite.Builder
com.google.protobuf.AbstractMessage.Builder<BuilderType>
com.google.protobuf.GeneratedMessageV3.Builder<Solvers.TerminationCriteria.Builder>
operations_research.pdlp.Solvers.TerminationCriteria.Builder
All Implemented Interfaces:
com.google.protobuf.Message.Builder, com.google.protobuf.MessageLite.Builder, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, 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 Details

    • 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>
    • clear

      Specified by:
      clear in interface com.google.protobuf.Message.Builder
      Specified by:
      clear in interface com.google.protobuf.MessageLite.Builder
      Overrides:
      clear 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

      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
    • clone

      Specified by:
      clone in interface com.google.protobuf.Message.Builder
      Specified by:
      clone in interface com.google.protobuf.MessageLite.Builder
      Overrides:
      clone in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.TerminationCriteria.Builder>
    • setField

      public Solvers.TerminationCriteria.Builder setField(com.google.protobuf.Descriptors.FieldDescriptor field, Object value)
      Specified by:
      setField in interface com.google.protobuf.Message.Builder
      Overrides:
      setField in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.TerminationCriteria.Builder>
    • clearField

      public Solvers.TerminationCriteria.Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field)
      Specified by:
      clearField in interface com.google.protobuf.Message.Builder
      Overrides:
      clearField in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.TerminationCriteria.Builder>
    • clearOneof

      public Solvers.TerminationCriteria.Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof)
      Specified by:
      clearOneof in interface com.google.protobuf.Message.Builder
      Overrides:
      clearOneof in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.TerminationCriteria.Builder>
    • setRepeatedField

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

      public Solvers.TerminationCriteria.Builder mergeFrom(com.google.protobuf.Message other)
      Specified by:
      mergeFrom in interface com.google.protobuf.Message.Builder
      Overrides:
      mergeFrom in class com.google.protobuf.AbstractMessage.Builder<Solvers.TerminationCriteria.Builder>
    • mergeFrom

    • 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 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:
      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.
    • getOptimalityNorm

      public Solvers.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 Solvers.TerminationCriteriaOrBuilder
      Returns:
      The optimalityNorm.
    • setOptimalityNorm

       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.
    • hasEpsOptimalAbsolute

      public boolean hasEpsOptimalAbsolute()
       Absolute tolerance on the duality gap, primal feasibility, and dual
       feasibility.
       
      optional double eps_optimal_absolute = 2 [default = 1e-06];
      Specified by:
      hasEpsOptimalAbsolute in interface Solvers.TerminationCriteriaOrBuilder
      Returns:
      Whether the epsOptimalAbsolute field is set.
    • getEpsOptimalAbsolute

      public double getEpsOptimalAbsolute()
       Absolute tolerance on the duality gap, primal feasibility, and dual
       feasibility.
       
      optional double eps_optimal_absolute = 2 [default = 1e-06];
      Specified by:
      getEpsOptimalAbsolute in interface Solvers.TerminationCriteriaOrBuilder
      Returns:
      The epsOptimalAbsolute.
    • setEpsOptimalAbsolute

      public Solvers.TerminationCriteria.Builder setEpsOptimalAbsolute(double value)
       Absolute tolerance on the duality gap, primal feasibility, and dual
       feasibility.
       
      optional double eps_optimal_absolute = 2 [default = 1e-06];
      Parameters:
      value - The epsOptimalAbsolute to set.
      Returns:
      This builder for chaining.
    • clearEpsOptimalAbsolute

      public Solvers.TerminationCriteria.Builder clearEpsOptimalAbsolute()
       Absolute tolerance on the duality gap, primal feasibility, and dual
       feasibility.
       
      optional double eps_optimal_absolute = 2 [default = 1e-06];
      Returns:
      This builder for chaining.
    • hasEpsOptimalRelative

      public boolean hasEpsOptimalRelative()
       Relative tolerance on the duality gap, primal feasibility, and dual
       feasibility.
       
      optional double eps_optimal_relative = 3 [default = 1e-06];
      Specified by:
      hasEpsOptimalRelative in interface Solvers.TerminationCriteriaOrBuilder
      Returns:
      Whether the epsOptimalRelative field is set.
    • getEpsOptimalRelative

      public double getEpsOptimalRelative()
       Relative tolerance on the duality gap, primal feasibility, and dual
       feasibility.
       
      optional double eps_optimal_relative = 3 [default = 1e-06];
      Specified by:
      getEpsOptimalRelative in interface Solvers.TerminationCriteriaOrBuilder
      Returns:
      The epsOptimalRelative.
    • setEpsOptimalRelative

      public Solvers.TerminationCriteria.Builder setEpsOptimalRelative(double value)
       Relative tolerance on the duality gap, primal feasibility, and dual
       feasibility.
       
      optional double eps_optimal_relative = 3 [default = 1e-06];
      Parameters:
      value - The epsOptimalRelative to set.
      Returns:
      This builder for chaining.
    • clearEpsOptimalRelative

      public Solvers.TerminationCriteria.Builder clearEpsOptimalRelative()
       Relative tolerance on the duality gap, primal feasibility, and dual
       feasibility.
       
      optional double eps_optimal_relative = 3 [default = 1e-06];
      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.
    • setUnknownFields

      public final Solvers.TerminationCriteria.Builder setUnknownFields(com.google.protobuf.UnknownFieldSet unknownFields)
      Specified by:
      setUnknownFields in interface com.google.protobuf.Message.Builder
      Overrides:
      setUnknownFields in class com.google.protobuf.GeneratedMessageV3.Builder<Solvers.TerminationCriteria.Builder>
    • 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>