You are on page 1of 18

35241 OQM

Lecture Note – Part 5


The Revised Simplex Method

1 Introduction
This chapter introduces the revised Simplex method, a modified
implementation of the Simplex method in order to improve the
computational efficiency, which is crucial for large-scale LP mod-
els. Instead of generating a full Simplex tableau in each iteration,
the revised Simplex algorithm reduces computation by utilising a
simplified algebraic Simplex tableau and formulae to update the
bfs.
Large-scale LP problems contain large amounts of data, and
require even larger numbers of computations in each Simplex it-
eration. But actually some data generated in the Simplex tableau
in each iteration are irrelevant. In particular, the only nonbasic
variable of interest in each iteration is the one that has to en-
ter the basis. Similarly, a Simplex tableau with many columns
and few rows requires much more updating of nonbasic columns,
which may be unnecessary until many iterations later, if ever. The
revised Simplex method substantially reduces avoidable data stor-
age and computational effort while the underlying Simplex logic
remains the same.

1
Recall that the Simplex procedure in tabular form is actually
based upon the Simplex algebraic formulae.1 Given any basis xB ,
we can generate its Simplex tableau using the algebraic Simplex
tableau. Again, recall that for an LP in standard form2

min (or max) z = cT x


s.t. Ax = b
x ≥ 0
the algebraic Simplex tableau for each iteration with a chosen
basis xB is

basis x rhs

z cTB B−1 A − cT cTB B−1 b

xB B−1 A B−1 b

Since a basis xB is chosen, its corresponding basic matrix B and


objective coefficient vector cB can be obtained by inspection from
A and c respectively in the LP of the standard form. After calcu-
lating B−1 , we can compute any portion of the Simplex tableau.
This means that if a computer is programmed to perform the Sim-
plex algorithm, all the computer needs to store for any iteration
are the original LP in standard form, the chosen basis and its
corresponding B−1 . In other words, the key part of the Simplex
1
Please refer to Lecture Note – Part 3
2
After introducing the Big-M and two-phase Simplex method, we can assume without
loss of generality that a feasible basis and thus bfs can be obtained in an LP in standard
form.

2
procedure after choosing a basis xB (by entering one nonbasic
variable and leaving one basic variable) is the calculation of B−1 .
If for each iteration we calculate the current B−1 from scratch, it
would take a lot of work and be inefficient. The key idea of the
revised Simplex method stems from how to efficiently keep track
of the changes in B−1 , i.e. efficiently update B−1 . Later we will
show that B−1 can actually be obtained in the row-operated con-
straint matrix in the Simplex tableau. Instead of producing the
full Simplex tableau, the revised Simplex method adopts a sim-
plified Simplex tableau to update B−1 and some essential data.
Now let’s try to generate the initial Simplex tableau via the
other equivalent algebraic Simplex tableau3 , where the decision
variable vector x is decomposed into the basis xB and nonbasis
xN , as shown below.4

basis xN xB rhs

z cTB B−1 N − cTN 0 cTB B−1 b

xB B−1 N I B−1 b

Recalling how an initial basis is always generated in the system


of equations Ax = b, we notice that the columns of A associated
with an initial basis xB0 simply constitute the identity matrix, i.e.
B0 = I and A = (N0 | I). Then the initial Simplex tableau can be
shown as below.
3
Certainly, the yielded Simplex tableau will be in canonical form.
4
Recall that xT = (xTN | xTB ), cT = (cTN | cTB ) and A = (N | B).

3
basis xN0 xB0 rhs

z cTB0 N0 − cTN0 0 cTB0 b

xB0 N0 I b

Assume now that we determine a new (adjacent) basis xB1 with


the basic matrix B1 and perform the Simplex procedure (i.e. piv-
oting) to produce the corresponding new Simplex tableau from
this initial one. The algebraic Simplex tableau shows that in the
new tableau the rhs of xB1 is B−11 b. Therefore, the obtained con-
straint matrix of the new tableau is exactly the constraint matrix
of the initial tableau multiplied by B−1
1 , i.e.

B−1 −1 −1 −1 −1
1 (N0 | I) = (B1 N0 | B1 I) = (B1 N0 | B1 ).

Actually, the performed EROs in pivoting completes the linear


transformations on the system of constraints/equations. These
transformations are recorded on the part of new tableau, which
was originally I in the initial tableau. It is exactly B−1
1 , which is a
record of all the Simplex EROs conducted from the initial tableau
to the new one.
Then the new reduced cost is
cTB1 B−1
1 A−c
T
= cTB1 B−1 T T
1 (N0 | I) − (cN0 | cB0 )

= (cTB1 B−1 T −1 T T
1 N0 | cB1 B1 ) − (cN0 | cB0 )

= (cTB1 B−1 T T −1 T
1 N0 − cN0 | cB1 B1 − cB0 ).

4
Therefore, the new Simplex tableau after the first iteration is
shown below.
basis xN0 xB0 rhs

z cTB1 B−1 T
1 N0 − cN0 cTB1 B−1 T T −1
1 − cB0 cB1 B1 b

xB1 B−1
1 N0 B−1
1 B−1
1 b

From this new tableau we can observe that


• B−1
1 is the constraint submatrix whose columns are associ-
ated with the original basis xB0 ;

• Once B−1
1 is known, we can calculate all other parts in the
new tableau;

• It will be convenient to calculate all values in row 0 if we


keep track of the value cTB1 B−1
1 ;

• B−1
1 N0 consists of the constraint columns corresponding to
the original nonbasis xN0 .
Assume that (xTN1 | xTB1 ) is not optimal. The Simplex procedure
keeps generating a new (adjacent) basis xB2 for the second itera-
tion. Then it can be easily shown that the new Simplex tableau
below will be yielded.
basis xN0 xB0 rhs

z cTB2 B−1 T
2 N0 − cN0 cTB2 B−1 T T −1
2 − cB0 cB2 B2 b

xB2 B−1
2 N0 B−1
2 B−1
2 b

5
Therefore, once a new basis xB is determined for any iteration,
we can update B−1 without applying EROs for the entire bottom
part of the Simplex tableau. This leads to the revised Simplex
algorithm, which updates B−1 between iterations via a simplified
tableau.

2 The Revised Simplex Algorithm Procedure


Consider a minimisation (or maximisation) LP in standard form.

min (or max) z = cT x


s.t. Ax = b
x ≥ 0
Below is the four-step procedure of the revised Simplex algorithm.

Step 1 (Initialisation)
For an initial basis xB , generate the initial revised Simplex
tableau:

basis inverse rhs

z cTB B−1 cTB B−1 b

xB B−1 B−1 b

Step 2 (Pricing)
Compute the reduced costs of the nonbasis xN ,

cTN = cTB B−1 N − cTN ,


b

6
that is, calculate for each nonbasic variable xj the reduced
cj = cTB B−1 Aj − cj , where Aj is the column of A corre-
cost b
sponding to xj .
• If b
cN ≤ 0 (or b cN ≥ 0), then the current bfs is optimal;
STOP.
• Otherwise, select a variable xt whose reduced cost b ct is
the most positive (or the most negative) among b cN as the
entering variable. Calculate

B−1 At = (b amt )T .
a2t , · · · , b
a1t , b

Append a new column to the left of the current revised Sim-


plex tableau:

xt basis inverse rhs

b
ct z cTB B−1 cTB B−1 b

B−1 At xB B−1 B−1 b

Step 3 (Ratio test)


• If B−1 At ≤ 0, then the problem is unbounded; STOP.
• Otherwise, find the index
n bb o
i
s = arg min :b
ait > 0 ,
1≤i≤m bait

where bbi is the ith component of the vector B−1 b, i.e. B−1 b =
(bb1 , bb2 , · · · , bbm )T . Replace the variable (xB )s with the vari-
able xt in the current basis to generate the new basis.

7
Step 4 (Pivoting)
Update the tableau by pivoting on b ast , i.e. perform EROs in
the tableau to get a 1 in this pivot element and 0s above and
below it. Drop the leftmost column and GO TO Step 2.

Since the revised Simplex algorithm does not update all the
columns, it can be more efficient than the conventional Simplex
method (especially if there are numerous columns). Most LP com-
puter codes use the revised Simplex to solve LPs. Knowing the
current tableau’s B−1 and the initial tableau (i.e. the original
LP in standard form) is all needed to obtain the next tableau, so
the computational effort required to solve an LP by the revised
Simplex depends primarily on the size of B−1 . Suppose the LP
being solved has m constraints and n variables. Then each B−1
will be an m × m matrix, and the effort required to solve an LP
will depend primarily on the number of constraints rather than
the number of variables. This fact has important computational
implications. For example, if we are solving an LP that has 500
constraints and 10 variables, the LP’s dual5 will have 10 con-
straints and 500 variables. Then all the B−1 ’s for the dual will be
10×10 matrices, and all the B−1 ’s for the primal will be 500×500.
Thus, it will be much easier to solve the dual than to solve the
primal. In this situation, computation can be greatly reduced by
solving the dual and reading the optimal primal solution from the
optimal dual Simplex tableau.
5
In the forthcoming lectures, we will introduce the duality of an LP problem.

8
3 Examples of the Revised Simplex Proce-
dure

Example 1. Consider the following LP which was shown in Lec-


ture Note – Part 2.

max z = x1 + x2
s.t. x1 + 12 x2 ≤ 2
3x1 + 2x2 ≤ 12
x1 , x2 ≥ 0

Converting the general form to standard form gives

max z = x1 + x2
s.t. x1 + 21 x2 + x3 = 2
3x1 + 2x2 + x4 = 12
x1 , x2 , x3 , x4 ≥ 0

To solve it with the revised Simplex algorithm, we begin with the


obvious initial basis xB = (x3 , x4 )T . Then we have
! ! !
1 0 1 0 2
B= → B−1 = , B−1 b = ,
0 1 0 1 12

cTB = (0, 0), cTB B−1 = (0, 0), and cTB B−1 b = 0.

So the initial revised Simplex tableau is

9
basis inverse rhs
z 0 0 0
x3 1 0 2
x4 0 1 12

For each nonbasic variable xj , j = 1, 2, the reduced cost is calcu-


cj = cTB B−1 Aj − cj , so
lated using the formula b

! !
1
1 2
c1 = (0, 0)
b − 1 = −1, c2 = (0, 0)
b − 1 = −1
3 2

Two variables have the same negative reduced cost, so we can


choose either, say x1 , as the entering variable. Then we append
x1 , b
c1 = −1 and the column vector
! ! !
1 0 1 1
B−1 A1 = =
0 1 3 3
to the left of the current tableau.
x1 basis inverse rhs
−1 z 0 0 0
1 x3 1 0 2
3 x4 0 1 12

The ratio test min{ 12 , 12


3 } implies that x3 is the leaving variable.
Then the pivoting gives the following new tableau.

10
x1 basis inverse rhs
0 z 1 0 2 R0′ ← R0 + R1
1 x1 1 0 2
0 x4 −3 1 6 R2′ ← R2 − 3R1

The new basis is xB = (x1 , x4 ), and the above revised Simplex


tableau gives !
1 0
B−1 =
−3 1
and
cTB B−1 = (1, 0).
Dropping the leftmost column (i.e. the x1 column) gives the cur-
rent revised Simplex tableau. Now we can proceed with the second
iteration using the data provided by the current tableau. The
second iteration begins by calculating the reduced costs of the
nonbasic variables x2 and x3,

! !
1
2 1 1
c2 = (1, 0)
b −1=− , c3 = (1, 0)
b − 0 = 1.
2 2 0

Since b
c2 is the unique negative value, x2 is the entering variable.
We append x2 , bc2 = − 12 and the column
! ! !
1 1
1 0
B−1 A2 = 2 = 2
1
−3 1 2 2
to the left of the current tableau as shown below.

11
x2 basis inverse rhs
− 12 z 1 0 2
1
2 x1 1 0 2
1
2 x4 −3 1 6

The ratio test min{ ( 21 ) , ( 61 ) } suggests that x1 is the leaving variable.


2 2
Then the pivoting gives the following new tableau.

x2 basis inverse rhs


0 z 2 0 4 R0′′ ← R0′ + R1′
1 x2 2 0 4 R1′′ ← 2R1′
0 x4 -4 1 4 R2′′ ← R2′ − R1′

The new basis is xB = (x2 , x4 ), and the above revised Simplex


tableau gives
!
2 0
B−1 = and cTB B −1 = (2, 0).
−4 1
Dropping the leftmost column (i.e. the x2 column) gives the cur-
rent revised Simplex tableau. We now proceed with the third it-
eration by calculating the reduced costs of the nonbasic variables
x1 and x3,
! !
1 1
c1 = (2, 0)
b − 1 = 1, bc3 = (2, 0) − 0 = 2.
3 0
All the reduced costs are nonnegative, so this is an optimal revised
Simplex tableau. The optimal solution for the LP in standard

12
form is (x1 , x2 , x3 , x4) = (0, 4, 0, 4). The optimal solution for the
original LP is (x1 , x2) = (0, 4). The optimal objective value is
zmax = 4.6

Example 2. Consider the following LP in standard form.

max z = 60x1 + 30x2 + 20x3


s.t. 8x1 + 6x2 + x3 + x4 = 48
4x1 + 2x2 + 1.5x3 + x5 = 20
2x1 + 1.5x2 + 0.5x3 + x6 = 8
x1 , x2 , x3 , x4 , x5 , x6 ≥ 0

Then we have
x = (x1 , x2 , x3 , x4 , x5 , x6 )T
c = (60, 30, 20, 0, 0, 0)T
b = (48, 20, 8)T
A = ( A1 A2 A3 A4 A5 A6 )
 
8 6 1 1 0 0
 
 
=4 2 1.5 0 1 0 
 
2 1.5 0.5 0 0 1

6
Note that the revised Simplex method seems to require more work on paper, but it is
definitely more efficient than the conventional Simplex method on computing, especially
for LPs with numerous decision variables.

13
The obvious initial basis is xB = (x4 , x5, x6 )T , and we have
     
1 0 0 1 0 0 48
  −1   −1  
B = 0 1 0 → B = 0 1 0 , B b = 20
0 0 1 0 0 1 8

cTB = (0, 0, 0), cTB B−1 = (0, 0, 0), cTB B−1 b = 0.


So the initial revised Simplex tableau is

basis inverse rhs


z 0 0 0 0
x4 1 0 0 48
x5 0 1 0 20
x6 0 0 1 8

For each nonbasic variable xj , j = 1, 2, 3, the reduced cost b


cj =
cTB B−1 Aj − cj is calculated as follows:
 
8
 
c1 = ( 0, 0, 0 ) 4 − 60 = −60,
b
2
 
6
 
c2 = ( 0, 0, 0 )  2  − 30 = −30,
b
1.5
 
1
 
c3 = ( 0, 0, 0 ) 1.5 − 20 = −20.
b
0.5

14
Since b
c1 = −60 is the most negative, the entering variable is x1 .
We append x1 , b
c1 and the column vector
   

1 0 0 8 8
−1     
B A1 = 0 1 0 4 = 4
0 0 1 2 2
to the left of the initial tableau as follows.

x1 basis inverse rhs


−60 z 0 0 0 0
8 x4 1 0 0 48
4 x5 0 1 0 20
2 x6 0 0 1 8

The ratio test min{ 48 20 8


8 , 4 , 2 } implies that x6 shall leave the current
basis.
Then the pivoting gives the following new tableau:

x1 basis inverse rhs


0 z 0 0 30 240 R0′ ← R0 + 30R3
0 x4 1 0 -4 16 R1′ ← R1 − 4R3
0 x5 0 1 -2 4 R2′ ← R2 − 2R3
1
1 x1 0 0 2 4 R3′ ← 21 R3

The new basis is xB = (x4 , x5 , x1), and the above revised Simplex
tableau gives

15
 
1 0 −4
 
B −1
= 0 1 −2 and cTB B −1 = (0, 0, 30).
0 0 12
Dropping the first column (i.e. the x1 column) gives the current
revised Simplex tableau. Now we can proceed with the second
iteration using the data provided by the current tableau. The
second iteration begins by calculating the reduced costs of the
nonbasic variables x2, x3 and x6,
 
6
 
c2 = (0, 0, 30)  2  − 30 = 15.
b
1.5
 
1
 
c3 = (0, 0, 30) 1.5 − 20 = −5.
b
0.5
 
0
 
c6 = (0, 0, 30) 0 − 0 = 30.
b
1
Since the most negative reduced cost is b
c3 = −5, x3 is the entering
variable. We append x3 , b
c3 and the column vector
    
1 0 −4 1 −1
    
B−1 A3 = 0 1 −2 1.5 =  0.5 
0 0 0.5 0.5 0.25
to the left of the current tableau as follows.

16
x3 basis inverse rhs
−5 z 0 0 30 240
−1 x4 1 0 -4 16
0.5 x5 0 1 -2 4
1
0.25 x1 0 0 2 4

4 4
The ratio test min{ 0.5 , 0.25 } shows that x5 shall leave the current
basis. Then the pivoting gives the following new tableau:

x3 basis inverse rhs


0 z 0 10 10 280 R0′′ ← R0′ + 5R2′′
0 x4 1 2 -8 24 R1′′ ← R1′ + R2′′
1 x3 0 2 -4 8 R2′′ ← 2R2′
0 x1 0 -0.5 1.5 2 R3′′ ← R3′ − 0.5R2′

The new basis is xB = (x4 , x3 , x1), and the above revised Simplex
tableau gives
 
1 2 −8
 
B−1 = 0 2 −4 and cTB B−1 = (0, 10, 10).
0 −0.5 1.5

Dropping the first column (i.e. the x3 column) gives the current
revised Simplex tableau. We now proceed with the third iteration
by calculating the reduced costs for the nonbasic variables x2 , x5
and x6 ,

17
 
6
 
c2 = (0, 10, 10)  2  − 30 = 5,
b
1.5
 
0
 
c5 = (0, 10, 10) 1 − 0 = 10,
b
0
 
0
 
c6 = (0, 10, 10) 0 − 0 = 10.
b
1
All reduced costs are nonnegative, so this is the final tableau. The
optimal solution is (x1 , x2 , x3 , x4, x5 , x6) = (2, 0, 8, 24, 0, 0) with
the optimal objective value zmax = 280.

Further reading: Section 10.1 in the reference book “Operations Research: Applica-
tions and Algorithms” (Winston, 2004)

18

You might also like