Chapter 7. The Revised Simplex Method
Recall Theorem 3.1, same basis same dictionary
Entire dictionary can be constructed as long as we know which
variables are basic.
Suppose we have the following form after adding slack variables
to the standard LP. (or any LP in equality form and nonnegativity)
maximize
c' x
subject to
Ax b
x0
a11
a
A 21
a m1
OR-1 2007
a12
a1 n
a 22
a 2n
a m 2 a mn
0
1
0
1
1
1
Note that we have m basic variables and n nonbasic variables in a
dictionary.
Reorder the columns of A (the order that variables appear) so that
the columns for basic variables come first. Partition A into A=[B :
N], where B is mm (and nonsingular, see the proof in the text
p.100) and the columns of B correspond to basic variables.
Let x [ x B , x N ], c [c B , c N ]
xB
Then Ax b B : N
Bx B Nx N b Bx B b Nx N
xN
Premultiply B 1 on both sides Ix B x B B 1b B 1 Nx N
(matrix form of constraints in current dictionary with basis B )
xB
z c' x [c B ' , c N ' ] c B ' x B c N ' x N c B ' ( B 1b B 1 Nx N ) c N ' x N
xN
c B ' B 1b (c N 'c B ' B 1 N ) x N c B ' B 1b jN (c j c B ' B 1 A j ) x j
y' b jN (c j y' A j ) x j
OR-1 2007
(let y' c B ' B 1 )
2
Matrix representation of dictionary (tableau)
z c B ' B 1b (c N 'c B ' B 1 N ) x N
x B B 1 b
B 1 Nx N
z 0' x B (c N 'c B ' B 1 N ) x N c B ' B 1b
xB
B 1 Nx N
B 1b
Note that c B ' B 1 N c B ' B 1 [ AN1 , AN 2 ,..., AN n ] y'[ AN1 , AN 2 ,..., AN n ]
We frequently use y' c B ' B 1 , i.e. y is the solution of y' B c B '
Hence (c N 'c B ' B 1 N ) x N jN (c j y' A j ) x j
and c B ' B 1b y' b
In the text AN is used instead of N
OR-1 2007
3
Current tableau
z 0' x B (c N 'c B ' B 1 N ) x N c B ' B 1b
xB
B 1 Nx N
B 1b
cB ' B 1N cB ' B 1[ AN1 , AN 2 ,..., AN n ] y'[ AN1 , AN 2 ,..., AN n ]
cB’B-1N can be interpreted differently
a1'
a1'
cB ' B 1N cB ' B 1 y'
am '
am '
i.e. we take linear combination of rows of N using weights - yi and
add it to cN’ in the z-row.
For basic variables, we have y’B = cB’. Hence the coefficients 0 of
the basic variables in the z-row can be interpreted as taking linear
combination of rows of B using weights – yi and add it to cB’ in
the z-row.
OR-1 2007
4
Similar argument also holds for r.h.s., i.e. add (- y)’b to z-row.
Hence given the initial tableau, we obtain z-row of the updated
tableau by taking linear combination of rows of the initial tableau
using weights - yi and add it to z-row.
It is the net effect of many elementary row operations performed
on the tableau.
Recall the proof of strong duality theorem, in which we claimed
that the negative of the coefficients of slack variables in z-row is
optimal dual solution. It is the – y vector obtained by y = cB’B-1.
We will see why the negative of the coefficients of slack variables
in z-row is - y vector from y = cB’B-1 shortly.
OR-1 2007
5
Initially, we have
z
z
c
0
0
A
I
b
cB '
cN '
0
B
N
b
After reordering
of columns
OR-1 2007
6
Updated tableau
z
cB '
cN '
0
B
N
b
= cB’ – cB’B-1B
z
0
I
OR-1 2007
c N 'c B ' B 1 N
B 1 N
c B 1b
B
B 1b
7
Let y' c B ' B 1 ( y' B c B )
Then updated z-row is obtained by multiplying - yi to the i-th
constraint (row) and add it to z-row for all constraints i.
We can identify each coefficient of nonbasic variable in z-row by
computing cj – y’Aj , once y vector is known ( y’ = cB’B-1 ) .
Also B-1 gives information which elementary row operations are
performed on the constraints.
( updated i-th constraint = ( i-th row of B-1 ) [B : N] )
Ex)
13 x 2
12 x 3
17 x 4
3 x1
2 x2
x3
2 x4
225
x1
x2
x3
1 x4
117
4 x1
3 x2
3 x3
4 x4
420
max 19 x1
s .t .
x1 , x2 , x3 , x4 0
OR-1 2007
8
Current dictionary
z
1782 2.5 x 2
1 .5 x 4
3.5 x 5
8 .5 x 6
x1
54
0 .5 x 2
0.5 x 4
0 .5 x 5
0.5 x 6
x3
63
0 .5 x 2
0.5 x 4
0.5 x 5
1.5 x 6
x7
15
0 .5 x 2
0.5 x 4
0.5 x 5
2.5 x 6
Basic variables are { x1 , x3 , x7 }
3 1 0
1 / 2 1 / 2 0
B 1 1 0 , B 1 1 / 2 3 / 2 0
4 3 1
1 / 2 5 / 2 1
3 1 0 1 0 0
1
1 1 0 0 1 0 0
4 3 1 0 0 1
0
OR-1 2007
1
2
5
3
3
3
0
1
0
1
3
1
3
4
3
0 0
1 0 0 1 2 1 2 0
3
1
1 0 0 1 0 2
0
2
0 0 1 1 2 5 2 1
0 1
9
1 2 1 2 0 2 2 1 0 1 2
B 1 N 1 2 3 2 0 1 1 0 1 1 2
1 2 5 2 1 3 4 0 0 1 2
1 2 1 2 0 225 54
B 1b 1 2 3 2 0 117 63
1 2 5 2 1 429 15
1
1
1
2
2
2
1
2
1
2
1
2
12
3
2
5 2
y'
1 2 1 2 0 225
225
c B ' B 1b 19 12 0 1 2 3 2 0 117 3.5 8.5 0117 1782
1 2 5 2 1 429
429
2
c 2 y' A2 13 3.5 8.5 01 2.5
3
OR-1 2007
2
c4 y' A4 17 3.5 8.5 01 1.5
4
10
x1 x2
z
x3
x4
x5
x6
cB
x7
19 13 12 17 0 0 0 0
3 2 1 2 1 0 0 225
1 1 1 1 0 1 0 117
4 3 3 4 0 0 1 420
x1 x3
z
B
x7
x2
x4
19 12 0 13 17
3 1 0 2 2
1 1 0 1 1
4 3 1 3 4
cN
x5
x6
0
0 0
0 225
1 117
0 420
1
0
0
N
Updated tableau
y' (3.5, 8.5, 0)
z
c j y' A j
B 1 B
OR-1 2007
x1 x3
0
1
0
0
0
0
1
0
B 1 N
x7
x2
x4
x5
x6
0 2.5 1.5 3.5 8.5 1782
0 0.5 0.5 0.5 0.5 54
0 0.5 0.5 0.5 1.5 63
1 0.5 0.5 0.5 2.5 15
y' b
B 1b
11
x1 x3
z
0
1
0
0
0
0
1
0
x7
x2
x4
x5
x6
0 2.5 1.5 3.5 8.5 1782
0 0.5 0.5 0.5 0.5 54
0 0.5 0.5 0.5 1.5 63
1 0.5 0.5 0.5 2.5 15
c j y' A j
x1 x2
x3
x4
x5
x6
x7
19 13 12 17 0 0 0 0
3 2 1 2 1 0 0 225
1 1 1 1 0 1 0 117
4 3 3 4 0 0 1 420
x1
x2
x3
x4
x5
x6
x7
0
1
0
0
2.5 0 1.5 3.5 8.5 0 1782
0.5 0 0.5 0.5 0.5 0 54
0.5 1 0.5 0.5 1.5 0 63
0.5 0 0.5 0.5 2.5 1 15
B 1
OR-1 2007
12
c j y' A j
x1 x2
x3
x4
19 13 12 17
3 2 1 2
1 1 1 1
4 3 3 4
x1
x5
x6
x7
0
0
1
0
0
1
0
0
0 0
0 225
0 117
1 420
0
1
0
0
x2
x3
- 2.5
0
0.5
0
0.5
1
0.5
0
x4
x5
x6
x7
1.5 - 3.5 - 8.5 0 1782
0.5 0.5 - 0.5 0 54
0.5 - 0.5 1.5 0 63
0.5 - 0.5 - 2.5 1 15
B 1
cj – y’Aj = - ym+j
cj – y’ej = - yj
x1
0
1
0
0
OR-1 2007
x2
x3
- 2.5
0
0.5
0
0.5
1
0.5
0
x4
x5
x6
x7
1.5 - 3.5 - 8.5 0 1782
0.5 0.5 - 0.5 0 54
0.5 - 0.5 1.5 0 63
0.5 - 0.5 - 2.5 1 15
13
Note that the coefficient of j-th original structural variable in the zrow is cj – y’Aj .
Since dual constraint for j-th structural variable is y’Aj cj , we
obtain y’Aj – ym+j = cj if we subtract nonnegative surplus variable
to convert it into an equation.
Then cj – y’Aj = - ym+I . So the coefficient of j-th structural variable
in the z-row can be interpreted as the negative of j-th surplus
variable of the dual problem.
In the optimal tableau, the coefficients in z-row are all nonpositive.
Hence we have a dual feasible solution.
Also cB’B-1b = cB’xB = y’b ( xB = B-1b, y’ = cB’B-1 )
OR-1 2007
14
Summary
We can read the B-1 matrix from the updated tableau.
Note that B-1 [B | N ] = [ I | B-1 N ] in the updated tableau. If we
premultiply B-1 to [A | I ] matrix in the initial tableau, we obtain the
same matrix as [ I | B-1 N ] except that the positions of the columns
are different.
From B-1 [A | I ] = [B-1A | B-1 ], we conclude that B-1 is the coefficient
matrix for the slack variables in the updated tableau. Also B-1
carries the information of the net effect of the elementary row
operations we needed to perform to obtain the updated tableau from
the initial tableau.
We can read a dual solution from the z-row in the updated tableau.
Let O denote the index set of original structural variables and S
the slack vars.
Then z jN (c j y' A j ) x j z jB, N (c j y' A j ) x j y' b
Note that we have y’B=cB’ , hence (c j y' A j ) 0 for basic variables
OR-1 2007
15
Then z jB , N (c j y' A j ) x j z jO (c j y' A j ) x j jS (c j y' A j ) x j
z jO (c j y' A j ) x j jS ( y j ) x j
Here, y j , j S can be interpreted as the value of the j - th dual variable and
(c j y' A j ), j O as the negative of the surplus variable for the j - th dual constraint.
Note that from y' A j c j y' A j z j c j
Then we have
( z j c j y' A j )
z jO ( z j ) x j jS ( y j ) x j y' b
i.e. negative of the coefficien ts in the z row gives values of the dual structural
variables and the dual surplus variables, and the constant y' b gives the dual
objective value for the current dual solution.
Note that if the coefficien t in the z row are all nonpositive, then the dual variables
satisfy dual constraints and nonnegativity, hence dual feasible and gives objective
value y' b which is the same as the objective value of the current primal solution.
So current solution is opt.
OR-1 2007
16
In summary, each tableau in the simplex iterations gives primal
basic feasible solution and, as a by-product, gives a dual solution
(it is a dual basic solution although we do not prove it here).
The dual solution is not necessarily dual feasible, but always gives
an objective value of the dual problem which is the same as the
primal objective value of the current primal solution. Also the
primal and the dual solution pairs satisfy the complementary
slackness condition (check this)
If we obtain a dual feasible solution, i.e. the coefficients in the zrow are all nonpositive, we obtain primal, dual feasible solution
with the same objective value. Hence optimality of the primal
solution is established.
Other types of algorithms can be designed using the
complementary slackness optimality conditions. (e.g. dual simplex
method, some algorithms for network problems, ...)
OR-1 2007
17
If bi bi 1, then the objective value y' b y' b y i (as long as we have
the same basis). Hence y i represent the amount of change in the objective
value (with current basis B ) when bi changes by 1 unit.
Note that if we change the value of bi while x *B B 1b 0 , current basis is
still the optimal basis hence objective value changes by y i .
But, if the nonnegativity of the basic variables is violated by changing bi ,
the current basis is no longer an optimal basis for the changed problem.
(more in sensitivity analysis later)
OR-1 2007
18
The Revised Simplex Method
Efficient implementation of the simplex method.
Recall the needed operations for the simplex method:
Find the entering and the leaving variable, update dictionary. (If
we know the basis, entire tableau can be constructed. Hence we
do not really need to update the dictionary.)
Find the entering variable xj : ( c j c B ' B 1 A j 0, j N )
1
1) Find y' c B ' B by solving y' B c B '
2) Evaluate c j y' A j for all j N
Choose a nonbasic variable with c j y' A j 0 as the
entering nonbasic var.
Find the leaving variable:
x B x *B B 1 Nx N x *B B 1 AN1
B 1 AN 2
B 1 AN n x N
x *B jN ( B 1 A j ) x j
OR-1 2007
19
Suppose x k , kN is the entering nonbasic variable. As we
increase x k while keeping other nonbasic variables at 0, we get
x B x *B td
(d B 1 Ak )
( Find d by solving Bd Ak )
Then determine the largest value t which makes x *B td 0,
and find the basic variable which becomes 0, say x l .
x i*
i .e ., l arg min | d i 0
iB
di
x i*
and set t min | d i 0
iB d i
*
Update:
Set x k t *
x *B x *B t * d
Replace the leaving column of B by entering column Aj , and xk
enters the basis in place of xl (position in the basis is important)
OR-1 2007
20
ex)
13 x 2
12 x3
17 x 4
3 x1
2 x2
x3
2 x4
225
x1
x2
x3
1x 4
117
4 x1
3 x2
3 x3
4 x4
420
max 19 x1
s .t .
x1 , x2 , x3 , x4 0
Current dictionary
z
1782 2.5 x 2
1.5 x 4
3.5 x5
8.5 x 6
x1
54
0.5 x 2
0 .5 x 4
0.5 x5
0.5 x 6
x3
63
0.5 x 2
0 .5 x 4
0.5 x5
1.5 x 6
x7
15
0 .5 x 2
0 .5 x 4
0.5 x5
2.5 x 6
Basic variables are { x1 , x3 , x7 }
OR-1 2007
x1* 54
3 1 0
x *B x3* 63 , B 1 1 0
x 7* 15
4 3 1
21
Find entering nonbasic variable xj such that cj - y’Aj > 0
( y = cB’B-1 )
First solve y’B = cB’
y1
y2
3 1 0
y3 1 1 0 19 12 0 y' 3.5 8.5 0
4 3 1
2
c2 y ' A2 13 3.5 8.5 01 2.5
3
1
c5 y ' A5 0 3.5 8.5 00 3.5
0
2
c4 y ' A4 17 3.5 8.5 01 1.5
4
0
c6 y ' A6 0 3.5 8.5 01 8.5
0
x 4 enters the basis
OR-1 2007
22
From xB x*B B 1 AN x N , consider x*B tB 1 A4
Solve Bd A4 to find B 1 A4
3 1 0 d1 2
1 1 0 d 1
2
4 3 1 d 3 4
d1 0.5
d 0.5
2
d 3 0.5
x1 54 0.5t
x3 63 0.5t
( x4 : 0 t )
x 7 15 0.5t
54
0.5 39
x *B 63 300.5 48
15
0.5 0
OR-1 2007
54 63 15
ratio test : min
,
,
30
0.5 0 .5 0.5
t * 30,
( x 4* becomes 30)
x 7 leaves the basis
x1* 39
3 1 2
new x *B x3* 48, new B 1 1 1
x 4* 30
4 3 4
23
© Copyright 2026 Paperzz