Initializing help system before first use

XPRBvar

  • java.lang.Object
    • com.dashoptimization.XPRBvar


  • public class XPRBvar
    extends java.lang.Object
    This class represents a variable definition in BCL.
    • Method Summary

      Modifier and Type Method and Description
      XPRBexpr add(double val) 
      XPRBexpr add(XPRBexpr l)
      Create a linear expression by adding a linear expression to a variable.
      XPRBexpr add(XPRBvar v) 
      XPRBrelation eql(double val) 
      XPRBrelation eql(XPRBexpr l)
      Create a linear relation of type "equal".
      XPRBrelation eql(XPRBvar v) 
      void fix(double val)
      Fix a variable to a given value.
      XPRBrelation gEql(double val) 
      XPRBrelation gEql(XPRBexpr l)
      Create a linear relation of type "greater or equal".
      XPRBrelation gEql(XPRBvar v) 
      int getColNum()
      Get the column number for a variable.
      double getLB()
      Get the lower bound of a variable.
      double getLim()
      Get the integer limit for a partial integer or the semi-continuous limit for a semi-continuous or semi-continuous integer variable.
      java.lang.String getName()
      Get the name of a variable.
      double getRCost()
      Get the reduced cost value for a variable.
      double getRNG(int rngtype)
      Get ranging information for a variable.
      double getSol()
      Get the solution value for a variable.
      int getType()
      Get the type of a variable.
      double getUB()
      Get the upper bound of a variable.
      boolean isValid()
      Test whether a variable is correctly defined.
      XPRBrelation lEql(double val) 
      XPRBrelation lEql(XPRBexpr l)
      Create a relation of type "less or equal".
      XPRBrelation lEql(XPRBvar v) 
      XPRBexpr mul(double val)
      Create a linear expression by multiplying a variable with a constant.
      XPRBexpr mul(XPRBexpr l)
      Create an expression by multiplying a variable with an expression.
      XPRBexpr mul(XPRBvar v) 
      XPRBexpr neg()
      Turn a variable into a linear expression by negating it.
      void print()
      Print out a variable.
      void setDir(int type) 
      void setDir(int type, double val)
      Set a branching directive for a variable.
      void setLB(double val)
      Set a lower bound on a variable.
      void setLim(double val)
      Set the integer limit (= lower bound of the continuous part) for a partial integer, or the lower semi-continuous limit for a semi-continuous or semi-continuous integer variable.
      void setType(int type)
      Set the variable type.
      void setUB(double val)
      Set an upper bound on a variable.
      XPRBexpr sqr()
      Create an expression which is the square of a variable.
      java.lang.String toString() 
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Method Detail

      • isValid

        public boolean isValid()
        Test whether a variable is correctly defined.
             XPRBvar x1;
             if(x1.isValid() == false)
                System.out.println("Error in variable definition.");
         
      • setType

        public void setType(int type)
        Set the variable type. This method changes the type of a variable that has been created previously.
             XPRBprob expl2;
             XPRBvar x1;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x1.setType(x1, XPRB.BV);
         
        Parameters:
        type - variable type. Possible values:
        • XPRB.PL continuous
        • XPRB.BV binary
        • XPRB.UI general integer
        • XPRB.PI partial integer
        • XPRB.SC semi-continuous
        • XPRB.SI semi-continuous integer
      • setUB

        public void setUB(double val)
        Set an upper bound on a variable.
             XPRBprob expl2;
             XPRBvar x1;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x1.setUB(200.0);
         
        Parameters:
        val - the variable's new upper bound
      • setLB

        public void setLB(double val)
        Set a lower bound on a variable.
             XPRBprob expl2;
             XPRBvar x1;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x1.setLB(3.0);
         
        Parameters:
        val - the variable's new lower bound
      • setLim

        public void setLim(double val)
        Set the integer limit (= lower bound of the continuous part) for a partial integer, or the lower semi-continuous limit for a semi-continuous or semi-continuous integer variable.
             XPRBprob expl2;
             XPRBvar x3;
             expl2 = new XPRBprob("example2");
             x3 = expl2.newVar("abc4", XPRB.SC, 0, 50);
             x3.setLim(5);
         
        Parameters:
        val - value of the integer limit
      • fix

        public void fix(double val)
        Fix a variable to a given value. This method replaces calls to setUB(double) and setLB(double). The value val may lie outside the original bounds of the variable.
             XPRBprob expl2;
             XPRBvar x1;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x1.fix(20.0);
         
        Parameters:
        val - value the variable is fixed to
      • setDir

        public void setDir(int type,
                           double val)
        Set a branching directive for a variable. This method sets any type of branching directive available in Xpress. This may be a priority for branching on a variable (type XPRB.PR), the preferred branching direction (types XPRB.UP, XPRB.DN) or the estimated cost incurred when branching on a variable (types XPRB.PU, XPRB.PU). Several directives of different types may be set for a single variable. Note that it is only possibly to set branching directives for discrete variables (including semi-continuous and partial integer variables). Method XPRBsos.setDir(int, double) may be used to set a branching directive for a SOS.
             XPRBprob expl2;
             XPRBvar x1;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x1.setDir(XPRB.PR, 10);
             x1.setDir(XPRB.UP);
         
        Parameters:
        type - directive type. Possible values:
        • XPRB.PR priority
        • XPRB.UP first branch upwards
        • XPRB.DN first branch downwards
        • XPRB.PU pseudocost on branching upwards
        • XPRB.PD pseudocost on branching downwards
        val - the value of this argument depends on the type of directive to be defined. Possible values:
        • XPRB.PR: priority value, integer between 1 (highest) and 1000 (least priority, default value)
        • XPRB.UP,XPRB.DN: no input required, choose any dummy value (e.g. 0)
        • XPRB.PU,XPRB.PD: value of pseudocost for the corresponding branch
      • getName

        public java.lang.String getName()
        Get the name of a variable. If the user has not defined a name the default name generated by BCL is returned.
             XPRBprob expl2;
             XPRBvar x1;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             System.out.println(x1.getName());
         
        Returns:
        Name of the variable if method executed successfully, null otherwise
      • getColNum

        public int getColNum()
        Get the column number for a variable. This method returns the column number of a variable in the matrix currently loaded in Xpress. If the variable is not part of the matrix, or if the matrix has not yet been generated, the method returns a negative value. The counting of column numbers starts with 0.
             XPRBprob expl2;
             XPRBvar x1;
             int vindex;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             vindex = x1.getColNum();
         
        Returns:
        Column number (integer value)
      • getType

        public int getType()
        Get the type of a variable.
             XPRBprob expl2;
             XPRBvar x1;
             int vtype;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             vtype = x1.getType();
         
        Returns:
        Variable type. Possible values:
        • XPRB.PL continuous
        • XPRB.BV binary
        • XPRB.UI general integer
        • XPRB.PI partial integer
        • XPRB.SC semi-continuous
        • XPRB.SI semi-continuous integer
        • -1 an error has occurred
      • getLB

        public double getLB()
        Get the lower bound of a variable.
             XPRBprob expl2;
             XPRBvar x1;
             double lbound;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             lbound = x1.getLB()
         
        Returns:
        Lower bound value
      • getUB

        public double getUB()
        Get the upper bound of a variable.
             XPRBprob expl2;
             XPRBvar x1;
             double ubound;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             ubound = x1.getUB()
         
        Returns:
        Upper bound value
      • getLim

        public double getLim()
        Get the integer limit for a partial integer or the semi-continuous limit for a semi-continuous or semi-continuous integer variable.
             XPRBprob expl2;
             XPRBvar x3;
             double vlim;
             expl2 = new XPRBprob("example2");
             x3 = expl2.newVar("abc4", XPRB.SC, 0, 50);
             vlim = x3.getLim();
         
        Returns:
        Limit value
      • getSol

        public double getSol()
        Get the solution value for a variable. The user may wish to test first whether this variable is part of the problem, for instance by checking that the column number is non-negative.
             XPRBprob expl2;
             XPRBvar x1;
             double solval;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             expl2.lpOptimize();
             solval = (x1.getColNum()>=0?x1.getSol():x1.getLB();
         
        Returns:
        Solution value for a variable (default 0)
      • getRCost

        public double getRCost()
        Get the reduced cost value for a variable. The user may wish to test first whether this variable is part of the problem, for instance by checking that the column number is non-negative. Reduced cost information is available only after LP solving. Reduced information for MIP problems can be obtained by fixing all discrete variables to their solution values and re-solving the resulting LP problem.
             XPRBprob expl2;
             XPRBvar x1;
             double rcval;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             expl2.lpOptimize();
             rcval = x1.getRCost();
         
        Returns:
        Reduced cost value for a variable (default 0)
      • getRNG

        public double getRNG(int rngtype)
        Get ranging information for a variable. This method can only be used after solving an LP problem. Ranging information for MIP problems can be obtained by fixing all discrete variables to their solution values and re-solving the resulting LP problem. For non-basic variables, the unit costs are always the (absolute) values of the reduced costs.
             XPRBprob expl2;
             XPRBvar x1;
             double ucval;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             expl2.lpOptimize();
             ucval = x1.getRNG(XPRB.UCOST);
         
        Parameters:
        rngtype - Ranging information type. Possible values:
        • XPRB.UPACT upper activity (= the activity level [solution value] that would result from a cost coefficient increase from the input cost to the upper cost XPRB_UCOST--assuming a minimization problem--ignoring the upper bound on this variable)
        • XPRB.LOACT lower activity (= the activity level [solution value] that would result from a cost coefficient decrease from the input cost to the lower cost XPRB_LCOST--assuming a minimization problem--ignoring the upper bound on this variable)
        • XPRB.UUP upper unit cost (= the change in the objective function per unit of change in the activity up to the upper activity XPRB_UPACT)
        • XPRB.UDN lower unit cost (= the change in the objective function per unit of change in the activity down to the lower activity XPRB_LOACT)
        • XPRB.UCOST upper cost
        • XPRB.LCOST lower cost
        Returns:
        Ranging information of the required type
      • neg

        public XPRBexpr neg()
        Turn a variable into a linear expression by negating it. This methods turns a variable x into the linear expression -x.
             XPRBprob expl2;
             XPRBvar x1;
             XPRBexpr l;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             l = x1.neg();
         
        Returns:
        Newly created linear expression
      • add

        public XPRBexpr add(XPRBexpr l)
        Create a linear expression by adding a linear expression to a variable. Applied to a variable x, this method creates a new linear expression x+l.
             XPRBprob expl2;
             XPRBvar x1, x2;
             XPRBexpr l1, l2;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x2 = expl2.newVar("abc1", XPRB.PL, 0, XPRB.INFINITY);
             l1 = x1.add(17);
             l2 = x2.add(l1);
         
        Parameters:
        l - linear expression of type XPRBexpr
        Returns:
        Newly created linear expression
      • mul

        public XPRBexpr mul(double val)
        Create a linear expression by multiplying a variable with a constant. Applied to a variable x, this method creates a new linear expression c*x.
             XPRBprob expl2;
             XPRBvar x1;
             XPRBexpr l1;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             l1 = x1.mul(-4.2);
         
        Parameters:
        val - constant value
        Returns:
        Newly created linear expression
      • mul

        public XPRBexpr mul(XPRBexpr l)
        Create an expression by multiplying a variable with an expression. Applied to a variable x, this method creates a new expression x*l.
             XPRBprob expl2;
             XPRBvar x1, x2;
             XPRBexpr l;
             XPRBexpr q;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x2 = expl2.newVar("abc1", XPRB.PL, 0, XPRB.INFINITY);
             l = x1.neg();
             q = x2.mul(l);
         
        Parameters:
        l - linear expression of type XPRBexpr
        Returns:
        Newly created quadratic expression
      • sqr

        public XPRBexpr sqr()
        Create an expression which is the square of a variable. Applied to a variable x, this method creates a new expression x*x.
             XPRBprob expl2;
             XPRBvar x1;
             XPRBexpr q;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             q = x1.sqr();
         
        Returns:
        Newly created quadratic expression
      • lEql

        public XPRBrelation lEql(XPRBexpr l)
        Create a relation of type "less or equal". Applied to a variable x, this method creates a new linear relation x<=l.
             XPRBprob expl2;
             XPRBvar x1, x2;
             XPRBrelation lr;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x2 = expl2.newVar("abc1", XPRB.PL, 0, XPRB.INFINITY);
             lr = x2.lEql(x1.neg());
         
        Parameters:
        l - linear expression of type XPRBexpr
        Returns:
        Newly created linear relation
      • gEql

        public XPRBrelation gEql(XPRBexpr l)
        Create a linear relation of type "greater or equal". Applied to a variable x, this method creates a new linear relation x>=l.
             XPRBprob expl2;
             XPRBvar x1, x2;
             XPRBrelation lr;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x2 = expl2.newVar("abc1", XPRB.PL, 0, XPRB.INFINITY);
             lr = x2.gEql(x1.neg());
         
        Parameters:
        l - linear expression of type XPRBexpr
        Returns:
        Newly created linear relation
      • eql

        public XPRBrelation eql(XPRBexpr l)
        Create a linear relation of type "equal". Applied to a variable x, this method creates a new linear relation x=l.
             XPRBprob expl2;
             XPRBvar x1, x2;
             XPRBrelation lr;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x2 = expl2.newVar("abc1", XPRB.PL, 0, XPRB.INFINITY);
             lr = x2.eql(x1.neg());
         
        Parameters:
        l - linear expression of type XPRBexpr
        Returns:
        Newly created linear relation
      • print

        public void print()
        Print out a variable. This method prints out name and bounds for continuous, binary and integer variables; name, bounds and integer limit or lower semi-continuous limit for partial integer, semi-continuous, and semi-continuous integer variables. If a solution value is available, this value is printed instead of the bounds.
             XPRBprob expl2;
             XPRBvar x1;
             expl2 = new XPRBprob("example2");
             x1 = expl2.newVar("abc3", XPRB.UI, 1, 100);
             x1.print();
         
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class  java.lang.Object
        See Also:
        getName()