In mathematical optimization, the revised simplex method is a variant of George Dantzig's simplex method for linear programming.
The revised simplex method is mathematically equivalent to the standard simplex method but differs in implementation. Instead of maintaining a tableau which explicitly represents the constraints adjusted to a set of basic variables, it maintains a representation of a basis of the matrix representing the constraints. The matrix-oriented approach allows for greater computational efficiency by enabling sparse matrix operations.
For the rest of the discussion, it is assumed that a linear programming problem has been converted into the following standard form:
\begin{array}{rl} minimize&\boldsymbol{c}T\boldsymbol{x}\\ subjectto&\boldsymbol{Ax}=\boldsymbol{b},\boldsymbol{x}\ge\boldsymbol{0} \end{array}
For linear programming, the Karush–Kuhn–Tucker conditions are both necessary and sufficient for optimality. The KKT conditions of a linear programming problem in the standard form is
\begin{align} \boldsymbol{Ax}&=\boldsymbol{b},\\ \boldsymbol{A}T\boldsymbol{λ}+\boldsymbol{s}&=\boldsymbol{c},\\ \boldsymbol{x}&\ge\boldsymbol{0},\\ \boldsymbol{s}&\ge\boldsymbol{0},\\ \boldsymbol{s}T\boldsymbol{x}&=0 \end{align}
where and are the Lagrange multipliers associated with the constraints and, respectively. The last condition, which is equivalent to for all, is called the complementary slackness condition.
By what is sometimes known as the fundamental theorem of linear programming, a vertex of the feasible polytope can be identified by being a basis of chosen from the latter's columns. Since has full rank, is nonsingular. Without loss of generality, assume that . Then is given by
\boldsymbol{x}= \begin{bmatrix} \boldsymbol{xB}\\ \boldsymbol{xN} \end{bmatrix}= \begin{bmatrix} \boldsymbol{B}-1\boldsymbol{b}\\ \boldsymbol{0} \end{bmatrix}
where . Partition and accordingly into
\begin{align} \boldsymbol{c}&= \begin{bmatrix} \boldsymbol{cB}\\ \boldsymbol{cN} \end{bmatrix},\\ \boldsymbol{s}&= \begin{bmatrix} \boldsymbol{sB}\\ \boldsymbol{sN} \end{bmatrix}. \end{align}
To satisfy the complementary slackness condition, let . It follows that
\begin{align} \boldsymbol{B}T\boldsymbol{λ}&=\boldsymbol{cB},\\ \boldsymbol{N}T\boldsymbol{λ}+\boldsymbol{sN}&=\boldsymbol{cN}, \end{align}
which implies that
\begin{align} \boldsymbol{λ}&=(\boldsymbol{B}T)-1\boldsymbol{cB},\\ \boldsymbol{sN}&=\boldsymbol{cN}-\boldsymbol{N}T\boldsymbol{λ}. \end{align}
If at this point, the KKT conditions are satisfied, and thus is optimal.
If the KKT conditions are violated, a pivot operation consisting of introducing a column of into the basis at the expense of an existing column in is performed. In the absence of degeneracy, a pivot operation always results in a strict decrease in . Therefore, if the problem is bounded, the revised simplex method must terminate at an optimal vertex after repeated pivot operations because there are only a finite number of vertices.
Select an index such that as the entering index. The corresponding column of,, will be moved into the basis, and will be allowed to increase from zero. It can be shown that
\partial(\boldsymbol{c | |
T |
\boldsymbol{x})}{\partialxq}=sq,
i.e., every unit increase in results in a decrease by in . Since
\boldsymbol{BxB}+\boldsymbol{A}qxq=\boldsymbol{b},
must be correspondingly decreased by subject to . Let . If, no matter how much is increased, will stay nonnegative. Hence, can be arbitrarily decreased, and thus the problem is unbounded. Otherwise, select an index as the leaving index. This choice effectively increases from zero until is reduced to zero while maintaining feasibility. The pivot operation concludes with replacing with in the basis.
Consider a linear program where
\begin{align} \boldsymbol{c}&= \begin{bmatrix} -2&-3&-4&0&0 \end{bmatrix}T,\\ \boldsymbol{A}&= \begin{bmatrix} 3&2&1&1&0\\ 2&5&3&0&1 \end{bmatrix},\\ \boldsymbol{b}&= \begin{bmatrix} 10\\ 15 \end{bmatrix}. \end{align}
Let
\begin{align} \boldsymbol{B}&= \begin{bmatrix} \boldsymbol{A}4&\boldsymbol{A}5 \end{bmatrix},\\ \boldsymbol{N}&= \begin{bmatrix} \boldsymbol{A}1&\boldsymbol{A}2&\boldsymbol{A}3 \end{bmatrix} \end{align}
initially, which corresponds to a feasible vertex . At this moment,
\begin{align} \boldsymbol{λ}&= \begin{bmatrix} 0&0 \end{bmatrix}T,\\ \boldsymbol{sN}&= \begin{bmatrix} -2&-3&-4 \end{bmatrix}T. \end{align}
Choose as the entering index. Then, which means a unit increase in results in and being decreased by and, respectively. Therefore, is increased to, at which point is reduced to zero, and becomes the leaving index.
After the pivot operation,
\begin{align} \boldsymbol{B}&= \begin{bmatrix} \boldsymbol{A}3&\boldsymbol{A}4 \end{bmatrix},\\ \boldsymbol{N}&= \begin{bmatrix} \boldsymbol{A}1&\boldsymbol{A}2&\boldsymbol{A}5 \end{bmatrix}. \end{align}
Correspondingly,
\begin{align} \boldsymbol{x}&= \begin{bmatrix} 0&0&5&5&0 \end{bmatrix}T,\\ \boldsymbol{λ}&= \begin{bmatrix} 0&-4/3 \end{bmatrix}T,\\ \boldsymbol{sN}&= \begin{bmatrix} 2/3&11/3&4/3 \end{bmatrix}T. \end{align}
A positive indicates that is now optimal.
Because the revised simplex method is mathematically equivalent to the simplex method, it also suffers from degeneracy, where a pivot operation does not result in a decrease in, and a chain of pivot operations causes the basis to cycle. A perturbation or lexicographic strategy can be used to prevent cycling and guarantee termination.
Two types of linear systems involving are present in the revised simplex method:
\begin{align} \boldsymbol{Bz}&=\boldsymbol{y},\\ \boldsymbol{B}T\boldsymbol{z}&=\boldsymbol{y}. \end{align}
Instead of refactorizing, usually an LU factorization is directly updated after each pivot operation, for which purpose there exist several strategies such as the Forrest−Tomlin and Bartels−Golub methods. However, the amount of data representing the updates as well as numerical errors builds up over time and makes periodic refactorization necessary.