class RevisedSimplex extends Error
The RevisedSimplex
class solves Linear Programming (LP) problems using the
Revised Simplex Algorithm. Given a constraint matrix 'a', constant vector 'b'
and cost vector 'c', find values for the solution/decision vector 'x' that
maximize the objective function 'f(x)', while satisfying all of the constraints, i.e.,
maximize f(x) = c x subject to a x <= b, x >= 0
The revised algorithm has benefits over the Simplex Algorithm (less memory and reduced chance of round off errors).
- See also
math.uc.edu/~halpern/Linear.progr.folder/Handouts.lp.02/Revisedsimplex.pdf
- Alphabetic
- By Inheritance
- RevisedSimplex
- Error
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new RevisedSimplex(a: MatrixD, b: VectorD, c: VectorD, x_B: Array[Int] = null)
- a
the constraint matrix
- b
the constant/limit vector
- c
the cost/revenue vector
- x_B
the initial basis (set of indices where x_i is in the basis)
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @HotSpotIntrinsicCandidate()
- def dual: VectoD
Return the dual solution vector 'y'.
Return the dual solution vector 'y'. FIX
- def entering(): Int
Find the best variable 'x_l' to enter the basis.
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def flaw(method: String, message: String): Unit
- Definition Classes
- Error
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- def leaving(l: Int): Int
Find the best variable 'x_k' to leave the basis given that 'x_l' is entering.
Find the best variable 'x_k' to leave the basis given that 'x_l' is entering.
- l
the variable chosen to enter the basis
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
- def objValue(x: VectorD): Double
Return the optimal objective function value 'f(x) = c x'.
Return the optimal objective function value 'f(x) = c x'.
- x
the primal solution vector
- def pivot(k: Int, l: Int): Unit
Pivot by replacing 'x_k' with 'x_l' in the basis.
Pivot by replacing 'x_k' with 'x_l' in the basis. Update 'b_inv',' b_' and 'c_'.
- k
the leaving variable
- l
the entering variable
- def primal: VectorD
Return the primal solution vector 'x'.
- def setBasis(j: Int = N, l: Int = M): Array[Int]
There are 'M+N' variables, 'N' decision and 'M' slack variables, of which, for each iteration, M are chosen for a Basic Feasible Solution (BFS).
There are 'M+N' variables, 'N' decision and 'M' slack variables, of which, for each iteration, M are chosen for a Basic Feasible Solution (BFS). The the variables not in the basis are set to zero. Setting 'j' to 'N' will start with the slack variables in the basis (only works if 'b >= 0').
- j
the offset to start the basis
- l
the size of the basis
- def showTableau(): Unit
Show the current revised tableau displaying the basis, 'b_inv', 'b_', 'c_'.
- def solve(): (VectorD, Double)
Solve a Linear Programming (LP) problem using the Revised Simplex Algorithm.
Solve a Linear Programming (LP) problem using the Revised Simplex Algorithm. Iteratively pivot until there an optimal solution is found or it is determined that the solution is unbounded.
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- def unbounded(u: VectoD): Boolean
Determine whether 'u <= 0.0', i.e., the solution is unbounded.
Determine whether 'u <= 0.0', i.e., the solution is unbounded.
- u
the ?? vector FIX
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- var x_B: Array[Int]
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated