Class Presolvers


  • public abstract class Presolvers
    extends java.lang.Object
    • Field Detail

      • LINEAR_OBJECTIVE

        public static final ExpressionsBasedModel.Presolver LINEAR_OBJECTIVE
        If the expression is linear and contributes to the objective function, then the contributions are transferred to the variables and the weight of the expression set to null.
      • REDUNDANT_CONSTRAINT

        public static final ExpressionsBasedModel.Presolver REDUNDANT_CONSTRAINT
        Calculates the min and max value of this expression based on the variables' individual bounds. Then compares those with the expression's bounds.
      • UNREFERENCED

        public static final ExpressionsBasedModel.VariableAnalyser UNREFERENCED
        Verifies that the variable is actually referenced/used in some expression. If not then that variable can either be fixed or marked as unbounded.
         2019-02-15: Turned this off. Very slow for large models
         2019-02-22: Turned this on again, different implementation
         
      • ZERO_ONE_TWO

        public static final ExpressionsBasedModel.Presolver ZERO_ONE_TWO
        Looks for constraint expressions with 0, 1 or 2 non-fixed variables. Transfers the constraints of the expressions to the variables and then (if possible) marks the expression as redundant.
      • SIMILARITY

        private static final java.math.MathContext SIMILARITY
      • LOWER

        static final java.math.MathContext LOWER
      • UPPER

        static final java.math.MathContext UPPER
    • Constructor Detail

      • Presolvers

        public Presolvers()
    • Method Detail

      • checkFeasibility

        public static void checkFeasibility​(Expression expression,
                                            java.util.Set<Structure1D.IntIndex> remaining,
                                            java.math.BigDecimal lower,
                                            java.math.BigDecimal upper,
                                            NumberContext precision,
                                            boolean relaxed)
      • checkSimilarity

        public static boolean checkSimilarity​(java.util.Collection<Expression> current,
                                              Expression potential)
        Checks if the potential Expression is similar to any in the current collection.
        Returns:
        true, if the potential Expression is found to be similar and marked as redundant by this method.
      • reduce

        public static boolean reduce​(java.util.Collection<Expression> expressions)
      • doCase0

        static boolean doCase0​(Expression expression,
                               java.util.Set<Structure1D.IntIndex> remaining,
                               java.math.BigDecimal lower,
                               java.math.BigDecimal upper,
                               NumberContext precision)
        This constraint expression has 0 remaining free variable. It is entirely redundant.
      • doCase1

        static boolean doCase1​(Expression expression,
                               java.util.Set<Structure1D.IntIndex> remaining,
                               java.math.BigDecimal lower,
                               java.math.BigDecimal upper,
                               NumberContext precision)
        This constraint expression has 1 remaining free variable. The lower/upper limits can be transferred to that variable, and the expression marked as redundant.
      • doCase2

        static boolean doCase2​(Expression expression,
                               java.util.Set<Structure1D.IntIndex> remaining,
                               java.math.BigDecimal lower,
                               java.math.BigDecimal upper,
                               NumberContext precision)
        Checks if bounds on either of the variables (together with the expressions's bounds) implies tighter bounds on the other variable.
      • doCaseN

        static boolean doCaseN​(Expression expression,
                               java.util.Set<Structure1D.IntIndex> remaining,
                               java.math.BigDecimal lower,
                               java.math.BigDecimal upper,
                               NumberContext precision)
        Checks the sign of the limits and the sign of the expression parameters to deduce variables that in fact can only be zero.
      • findCommonLevel

        static java.math.BigDecimal findCommonLevel​(java.math.BigDecimal a,
                                                    java.math.BigDecimal b)