XPRBvar
- java.lang.Object
-
- com.dashoptimization.XPRBvar
-
public class XPRBvar extends java.lang.ObjectThis class represents a variable definition in BCL.
-
-
Method Summary
Modifier and Type Method and Description XPRBexpradd(double val)XPRBexpradd(XPRBexpr l)Create a linear expression by adding a linear expression to a variable.XPRBexpradd(XPRBvar v)XPRBrelationeql(double val)XPRBrelationeql(XPRBexpr l)Create a linear relation of type "equal".XPRBrelationeql(XPRBvar v)voidfix(double val)Fix a variable to a given value.XPRBrelationgEql(double val)XPRBrelationgEql(XPRBexpr l)Create a linear relation of type "greater or equal".XPRBrelationgEql(XPRBvar v)intgetColNum()Get the column number for a variable.doublegetLB()Get the lower bound of a variable.doublegetLim()Get the integer limit for a partial integer or the semi-continuous limit for a semi-continuous or semi-continuous integer variable.java.lang.StringgetName()Get the name of a variable.doublegetRCost()Get the reduced cost value for a variable.doublegetRNG(int rngtype)Get ranging information for a variable.doublegetSol()Get the solution value for a variable.intgetType()Get the type of a variable.doublegetUB()Get the upper bound of a variable.booleanisValid()Test whether a variable is correctly defined.XPRBrelationlEql(double val)XPRBrelationlEql(XPRBexpr l)Create a relation of type "less or equal".XPRBrelationlEql(XPRBvar v)XPRBexprmul(double val)Create a linear expression by multiplying a variable with a constant.XPRBexprmul(XPRBexpr l)Create an expression by multiplying a variable with an expression.XPRBexprmul(XPRBvar v)XPRBexprneg()Turn a variable into a linear expression by negating it.voidprint()Print out a variable.voidsetDir(int type)voidsetDir(int type, double val)Set a branching directive for a variable.voidsetLB(double val)Set a lower bound on a variable.voidsetLim(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.voidsetType(int type)Set the variable type.voidsetUB(double val)Set an upper bound on a variable.XPRBexprsqr()Create an expression which is the square of a variable.java.lang.StringtoString()
-
-
-
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.PLcontinuousXPRB.BVbinaryXPRB.UIgeneral integerXPRB.PIpartial integerXPRB.SCsemi-continuousXPRB.SIsemi-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 tosetUB(double)andsetLB(double). The valuevalmay 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 (typeXPRB.PR), the preferred branching direction (typesXPRB.UP, XPRB.DN) or the estimated cost incurred when branching on a variable (typesXPRB.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). MethodXPRBsos.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.PRpriorityXPRB.UPfirst branch upwardsXPRB.DNfirst branch downwardsXPRB.PUpseudocost on branching upwardsXPRB.PDpseudocost 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
-
setDir
public void setDir(int type)
- See Also:
-
setDir(type, 0)
-
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,
nullotherwise
-
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.PLcontinuousXPRB.BVbinaryXPRB.UIgeneral integerXPRB.PIpartial integerXPRB.SCsemi-continuousXPRB.SIsemi-continuous integer-1an 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.UPACTupper 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.LOACTlower 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.UUPupper unit cost (= the change in the objective function per unit of change in the activity up to the upper activity XPRB_UPACT)XPRB.UDNlower unit cost (= the change in the objective function per unit of change in the activity down to the lower activity XPRB_LOACT)XPRB.UCOSTupper costXPRB.LCOSTlower 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 variablexinto 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 variablex, this method creates a new linear expressionx+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 typeXPRBexpr - 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 variablex, this method creates a new linear expressionc*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 variablex, this method creates a new expressionx*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 typeXPRBexpr - Returns:
- Newly created quadratic expression
-
sqr
public XPRBexpr sqr()
Create an expression which is the square of a variable. Applied to a variablex, this method creates a new expressionx*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 variablex, this method creates a new linear relationx<=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 typeXPRBexpr - Returns:
- Newly created linear relation
-
lEql
public XPRBrelation lEql(XPRBvar v)
- See Also:
-
lEql(v)
-
lEql
public XPRBrelation lEql(double val)
- See Also:
-
lEql(val)
-
gEql
public XPRBrelation gEql(XPRBexpr l)
Create a linear relation of type "greater or equal". Applied to a variablex, this method creates a new linear relationx>=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 typeXPRBexpr - Returns:
- Newly created linear relation
-
gEql
public XPRBrelation gEql(XPRBvar v)
- See Also:
-
gEql(v)
-
gEql
public XPRBrelation gEql(double val)
- See Also:
-
gEql(val)
-
eql
public XPRBrelation eql(XPRBexpr l)
Create a linear relation of type "equal". Applied to a variablex, this method creates a new linear relationx=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 typeXPRBexpr - Returns:
- Newly created linear relation
-
eql
public XPRBrelation eql(XPRBvar v)
- See Also:
-
eql(v)
-
eql
public XPRBrelation eql(double val)
- See Also:
-
eql(val)
-
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:
-
toStringin classjava.lang.Object - See Also:
-
getName()
-
-
