JMSLTM Numerical Library 4.0

com.imsl.math
Class LinearProgramming

java.lang.Object
  extended bycom.imsl.math.LinearProgramming
All Implemented Interfaces:
Cloneable, Serializable

public class LinearProgramming
extends Object
implements Serializable, Cloneable

Linear programming problem using the revised simplex algorithm.

Class LinearProgramming uses a revised simplex method to solve linear programming problems, i.e., problems of the form

mathop {min }limits_{x; in ;R^n } c^T x

subject to

b_l  le A_x  le b_u

,,x_l  le x le x_u

where c is the objective coefficient vector, A is the coefficient matrix, and the vectors b_l, b_u, x_l, and x_u are the lower and upper bounds on the constraints and the variables, respectively.

NOTE: This code is obsolete. For any new development one should use DenseLP instead.

For a complete description of the revised simplex method, see Murtagh (1981) or Murty (1983).

See Also:
Example 1, Example 2, Serialized Form

Nested Class Summary
static class LinearProgramming.BoundsInconsistentException
          The bounds given are inconsistent.
static class LinearProgramming.NumericDifficultyException
          Numerical difficulty occurred.
static class LinearProgramming.ProblemInfeasibleException
          The problem is not feasible.
static class LinearProgramming.ProblemUnboundedException
          The problem is unbounded.
 
Constructor Summary
LinearProgramming(double[][] a, double[] b, double[] c)
          Constructor variables of type double.
 
Method Summary
 Object clone()
          Creates and returns a copy of this object.
 double[] getDualSolution()
          Returns the dual solution.
 double getOptimalValue()
          Returns the optimal value of the objective function.
 double[] getPrimalSolution()
          Returns the solution x of the linear programming problem.
 void setConstraintType(int[] constraintType)
          Sets the types of general constraints in the matrix a.
 void setLowerBound(double[] lowerBound)
          Sets the lower bound on the variables.
 void setMaximumIteration(int iterations)
          Sets the maximum number of iterations.
 void setUpperBound(double[] upperBound)
          Sets the upper bound on the variables.
 void setUpperLimit(double[] upperLimit)
          Sets the upper limit of the constraints.
 void solve()
          Solves the program using the revised simplex algorithm.
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LinearProgramming

public LinearProgramming(double[][] a,
                         double[] b,
                         double[] c)
Constructor variables of type double.

Parameters:
a - A double matrix with coefficients of the constraints
b - A double array containing the right-hand side of the constraints.
c - A double array containing the coefficients of the objective function.
Throws:
IllegalArgumentException - is thrown if the dimensions of a, b.length, and c.length are not consistent.
Method Detail

clone

public Object clone()
Creates and returns a copy of this object.


getDualSolution

public double[] getDualSolution()
Returns the dual solution.

Returns:
a double array containing the dual solution of the linear programming problem.

getOptimalValue

public double getOptimalValue()
Returns the optimal value of the objective function.

Returns:
a double scalar containing the optimal value of the objective function.

getPrimalSolution

public double[] getPrimalSolution()
Returns the solution x of the linear programming problem.

Returns:
a double array containing the solution x of the linear programming problem.

setConstraintType

public void setConstraintType(int[] constraintType)
Sets the types of general constraints in the matrix a.

Parameters:
constraintType - a int array containing the types of general constraints.

constraintType

Constraint

0 {rm {r}}_i = {rm {b}}_i
1 {rm {r}}_i le {rm {bu}}_i
2 {rm {r}}_i ge {rm {b}}_i
3 {rm {b}}_i le {rm {r}}_i le {rm {bu}}_i


setLowerBound

public void setLowerBound(double[] lowerBound)
Sets the lower bound on the variables. If there is no lower bound on a variable, then 1.0e30 should be set as the lower bound.

Parameters:
lowerBound - a double array containing the lower bound on the variables.

setMaximumIteration

public void setMaximumIteration(int iterations)
Sets the maximum number of iterations. Default is set to 10000.

Parameters:
iterations - a int scalar specifying the maximum number of iterations.

setUpperBound

public void setUpperBound(double[] upperBound)
Sets the upper bound on the variables. If there is no upper bound on a variable, then -1.0e30 should be set as the upper bound.

Parameters:
upperBound - a double array containing the upper bound on the variables.

setUpperLimit

public void setUpperLimit(double[] upperLimit)
Sets the upper limit of the constraints.

Parameters:
upperLimit - a double array containing the upper limit of the constraints that have both the lower and the upper bounds.

solve

public final void solve()
                 throws LinearProgramming.BoundsInconsistentException,
                        LinearProgramming.NumericDifficultyException,
                        LinearProgramming.ProblemInfeasibleException,
                        LinearProgramming.ProblemUnboundedException,
                        SingularMatrixException
Solves the program using the revised simplex algorithm.

Throws:
LinearProgramming.BoundsInconsistentException - is thrown if the bounds are inconsistent.
LinearProgramming.ProblemInfeasibleException - is thrown if there is no feasible solution to the problem.
LinearProgramming.ProblemUnboundedException - is thrown if there is no finite solution to the problem.
LinearProgramming.NumericDifficultyException - is thrown if there is a numerical problem during the solution.
SingularMatrixException

JMSLTM Numerical Library 4.0

Copyright 1970-2006 Visual Numerics, Inc.
Built June 1 2006.