|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.commons.math.optimization.linear.SimplexTableau
class SimplexTableau
A tableau for use in the Simplex method.
Example:
W | Z | x1 | x2 | x- | s1 | s2 | a1 | RHS --------------------------------------------------- -1 0 0 0 0 0 0 1 0 <= phase 1 objective 0 1 -15 -10 0 0 0 0 0 <= phase 2 objective 0 0 1 0 0 1 0 0 2 <= constraint 1 0 0 0 1 0 0 1 0 3 <= constraint 2 0 0 1 1 0 0 0 1 4 <= constraint 3W: Phase 1 objective function Z: Phase 2 objective function x1 & x2: Decision variables x-: Extra decision variable to allow for negative values s1 & s2: Slack/Surplus variables a1: Artificial variable RHS: Right hand side
Field Summary | |
---|---|
private Collection<LinearConstraint> |
constraints
Linear constraints. |
protected double |
epsilon
Amount of error to accept in floating point comparisons. |
private LinearObjectiveFunction |
f
Linear objective function. |
protected int |
numArtificialVariables
Number of artificial variables. |
protected int |
numDecisionVariables
Number of decision variables. |
protected int |
numSlackVariables
Number of slack variables. |
private boolean |
restrictToNonNegative
Whether to restrict the variables to non-negative values. |
private static long |
serialVersionUID
Serializable version identifier. |
protected RealMatrix |
tableau
Simple tableau. |
Constructor Summary | |
---|---|
SimplexTableau(LinearObjectiveFunction f,
Collection<LinearConstraint> constraints,
GoalType goalType,
boolean restrictToNonNegative,
double epsilon)
Build a tableau for a linear problem. |
Method Summary | |
---|---|
private void |
copyArray(double[] src,
double[] dest,
int destPos)
|
protected double[][] |
createTableau(boolean maximize)
Create the tableau by itself. |
protected void |
discardArtificialVariables()
Removes the phase 1 objective function and artificial variables from this tableau. |
protected void |
divideRow(int dividendRow,
double divisor)
Subtracts a multiple of one row from another. |
boolean |
equals(Object other)
|
protected int |
getArtificialVariableOffset()
Get the offset of the first artificial variable. |
private Integer |
getBasicRow(int col)
Checks whether the given column is basic. |
private int |
getConstraintTypeCounts(Relationship relationship)
Get a count of constraints corresponding to a specified relationship. |
protected double[][] |
getData()
Get the tableau data. |
protected double |
getEntry(int row,
int column)
Get an entry of the tableau. |
protected int |
getHeight()
Get the height of the tableau. |
protected static double |
getInvertedCoeffiecientSum(RealVector coefficients)
Get the -1 times the sum of all coefficients in the given array. |
List<LinearConstraint> |
getNormalizedConstraints()
Get new versions of the constraints which have positive right hand sides. |
protected int |
getNumArtificialVariables()
Get the number of artificial variables. |
protected int |
getNumDecisionVariables()
Get the number of decision variables. |
protected int |
getNumObjectiveFunctions()
Get the number of objective functions in this tableau. |
protected int |
getNumSlackVariables()
Get the number of slack variables. |
int |
getNumVariables()
Get the number of variables. |
protected int |
getOriginalNumDecisionVariables()
Get the original number of decision variables. |
protected int |
getRhsOffset()
Get the offset of the right hand side. |
protected int |
getSlackVariableOffset()
Get the offset of the first slack variable. |
protected RealPointValuePair |
getSolution()
Get the current solution. |
protected int |
getWidth()
Get the width of the tableau. |
int |
hashCode()
|
private void |
initialize()
Puts the tableau in proper form by zeroing out the artificial variables in the objective function via elementary row operations. |
private LinearConstraint |
normalize(LinearConstraint constraint)
Get a new equation equivalent to this one with a positive right hand side. |
private void |
readObject(ObjectInputStream ois)
Deserialize the instance. |
protected void |
setEntry(int row,
int column,
double value)
Set an entry of the tableau. |
protected void |
subtractRow(int minuendRow,
int subtrahendRow,
double multiple)
Subtracts a multiple of one row from another. |
private void |
writeObject(ObjectOutputStream oos)
Serialize the instance. |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final long serialVersionUID
private final LinearObjectiveFunction f
private final Collection<LinearConstraint> constraints
private final boolean restrictToNonNegative
protected transient RealMatrix tableau
protected final int numDecisionVariables
protected final int numSlackVariables
protected int numArtificialVariables
protected final double epsilon
Constructor Detail |
---|
SimplexTableau(LinearObjectiveFunction f, Collection<LinearConstraint> constraints, GoalType goalType, boolean restrictToNonNegative, double epsilon)
f
- linear objective functionconstraints
- linear constraintsgoalType
- type of optimization goal: either GoalType.MAXIMIZE
or GoalType.MINIMIZE
restrictToNonNegative
- whether to restrict the variables to non-negative valuesepsilon
- amount of error to accept in floating point comparisonsMethod Detail |
---|
protected double[][] createTableau(boolean maximize)
maximize
- if true, goal is to maximize the objective function
public int getNumVariables()
public List<LinearConstraint> getNormalizedConstraints()
private LinearConstraint normalize(LinearConstraint constraint)
constraint
- reference constraint
protected final int getNumObjectiveFunctions()
private int getConstraintTypeCounts(Relationship relationship)
relationship
- relationship to count
private void initialize()
protected static double getInvertedCoeffiecientSum(RealVector coefficients)
coefficients
- coefficients to sum
private Integer getBasicRow(int col)
col
- index of the column to check
protected void discardArtificialVariables()
private void copyArray(double[] src, double[] dest, int destPos)
src
- the source arraydest
- the destination arraydestPos
- the destination positionprotected RealPointValuePair getSolution()
protected void divideRow(int dividendRow, double divisor)
After application of this operation, the following will hold: minuendRow = minuendRow - multiple * subtrahendRow
dividendRow
- index of the rowdivisor
- value of the divisorprotected void subtractRow(int minuendRow, int subtrahendRow, double multiple)
After application of this operation, the following will hold: minuendRow = minuendRow - multiple * subtrahendRow
minuendRow
- row indexsubtrahendRow
- row indexmultiple
- multiplication factorprotected final int getWidth()
protected final int getHeight()
protected final double getEntry(int row, int column)
row
- row indexcolumn
- column index
protected final void setEntry(int row, int column, double value)
row
- row indexcolumn
- column indexvalue
- for the entryprotected final int getSlackVariableOffset()
protected final int getArtificialVariableOffset()
protected final int getRhsOffset()
protected final int getNumDecisionVariables()
If variables are not restricted to positive values, this will include 1 extra decision variable to represent the absolute value of the most negative variable.
getOriginalNumDecisionVariables()
protected final int getOriginalNumDecisionVariables()
getNumDecisionVariables()
protected final int getNumSlackVariables()
protected final int getNumArtificialVariables()
protected final double[][] getData()
public boolean equals(Object other)
equals
in class Object
public int hashCode()
hashCode
in class Object
private void writeObject(ObjectOutputStream oos) throws IOException
oos
- stream where object should be written
IOException
- if object cannot be written to streamprivate void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException
ois
- stream from which the object should be read
ClassNotFoundException
- if a class in the stream cannot be found
IOException
- if object cannot be read from the stream
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |