Simplex convergence

Simplex method convergence
Convergence when the problem is non degenerate
• Non degeneracy assumption:
all the basic variables are stricly positive at each iteration
• Theorem: Consider a linear programming problem in standard form.
min z  c T x
Subject to Ax  b
x0
c, x  R n , b  R m
A m  n matrix
If the matrix A is of full rank, and if the non degeneracy assumption is
verified, then the simplex algorithm terminates in a finite number of
iterations.
• Proof:
Since the rank of matrix A is equal to m, then each basic feasible solution
includes m basic variables strictly positive (non degeneracy assumption).
But there is a finite number of ways to select m columns among the
n columns of A to specify an m  m sub matrix of A :
n!
n 
m 
  m ! (n  m)!
But the feasible basis of A are a subset of these. Then
n!
n 

m
  m ! (n  m)!
is an upper bound on the number of feasible basis of A.
• The influence of pivoting on the objective function during an iteration of
the simplex
r.h.s.
Deviding row r
basic var.
by ars
br
→
z
a rs
 cs
Substact from
br
 z   z   z  cs
 z
a rs
since c s  0, a rs  0, et br  0 under the non degeneracy ass.
br
 z   z   z  cs
 z
a rs
since c s  0, a rs  0, et br  0 under the non degeneracy ass.
Then z  z and the value of the objective function decreases stricly at
each iteration.
Consequently, the same basic feasible solution cannot repeat during the
completion of the simplex algorithm.
Since the number of basic feasible solution is bounded, it follows that the
simplex algorithm must be completed in a finite number of iterations.
An exemple of a problem
where
the simplex algorithm cycles
x5
x6
x7
z
x1
1
4
1
2
0
3

4
x1
x1
1
x6
0
x7
0
z
0
x2
x3
1
 60 
25
1
 90 
50
0
1
1
150 
50
x2
x4
x5
x6
x7
z
9
1
0
0
0
0
3
0
1
0
0
0
0
0
0
1
0
1
6
0
0
0
1
0
x5
x6
x7
4
0
0
0
0
2
1
0
0
0
0
0
1
0
1
3
0
0
1
0
x3
x4
4
 240 
36
25
3
30
 15
50
0
1
0
7
 30 
33
50
z
x1
x1
1
x6
0
x7
0
z
0
x2
x3
x4
4
 240 
36
25
3
30
 15
50
0
1
0
7
 30 
33
50
x1
x2
x1
1
0
x2
0
1
x7
0
0
z
0
0
z
x5
x6
x7
4
0
0
0
0
2
1
0
0
0
0
0
1
0
1
3
0
0
1
0
x3
x4
x5
8
 84  12
25
1
1
1


500
2
15
1
0
0
2

18
1
25
x6
x7
z
8
0
0
0
1
30
0
0
0
0
1
0
1
1
0
1
0
x1
x2
x1
1
0
x2
0
1
x7
0
0
z
0
0
x3
x2
x7
z
x1
25
8
1

160
25

8
1
4
x2
0
1
0
0
x3
x4
x5
8
 84  12
25
1
1
1


500
2
15
1
0
0
2

18
1
25
x6
x7
z
8
0
0
0
1
30
0
0
0
0
1
0
1
1
0
1
0
x3
x4
x5
x6
525
75
1 

25
2
2
1
1
1
0

40
120 60
525
75
0
 25
2
2
0
3
2
3
x7
z
0
0
0
0
0
0
1
0
1
0
1
0
x3
x2
x7
z
x3
x4
x7
z
x1
25
8
1

160
25

8
1
4
x2
0
1
0
0
x3
x4
x5
x6
525
75
1 

25
2
2
1
1
1
0

40
120 60
525
75
0
 25
2
2
0
x1
x2
x3
125

10500 1
2
1

40
0
4
125
 10500 0
2
1

120
0
2
3
2
z
x7
3
0
0
0
0
0
0
1
0
1
0
1
0
x7
z
x4
x5
x6
0
50
 150
0
0
0
1
1
3

2
3
0
0
0
0
 50
150
1
0
1
0
1
1
0
1
0
x3
x4
x7
z
x5
x4
x7
z
x1
x2
x3
125

10500 1
2
1

40
0
4
125
 10500 0
2
1

120
0
2
x1
5

4
1
6
0
7

4
x2
210
 30
0
330
x3
1
50
1

150
1
1
50
z
x4
x5
x6
x7
0
50
 150
0
0
0
1
1
3

2
3
0
0
0
0
 50
150
1
0
1
0
1
1
0
1
0
x4
x5
x6
x7
z
0
1
3
0
0
0
1
0
0
0
0
0
0
1
3
0
1
0
1
0
0
2
1
0
0
x5
x4
x7
z
x5
x6
x7
z
x1
5

4
1
6
0
7

4
x1
1
4
1
2
0
3

4
x2
210
 30
0
330
x2
x3
1
50
1

150
1
1
50
x3
1
 60 
25
1
 90 
50
0
1
1
150 
50
x4
x5
x6
x7
z
0
1
3
0
0
0
1
0
0
0
0
0
0
1
3
0
1
0
1
0
0
2
1
0
x4
x5
x6
x7
z
9
1
0
0
0
0
3
0
1
0
0
0
0
0
0
1
0
1
6
0
0
0
1
0
0
Graphic illustration of degeneracy
  x  y  2
 x 8

2
2 x xyy10
2 x  y  10
Min  3 x  2 y
s. t. à x  2y  26
Sujet
x y 3
x y  2
2 x  y  10
x, y  0
Min  3 x  2 y
s.
t. à
Sujet
x  2y  s1
x y
 s2
x y
 s3
2x  y
 s4
x, y, s1 , s 2 , s3 , s 4  0
 26
3
2
 10
 y6
Graphic illustration of degeneracy
  x  y  2
 x 8

2
2 x xyy10
2 x  y  10
Min  3 x  2 y
s. t. à x  2y  26
Sujet
x y 3
x y  2
2 x  y  10
x, y  0
 y6
s2
s3
s1
Min  3 x  2 y
s.
t. à
Sujet
x  2y  s1
x y
 s2
x y
 s3
2x  y
 s4
x, y, s1 , s 2 , s3 , s 4  0
 26
3
2
 10
s4
8 
6
 
8 
6 
6 
5 
0 
 0 
Min  3x  2 y
s. t. à x  2y  26
Sujet
x y 3
x y  2
2 x  y  10
6 x  5 y  18
x, y  0
Min  3x  2 y
Sujet
s. t. à x  2y  s1
x y
 s2
x y
 s3
2x  y
 s4
6x  5 y
 s5
x, y, s1 , s 2 , s3 , s 4 , s5  0
s2
 26
3
2
 10
 18
8 
 6 
s4
s5
s3
s1
Min  3x  2 y
s. t. à x  2y  26
Sujet
x y 3
x y  2
2 x  y  10
6 x  5 y  18
x, y  0
Min  3x  2 y
Sujet
s. t. à x  2y  s1
x y
 s2
x y
 s3
2x  y
 s4
6x  5 y
 s5
x, y, s1 , s 2 , s3 , s 4 , s5  0
s2
 26
3
2
 10
 18
8 
 6 
s4
s5
s3
s1
8 
6 
6 
5 
0 
0 
0 
 
Bland’s criteria to preserve convergence
even when
degenerary exists
Entering criterion: The entering variable xs is the non basic variable having
the smallest index among those with a negative relative cost ; i.e.,
s  Min j : c j  0 .
j 1, , n


Leaving criterion: The leaving variable x jr (x jr being the basic variable
in the r th row of the tableau) is the basic variable having the smallest index
among those candidate the leave; i.e.,


bl
 bi

jr  Min  jl : als  0,
 Min  : ais  0  .
l 1, , m
als i 1, , m  ais


Leaving criterion: The leaving variable x jr (x jr being the basic variable
in the r th row of the tableau) is the basic variable having the smallest index
among those candidate the leave; i.e.,


bl
 bi

jr  Min  jl : als  0,
 Min  : ais  0  .
l 1, , m
als i 1, , m  ais


Important remark:
When
 bi

bl
 Min  : ais  0 
als i 1, , m  ais

is reaches for several indices l , then the variable x jr selected according to
Bland's criterion becomes the leaving variable taking the value 0. But
the other variables x jl where the Min is reached remains basic
but there values becomes also equal to 0, inducing degeneracy.
x5
x6
x7
z
x1
1
4
1
2
0
3

4
x1
x1
1
x6
0
x7
0
z
0
x2
x3
1
 60 
25
1
 90 
50
0
1
1
150 
50
x2
x4
x5
x6
x7
z
9
1
0
0
0
0
3
0
1
0
0
0
0
0
0
1
0
1
6
0
0
0
1
0
x5
x6
x7
4
0
0
0
0
2
1
0
0
0
0
0
1
0
1
3
0
0
1
0
x3
x4
4
 240 
36
25
3
30
 15
50
0
1
0
7
 30 
33
50
z
x1
x1
1
x6
0
x7
0
z
0
x2
x3
x4
4
 240 
36
25
3
30
 15
50
0
1
0
7
 30 
33
50
x1
x2
x1
1
0
x2
0
1
x7
0
0
z
0
0
z
x5
x6
x7
4
0
0
0
0
2
1
0
0
0
0
0
1
0
1
3
0
0
1
0
x3
x4
x5
8
 84  12
25
1
1
1


500
2
15
1
0
0
2

18
1
25
x6
x7
z
8
0
0
0
1
30
0
0
0
0
1
0
1
1
0
1
0
x1
x2
x1
1
0
x2
0
1
x7
0
0
z
0
0
x3
x2
x7
z
x1
25
8
1

160
25

8
1
4
x3
x4
x5
8
 84  12
25
1
1
1


500
2
15
1
0
0
2

18
1
25
x2
0
1
0
0
x6
x7
z
8
0
0
0
1
30
0
0
0
0
1
0
1
1
0
1
0
x3
x4
x5
x6
525
75
1 

25
2
2
1
1
1
0

40
120 60
525
75
0
 25
2
2
0
3
2
3
x7
z
0
0
0
0
0
0
1
0
1
0
1
0
x3
x2
x7
z
x3
x4
x7
z
x1
25
8
1

160
25

8
1
4
x2
0
1
0
0
x3
x4
x5
x6
525
75
1 

25
2
2
1
1
1
0

40
120 60
525
75
0
 25
2
2
0
x1
x2
x3
125

10500 1
2
1

40
0
4
125
 10500 0
2
1

120
0
2
z
x7
0
0
0
0
0
0
1
0
1
3
0
1
0
x7
z
3
2
x4
x5
x6
0
50
 150
0
0
0
1
1
3

2
3
0
0
0
0
 50
150
1
0
1
0
1
1
0
1
0
x1
x2
125
x3 
10500
2
1
x4

40
4
125
x7
 10500
2
1
z

120
2
x3
x4
x5
x6
x7
z
1
0
50
 150
0
0
0
0
1
1
3
2
3
0
0
0
0
0  50
150
1
0
1
0
0
1
0
1
0
x3
x1
0
x2
0
x3
1
x4
0
2
0
x1
1
 168
0
z
0
36
0
x4
0
1
x5
0
2
1
15
100
0 
125
175
0 
125

x6
0
1

5
300
125
275
125
x7  z
1
0
1
0
250
2
0
125
1
1
125
1
1
250
1
125
1
125
x3
x1
0
x2
0
x3
1
x4
0
2
0
x1
1
 168
0
z
0
36
0
x3
x1
0
x2
0
x3
1
x5
0
 15
0
x1
1
 180
z
0
15
x4
0
x7  z
1
0
1
0
250
2
0
125
1
1
125
x5
0
2
1
15
100
0 
125
175
0 
125
x6
0
1

5
300
125
275
125
x4
0
15
2
x5
0
0
6
0
0
21
2
0
x6
x7  z
0
1
0
3
3

0
2 100
150
5
0
125 125
1
1
1
10
20
1
1
1
250
1
125
1
125
1
3
100
5
125
1
20
Bland’s proof of the simplex convergence
Théorème 4.2: En utilisant les critères d'entrée et de sortie de
Bland, l'algorithme du simplexe doit être complété en un
nombre fini d'itérations.
Preuve. (Preuve par contradiction) Supposons qu'au contraire
pour un certain problème, l'algorithme ne soit pas complété en
un nombre fini d'itérations. Or étant donné qu'il existe un nombre
fini de solutions de base réalisables, il s'ensuit que certaines
solutions de base réalisables sont répétées au cours de la
résolution avec l'algorithme du simplexe; i.e., l'algorithme cycle.
Preuve. (Preuve par contradiction) Supposons qu'au contraire
pour un certain problème, l'algorithme ne soit pas complété en
un nombre fini d'itérations. Or étant donné qu'il existe un nombre
fini de solutions de base réalisables, il s'ensuit que certaines
solutions de base réalisables sont répétées au cours de la
résolution avec l'algorithme du simplexe; i.e., l'algorithme cycle.
Considérons une solution de base d'une itération quelconque.
Alors ou bien cette solution réalisable est optimale, ou bien
nous décelons que le problème n'est pas borné inférieurement,
ou bien les critères d'entrée et de sortie de Bland déterminent
de façon unique l'élément du tableau sur lequel le pivot est
complété.
Considérons une solution de base d'une itération quelconque.
Alors ou bien cette solution réalisable est optimale, ou bien
nous décelons que le problème n'est pas borné inférieurement,
ou bien les critères d'entrée et de sortie de Bland déterminent
de façon unique l'élément du tableau sur lequel le pivot est
complété.
Par conséquent si l'algorithme cycle, alors le cycle des solutions
de base réalisables qui sont répétées est unique.
Dénotons par   1,
, n l'ensemble des indices des variables
d'entrée au cours des itérations du cycle. Donc si j  , alors x j
demeure une variable de base au cours de toutes les itérations du
cycle ou elle demeure un variable hors base au cours de toutes
les itérations du cycle. En somme son statut ne change pas au
cours des itérations du cycle.
Par conséquent si l'algorithme cycle, alors le cycle des solutions
de base réalisables qui sont répétées est unique.
Dénotons par   1, , n l'ensemble des indices des variables
d'entrée au cours des itérations du cycle. Donc si j  , alors x j
demeure une variable de base au cours de toutes les itérations
cycle ou elle demeure un variable hors base au cours de toutes
les itérations du cycle. En somme son statut ne change pas au
cours de itérations du cycle.
Dénotons également
g  Max  j ,
j
et utilisons l'indice supérieur  pour désigner les éléments du
tableau du simplexe à l'itération où xg devient variable d'entrée.
Dénotons également
g  Max  j ,
j
et utilisons l'indice supérieur  pour désigner les éléments du
tableau du simplexe à l'itération où xg devient variable d'entrée.
xg
xn  z
 a12

a11
a1g
a1n 0
b1
 a22

a21
a2 g
a2 n 0
b2
am 1 am 2

amg
 0
amn
bm
c1
cg
cn
 z
x1
x2
c2
1
Dénotons par hT  R n1 la dernière ligne du tableau:
hT =  c1
c2
cg
cn
1  .
xg
xn  z
 a12

a11
a1g
a1n 0
b1
 a22

a21
a2 g
a2 n 0
b2
am 1 am 2

amg
 0
amn
bm
c1
cg
cn
 z
x1
x2
c2
1
Dénotons par hT  R n1 la dernière ligne du tableau:
hT =  c1
c2
cg
cn
1  .
Puisque xg est la variable d'entrée, il découle du critère d'entrée
que toutes les variables ayant un indice plus petit que g ont un
coût relatif plus grand ou égal à 0. De plus puisque g  Max  j
j
alors
hg  cg  0
et
h j  cj  0 j  , j  g .
(2.1)
x1
x2
xg
xn  z


 a22

a21
a2 g a2 n 0 b2


A


 0 bm
am 1 am 2 amg
amn

c c
c1 c2
cg
cn 1  z 
 1 2 cg cn
Dénotons par hT  R n1 la dernière ligne du tableau:
 a12

a11
a1g
a1n 0
b1
0

0


0
1
hT =  c1 c2
cg
cn 1  .
Puisque le tableau précédent a été obtenu du tableau original
à l'aide d'une suite de pivots, il s'ensuit que le vecteur hT est
une combinaison linéaire des lignes de cette matrice et qu'il
appartient donc à l'espace engendré par les lignes de cette
dernière.
Puisque xg est variable d'entrée à une certaine itération du cycle,
elle doit être variable de sortie à une autre itération du cycle.
Utilisons l'indice supérieur  pour désigner le tableau du simplexe
associé à cette itération.
Dénotons par
x j1 ,
, x jr ,
x jm
où
x jr  xg
les variables de base à cette itération. Dénotons également par xs
la variable d'entrée identifiée avec le critère de Bland. Ainsi
 est l'élément de pivot.
ars
x1
x jr
xs
xj
x jm
xn  z
x j1

a11
0
a1s
1
0
a1n 0
b1
x jr
ar1
1

ars
0
0

arn
0
br
x jm
am 1
0

ams
0
1

amn
0
bm
z
c1
0
cs
0
0
cn
1  z 
1
Définissons un vecteur v  R n 1 à partir des éléments dans la
colonne de la variable d'entrée xs dans le tableau précédent:
v ji  ais
i  1, , m
Par rapport au tableau illustré plus
vs  1
haut le vecteur v prend la forme
vn 1  cs
vj  0
autres indices j
vT  0

ars
1
a1s

ams
0 cs 
x j1
x jr
x jm
xn  z
1
1 a1s
0
a1n 0
b1

ars
0

arn
0
br

amn
0
x1
x jr
xs

a11
0

ars
a1s
0
ar1
0
1

ars
x jm
am 1
z
c1 0
0 ars
0
xj
1
0

ams
1 a1s

ams

ams
1
0
cs
0
1 a1s
0 cs
0 cs
bm
0 cn
1  z 

ams
0 cs
Le produit scalaire du vecteur v avec chaque ligne du tableau
précédent est égal à 0. Ainsi v est perpendiculaire a chaque
vecteur ligne du tableau. Par rapport au tableau illustré plus
haut le vecteur v prend la forme
vT  0

ars
1
a1s

ams
0 cs 
x1
x jr
xs
xj
x jm
xn  z
x j1

a11
0
a1s
1
0
a1n 0
b1
x jr
ar1
1

ars
0
0

arn
0
br
x jm
am 1
0

ams
0
1

amn
0
bm
z
c1
0
cs
0
0
cn
1  z 
1




A


c c
 1 2 cg
0

0


0
cn 1
Puisque le tableau précédent a été obtenu du tableau original
à l'aide d'une suite de pivots, il s'ensuit que le vecteur v est
perpendiculaire aux lignes de cette matrice et qu'il est
donc orthogonal à l'espace engendré par les lignes de cette
dernière.
Donc il s'ensuit que
hT v  0.
hT =  c1
c2
cg
cn
1 
v ji  ais
Donc il s'ensuit que
,m
vs  1
n 1
vn 1  cs
l 1
vj  0
hT v   hl vl  0.
i  1,
autres indices j
Notons d'abord que
hn 1vn 1  1 cs  0.
Par conséquent, il doit exister au moins un indice j 1  j  n 
tel que
h j v j  0.
Or
si h j  0, alors x j est une variable hors base dans le tableau d'indice
supérieur 
si v j  0, alors x j est une variable de base dans le tableau d'indice
supérieur , ou j  s.
hT =  c1
c2
cg
1 
cn
Donc il s'ensuit que
v ji  ais
,m
vs  1
vn 1  cs
vj  0
hT v  0.
i  1,
autres indices j
Or
si h j  0, alors x j est une variable hors base dans le tableau d'indice
supérieur 
si v j  0, alors x j est une variable de base dans le tableau d'indice
supérieur , ou j  s.
Donc l'indice j doit appartenir à  et alors
Mais puisque
hg  cg  0
il s'ensuit que
j  g.
et
j  g.
vg  ars  0,
hT =  c1
c2
cg
1 
cn
v ji  ais
i  1,
,m
vs  1
vn 1  cs
Donc il s'ensuit que
vj  0
hT v  0.
autres indices j
Mais puisque
hg  cg  0
et
vg  ars  0,
j  g.
il s'ensuit que
Il découle donc de (2.1)
hg  cg  0 et h j  cj  0 j  , j  g.
que
hj  0
et ainsi
v j  0.
(2.1)
Donc x j est une variable de base dans le tableau d'indice supérieur .
hT =  c1
c2
cg
cn
Donc il s'ensuit que
hT v  0.
1 
v ji  ais
i  1,
,m
vs  1
vn 1  cs
vj  0
autres indices j
v j  0.
Donc x j est une variable de base dans le tableau d'indice supérieur .
Soit j  j p tel que aps  v j  0.
Donc x j est une variable de base dans le tableau d'indice supérieur .
Soit j  j p <g tel que aps  v j  0.
x1
x jr
xs
xj
x jm
xn  z
x j1

a11
0
a1s
1
0
a1n 0
b1
x jr
ar1
1
ars
0
0

arn
br
x j p ap1
1
aps
0
0
apn
x jm
am 1
0

ams
0
1
z
c1
0
cs
0
0
1
0
0
bp

amn
0
bm
cn
1  z 
Au cours des itérations du cycle, chaque variable conserve la
même valeur.
En effet, si à une itération du cycle une variable d'entrée
augmentait d'une valeur positive, alors la valeur de la fonction
économique diminuerait strictement et alors l'algorithme ne
pourrait cycler.
En particulier,
xj  0
j  
au cours de toutes les itérations du cycle.
Par conséquent
x j p  bp =0.
En somme, nous venons d'établir les deux faits suivants:
Donc x j est une variable de base dans le tableau d'indice supérieur .
Soit j  j p <g tel que aps  v j  0.
x j p  bp  0.
et que
x j1
x1
x jr
xs
xj
x jm
xn  z

a11
0
a1s
1
0
a1n 0
x jr
ar1
1
b1
Ainsi cette variable x j p
br
aurait dû être variable
de sortie à l'itération 
1
ars
x jp
ap1
1
aps
0
x jm
am 1
0

ams
0
1

amn
0
z
c1
0
cs
0
0
cn
1  z 
0
0

arn
0
apn
0
0
b0p
bm
selon le critère de
sortie de Bland.
En somme, nous venons d'établir les deux faits suivants:
Donc x j est une variable de base dans le tableau d'indice supérieur .
Soit j  j p <g tel que aps  v j  0.
et que
x j p  bp  0.
Ainsi cette variable x j p aurait dû être variable de sortie à
l'itération  selon le critère de sortie de Bland.
Ceci est une contradiction au fait que nous ayons retenu
plutôt xg comme variable de sortie.
Donc en utilisant les critères d'entrée et de sortie de Bland,
l'algorithme du simplexe ne peut cycler. La décroissance stricte
de la valeur de la fonction économique au cours des itérations
où il n'y a pas dégénérescence nous assure que l'algorithme
du simplexe doit être complété en un nombre fini d'itérations.