The simplex method in matrix notation Arrange the variable tuples

The simplex method in matrix notation
Arrange the variable tuples
(x1 , . . . , xn , w1 , . . . , wm ) = (x1 , . . . , xn , xn+1 , . . . , xn+m ),
(z1 , . . . , zn , y1 , . . . , ym ) = (z1 , . . . , zn , zn+1 , . . . , zn+m ).
Let B and N be the current lists of basic and nonbasic indices, respectively.
Arrange the data entries according to the index lists:
xB
cB
z
x=
, A = AB AN = B N m×(m+n) , c =
, z= B
.
xN (m+n)×1
cN (m+n)×1
zN (m+n)×1
Let x∗ and z ∗ be the points associated with the current primal and dual dictionaries,
∗ ∗ ∗
0
xB
z
xB
∗
∗
,
z = ∗B = ∗ .
x = ∗ =
zN
0
zN
xN
These dictionaries are then of the form:
Primal
Dual
∗ >
ζ = ζ ∗ − zN
xN
xB = x∗B − K xN
− ξ = −ζ ∗ − x∗B > zB
∗
zN = zN
+ K > zB .
∗
, ζ ∗ , K in terms of b, cB , cN , B, N.
We can write down the expressions for ζ, x∗B , zN
Indeed, since
xB
Ax = B N
= BxB + N xN = b
xN
and since B is invertible, we have
xB = B −1 b − B −1 N xN .
Furthermore,
>
ζ=c x=
c>
B
c>
N
xB
>
= c>
B x B + cN x N
xN
−1
−1
>
= c>
B (B b − B N xN ) + cN xN
−1
−1
>
>
= c>
B B b − ((B N ) cB − cN ) xN .
Thus
x∗B = B −1 b is the vector of current values of basic variables,
K = B −1 N
is the matrix of current constraint coefficients,
−1
ζ ∗ = c>
B B b is the current objective function value,
∗
zN
= (B −1 N )> cB − cN
is the vector of current values of dual basic variables.
Note that the complementarity condition x∗j zj∗ = 0, j = 1, . . . , n + m, is a direct consequence of how the variables are arrangement. If the primal dictionary is feasible, x∗B ≥ 0,
∗
and if the dual dictionary is feasible, zN
≥ 0, then the primal dictionary is optimal.
The m × n matrix K = B −1 N of constraint coefficients carries important information
about the dictionary. If the current lists of basic and nonbasic indices are B = (β1 , . . . , βm )
and N = (ν1 , . . . , νn ), then the equality xB = x∗B − KxN takes the form
xβ1 = x∗β1 − K11 xν1 − . . . − K1n xνn
xβ2 = x∗β2 − K21 xν1 − . . . − K2n xνn
..
..
..
..
.
.
.
.
∗
xβm = xβm −Km1 xν1 − . . . −Kmn xνn .
Let x∗B ≥ 0. Suppose that xνj = t increases from zero, while xν = 0 for all other ν ∈ N .
We then have xB = x∗B − tKj , where Kj is the jth column of K. To preserve feasibility,
we must ensure that
x∗βi − tKij ≥ 0, i = 1, . . . , m.
x∗β
If Kij ≤ 0, then x∗βi − tKij ≥ 0 gives no bound on t, and if Kij > 0, then t ≤ i .
Kij
Thus the new value of xνj is given by
x∗βi
,
Kij
where the minimum is taken over all i = 1, . . . , m such that Kij > 0. If Kj ≤ 0,
the problem is unbounded. Otherwise, for any i for which the minimum is attained, the
variable xβi can be chosen as the leaving variable.
t = min
Step summary
∗
Entering variable: select any xνj such that (zN
)νj < 0
Step direction: (B −1 N )j = Kj
Step size: t = min
x∗βi
over all i = 1, . . . , m such that Kij > 0
Kij
Leaving variable: select any xβi such that t =
x∗βi
Kij
New basic vector: replace x∗B by x∗B − tKj , set (x∗B )i = t
Dual step direction: −(N > B −> )i = −(K > )i
Dual step size: s =
zν∗j
Kij
∗
∗
∗
New dual basic vector: replace zN
by zN
− s(K > )i , set (zN
)j = s
Index update: interchange βi in B and νj in N
Matrix update: interchange the ith column of B and jth column of N