Algorithme du Simplexe : Validité et Complexité
Algorithme du Simplexe : Validité et Complexité
[Link]@[Link]
4 octobre 2020
1/47
Questions
L’algorithme du simplexe Phase II présenté précédemment consiste à passer de base
en base jusqu’à trouver une base correspondant à une solution optimale.
2/47
Visualisation graphique
Visualisation graphique
Complexité
Dégénérescence et cyclage
3/47
Visualisation graphique
x1 − x2 ≤ 2 (3)
D B
x1 ≥ 0 (5)
E G x1
x2 ≥ 0 (4) O A
F
(1)
Sa forme standard est :
max z = 6x1 + 5x2
x1 + x2 +e1 = 8 (1)
−2x1 + 3x2 +e2 = 6 (2)
x1 − x2 +e3 = 2 (3)
x1 ≥ 0 (5)
x2 ≥ 0 (4)
ei ≥ 0 i ∈ {1, 2, 3}
Etre à l’intersection de 2 droites parmi (1),...,(5) revient à annuler 2 variables parmis
x1 , x2 , x3 , e1 , e2 , e3 : c’est-à-dire à choisir une base ! 4/47
Visualisation graphique
e1 = + 8 - 1 x1 - 1 x2 I
e2 = + 6 + 2 x1 - 3 x2
C
e3 = + 2 - 1 x1 + 1 x2
z = + 0 + 6 x1 + 5 x2 D B
E G x1
O A
F
(1)
(3)
Dans le dessin, augmenter x1 en maintenant x2
x2 = 0 : c’est se déplacer sur l’axe des abscisses (2)
à partir du point O(0,0). H
I
En faisant cela :
- on reste du “bon côté” de la droite (2), c’est-
C
à-dire que e2 va rester positif (non contraint).
- on se rapproche de (1) et (3) :
cela fait diminuer e1 et e3 . D B
- la première droite rencontrée est (3) : E G x1
e3 s’annule avant e1 . O A
F
(1) 6/47
Visualisation graphique
e1 = + 6 - 2 x2 + 1 e3
e2 = + 10 - 1 x2 - 2 e3
x1 = + 2 + 1 x2 - 1 e3
z = + 12 + 11 x2 - 6 e3
7/47
Visualisation graphique
En faisant cela :
- on reste du “bon côté” de la droite (4), c’est- C
à-dire que x1 va rester positif (non contraint).
- on se rapproche de (1) et (2) : D B
cela fait diminuer e1 et e2 . E G
- la première droite rencontrée est (1) : x1
O A
e1 s’annule avant e2 . F
(1)
On atteint le point B(5,3).
8/47
Visualisation graphique
x2 = + 3 - 1/ 2 e1 + 1/ 2 e3
e2 = + 7 + 1/ 2 e1 - 5/ 2 e3
x1 = + 5 - 1/ 2 e1 - 1/ 2 e3
z = + 45 - 11/ 2 e1 - 1/ 2 e3
9/47
Complexité
Visualisation graphique
Complexité
Dégénérescence et cyclage
10/47
Complexité
Complexité
Plaçons-nous sous les 3 hypothèse suivantes :
- l’algorithme est valide
- l’algorihme se termine (pas de cyclage)
- on connaît une base initiale pour démarrer la phase II
quelle est la complexité de la phase II ?
La vision géométrique précédente témoigne du fait qu’une base est associée à un point
extrême du polyèdre de définitions.
L’algorithme du simplexe consiste en fait à passer de base en base réalisable,
c’est-à-à-dire d’un point extrême à un autre.
11/47
Complexité
Pire-cas
Klee et Minty ont proposé le PL suivant :
Pn
Max 10n−j xj
j=1
Pi−1
2 j=1 xj + xi ≤ 100i−1 ∀i ∈ {1, . . . , n}
xj ≥ 0 ∀j ∈ {1, . . . , n}
12/47
Complexité
Cette question de la présence faible de pire-cas laisse penser qu’il y existe une
structure combinatoire particulière dans ces PL “utilisé en pratique”.
C’est une question de recherche importante qui passionne à la fois les
algorithméticiens, les combinatoriciens et les géométriciens !
Avec une meilleure connaissance de cette structure polyédrale, on en saurait
davantage sur la fameuse question “P est il-différent de NP ?” (P? = NP).
13/47
Complexité
En 1984, Narendra Karmarkar propose la méthode des points intérieurs qui est
polynomiale et efficace !
14/47
Complexité
Résolution et solveurs
Un programme linéaire peut être résolu efficacement :
- par la méthode des points intérieurs (qui est polynomial)
- par l’algorithme du simplexe (qui est pourtant exponentiel).
Depuis 1947, de nombreux travaux ont permis des implémentations efficaces de ces 2
méthodes : chacune progressant peu à peu.
Les meilleurs d’entre eux peuvent résoudre des PL jusqu’à 200 000 variables et
200 000 contraintes en quelques minutes.
Remarque : En revanche, lorsque les variables doivent prendre des valeurs discrètes
(par exemple binaires), la Programmation Linéaire en Nombres Entiers (PLNE) est un
problème NP-difficile que les solveurs ont du mal à résoudre en général : la plupart des
PLNE contenant à peine un millier de lignes et colonnes ne peuvent pas être résolus
après plusieurs semaines de calculs.
15/47
Complexité
Hypothèses
En effet, cet algorithme est à la base de nombreuses méthodes pour des problèmes
célèbres (flots, affectations...).
16/47
Notations matricielles et écriture en base
Visualisation graphique
Complexité
Dégénérescence et cyclage
17/47
Notations matricielles et écriture en base
Notations matricielles
On présente ici l’algorithme du simplexe sous forme matriciel dans l’objectif de prouver
la validité de l’algorithme.
Notations matricielles
Ecrivons la forme standard
n
X
max cj xj
Max z = cT x
j=1
n
s.c.
↔
X
s.c. aij xj +xn+i =bi ∀i ∈ {1, . . . , m} [A I ]x ≤b
j=1
x ≥0
xj ≥0 ∀j ∈ {1, . . . , n}
xn+i ≥ 0 ∀i ∈ {1, . . . , m}
où
• x ∈ IR n+m
• c ∈ IR n+m avec m nouvelles composantes nulles
• b ∈ IR m
• [ A I ] désigne une matrice obtenue en ajoutant à A les n colonnes de la
matrice identité I
19/47
Notations matricielles et écriture en base
Base candidate
On dit que les colonnes AB(1) , AB(2) . . . AB(m) sont les colonnes de base et les autres
colonnes les colonnes hors-bases.
Cela correspond exactement aux variables de base et hors-base de la version algébrique.
20/47
Notations matricielles et écriture en base
Base
Ecrivons le PL suivant sous forme standard matricielle.
3 et m = 4
n=
5 x1
5 x2
1 3 1 1 0 0 0 3
3 x3
−1 0 3 0 1 0 0
2
c= 0 x = x4 [A I ]= b=
2 −1 2 0 0 1 0 4
0 x5
2 3 −1 0 0 0 1 2
0 x6
0 x7
21/47
Notations matricielles et écriture en base
Base primale
Posons
I E j = B −1 Aj pour tout j ∈ {1, . . . , n + m}
le vecteur des coordonnées de la colonne Aj selon la base primale B
I E 0 = B −1 b
le vecteur des coordonnées de b sur B.
22/47
Notations matricielles et écriture en base
Ecriture en base
Aj = BE j
ou encore
m
Elj AB(l)
X
Aj =
l=1
23/47
Notations matricielles et écriture en base
Ecriture en base
1 3 1 1 0 0 0
−1 0 3 0 1 0 0
Sur l’exemple où [ A I ] =
2 −1 2 0 0 1 0
2 3 −1 0 0 0 1
la base B = (A7 , A3 , A5 , A6 ) (en respectant cet ordre)
0 1 0 0
0 3 1 0
correspond à la matrice B = 0
2 0 1
1 −1 0 0
C’est une base primale car sa matrice est inversible (q diagonale de produit des termes
diagonaux non nuls).
3
1
On a donc E 1 = −4 .
0
24/47
Notations matricielles et écriture en base
Ecriture en base
1 i m
Rappel : vecteur canonique εT
i = 0 ... 0 1 0 ... 0
Exemple : Dans l’exemple précédent, on peut faire le même calcul que dans l’exemple
de E 1 pour obtenir E 5 mais on obtiendra
0
0
E5 = 5 7 3 5 6 5
1 car A est la 3ème colonne de B = (A , A , A , A ) donc E = ε3 .
25/47
Notations matricielles et écriture en base
Base et Hors-Base
Pour une base primale B, on considère également les colonnes hors-bases numérotées
N(1), N(2), . . . , N(n).
On a alors les matrices
On note
xB = (xB(1) , xB(2) , . . . , xB(m) ) le vecteur des variables de base.
cB = (cB(1) , cB(2) , . . . , cB(m) ) le vecteur des coûts des variables de base.
xN = (xN(1) , xN(2) , . . . , xN(m) ) le vecteur des variables hors-base.
cN = (cN(1) , cN(2) , . . . , cN(m) ) le vecteur des coûts des variables hors-base.
Max cB xB + cN xN
BxB + NxN = b
xB ≥ 0
xN ≥ 0
26/47
Notations matricielles et écriture en base
Ecriture dictionnaire
xB + B −1 NxN = B −1 b
et
xB = B −1 b − B −1 NxN .
En utilisant cela dans le PL, on obtient l’écriture dictionnaire vue dans la section
“algébrique” :
xB = B −1 b − B −1 NxN
avec l’écriture de z selon les variables hors-base
z = cB B −1 b + (cN − cB B −1 N)xN
27/47
Notations matricielles et écriture en base
Un des résultats de cette écriture est la définition très importante en économie des
coûts marginaux.
Les coefficients des variables hors-bases dans cette écritures sont appellées coûts
réduits.
c̄N = cN − cB B −1 N
28/47
Théorèmes d’optimalité et validé du pivot
Visualisation graphique
Complexité
Dégénérescence et cyclage
29/47
Théorèmes d’optimalité et validé du pivot
En effet, si B est une base primale réalisable, alors la solution définie par
xB = E 0 et xN = 0
Lemme
Pour une base B donnée, s’il existe une colonne hors-base j de coût réduit srictement
positif et tel que E j = B −1 Aj ≤ 0, alors le PL est non-borné dans la direction
d’optimisation.
Preuve : Pour une telle base B et une telle colonne j, remarquons que la fonction
objectif s’écrit z = cB B −1 b + (cN − cB B −1 N)xN . Soit un réel M > 0, et considérons
la solution x̃ telle que x̃e = M, x̃k = 0 pour tout autre variable hors base k et les
valeurs x̃l des variables de base calculées par l’écriture dictionnaire. Alors on peut
remarquer que x̃ est solution du PL. Ainsi pour tout M > 0, il existe une solution
z > M, ce qui signifie que le PL est non-borné dans la direction d’optimisation.
31/47
Théorèmes d’optimalité et validé du pivot
Critère d’optimalité
Théorème
Pour une base primale réalisable B et variables hors-base N,
si c̄N ≤ 0, i.e. si tous les coûts réduits sont négatifs ou nuls,
alors la solution de base associée à B est optimale.
z = cB B ∗−1 b + c̄N xN .
z ≤ cB B ∗−1 b
32/47
Théorèmes d’optimalité et validé du pivot
Pivot
Deux bases B et B 0 sont dites voisines si B 0 est obtenue à partir de B en remplaçant
une colonne B s par une colonne Ae de A,
e si k = e
c’est-à-dire ∀k = 1, . . . , m B 0 (k) =
B(k) sinon
1 1 X Esj
xe = (B −1 b)s − e xB(s) − xj
Ese Es Ese
j∈N\{s}
E e Esj
!
Ee Ee
Ekj − k e
X
xB(k) = (B −1 b)k − ke (B −1 b)s − ke xB(s) − xj
Es Es Es
j∈N\{s}
33/47
Théorèmes d’optimalité et validé du pivot
Pivot
34/47
Théorèmes d’optimalité et validé du pivot
Pivot
Lemme
Si les deux conditions suivantes sont vérifiées :
i) Esj > 0
Eke
ii) (B −1 b)k − Ese
(B −1 b)s ≥ 0, pour tout k 6= s
Alors la base 0
B obtenu par pivot est primale réalisable.
Preuve : Remarquons que, par les hypothèses i) et ii), la solution x 0 associée à la base
B est bien positive ou nulle. Donc x 0 limitée aux variables initiales vérifient bien le PL.
Donc si B 0 est primale, B 0 est réalisable.
Pour prouver que B 0 est primale, c’est-à-dire que B 0 est inversible, nous allons prouver
que B 0 x = b admet une unique solution. On peut déjà remarquer que la restriction xB0
de x 0 à B est solution de B 0 x = b, donc ce système admet bien une solution. Soit x̃B
une solution de B 0 x = b. Posons alors x̃N = 0. Considérons alors le système
BxB + NxN = b et xN = 0.
Par l’écriture dictionnaire vue plus haut, on peut constater que ce système mène à une
unique solution, qui est précisemment xB0 . Donc ce système et par conséquent B 0 x = b
ont une unique solution.
35/47
Théorèmes d’optimalité et validé du pivot
Validité du pivot
Théorème
Si on peut choisir :
- une colonne entrante e de coût réduit c̄e > 0
- une colonne sortante s telle que
Eke −1
1 −1 −1
(B b)s = min (B b)k − (B b)s
Ese Ese
36/47
Théorèmes d’optimalité et validé du pivot
Validité du pivot
1
Donc zB 0 = zB + (B −1 b)s (ce − cB B ∗−1 Ae ).
Ese
1
Or par hypothèse, Ese
(B −1 b)s ≥ 0 et (ce − cB B ∗−1 Ae ) > 0. Donc zB 0 ≥ zB .
1 −1
Si de plus Ese
(B b)s 0, on a zB 0 > zB .
37/47
Théorèmes d’optimalité et validé du pivot
Schéma de l’algorithme
On obtient alors l’algorithme :
Eke −1
1 −1 −1
(B b)s = min (B b)k − (B b)s
Ese Ese
B(s) ← e
Fin Répéter
38/47
Dégénérescence et cyclage
Visualisation graphique
Complexité
Dégénérescence et cyclage
39/47
Dégénérescence et cyclage
40/47
Dégénérescence et cyclage
Pivot dégénéré
Ajoutons une inégalité au PL de l’exemple (3)
x2
(2)
Pivot dégénéré
Une itération du simplexe sur une des trois bases peut mener à passer sur une autre de
ces bases : l’itération sera dite dégénérée et le coût de z n’augmentera pas : on parle
d’itération “à vide”.
Souvent, après avoir explorer un lot de bases dégénérées correspondant à une même
solution, l’algorithme se poursuit avec une solution différente sur un nouveau point.
Heureusement, plusieurs améliorations ont été mises au point pour éviter ce problème
du cyclage (voir chapitre suivant).
42/47
Terminaison et validité de l’algorithme du simplexe
Visualisation graphique
Complexité
Dégénérescence et cyclage
43/47
Terminaison et validité de l’algorithme du simplexe
Terminaison
Les deux hypothèses faites au-début de cette preuve peuvent alors se réécrire :
- hypothèse d’initialisation : b ≥ 0
- non-dégénérescence : chaque base B rencontré possède au moins une
composante de B −1 b non nulle
Remarque essentielle : Le nombre de bases primales réalisables est fini (car majoré
par le nombre de combinaisons de m colonnes parmi n + m colonnes).
44/47
Terminaison et validité de l’algorithme du simplexe
Terminaison
Théorème
Sous les hypothèse précédentes, l’algorithme Phase II se termine.
45/47
Terminaison et validité de l’algorithme du simplexe
Validité
Théorème
Sous les hypothèse précédentes, l’algorithme Phase II est valide.
Preuve : Notons B ∗ la dernière base de la boule Répéter (il en existe une car
l’algorithme se termine).
Trois cas sont possibles :
- soit pour B ∗ , le coût réduit est négatif ou nul pour chaque colonne et la base
rencontrée est donc optimale par le théorème du critère d’optimalité.
- soit pour B ∗ le coût réduit c̄e d’une des colonnes est positif avec une colonne
E e = B −1 Ae ≤ 0, dans ce cas, on prouve que le PL est non-borné par le
théorème correspondant.
- soit pour B ∗ le coût réduit c̄e d’une des colonnes est positif avec une colonne
E e = B −1 Ae possédant un coefficient strictement positif. Dans c cas, par le
théorème de validité du pivot et sous l’hypothèse qu’aucune des bases n’est
dégénérée : on peut réaliser une opération de pivot qui produit une base de
solution associée strictement supérieure à z ∗ . Ce qui contredit l’existence de ce
cas.
Ainsi, l’algorithme se termine soit en prouvant que le PL est non-borné, soit en
fournissant une base optimale.
46/47
Terminaison et validité de l’algorithme du simplexe
Prochain cours
47/47